23 Şubat 2023 Perşembe

FreeBSD powerd_enable konusu

  Modern Intel CPU'lar, termal ve güç sınırları izin verdiğinde belirli çekirdekleri (bazen reklamı yapılan hızın 2 katından fazla) geçici olarak overclock etmek için Intel'in SpeedStep teknolojisiyle birlikte çalışan TurboBoost adlı bir teknoloji kullanır.



SpeedStep, çok fazla kullanılmayan veya kullanılmayan çekirdeklerin seçici ve hızlı yavaşlaması, rölantide kalması ve hatta muhtemelen uyumasıdır. Bu, TurboBoost'un etkili bir şekilde çalışması için güç ve termal pencereleri artırır, çünkü az kullanılan çekirdekleri yavaşlatmak/rölantide tutmak, meşgul çekirdekleri artırmak için daha fazla termal dağılım ve güç anlamına gelir. HyperThreading'e çok benzer şekilde, fırsat pencereleri hızla kapanır ve açılır ve CPU ve işletim sistemi bunları hesaplamak ve bunlardan yararlanmak için hızlı bir şekilde birlikte çalışır.


İşletim sisteminden SpeedStep bilgileri alınmıyorsa TurboBoost devreye girmez, bu nedenle powerd(8) servisini etkinleştirmek ve SpeedStep'in düzgün çalıştığından emin olmak çok önemlidir. En yeni Xeon işlemciler (örneğin E5-2620'ler) için bu% 12'lik bir performans kazancının üzerinde bir ağdır, çünkü bu yeni CPU'lar TurboBoost için yoğun bir şekilde optimize edilmiştir, ancak SpeedStep olmadan etkileşime giremez.


İş yükünüz doğası gereği patlamalıysa veya yalnızca birkaç çekirdek kullanma eğiliminde olan birkaç uygulamanız veya hizmetiniz varsa, pratik performans artışı bundan çok daha yüksek olabilir. %12'lik artış rakamı UNIX Bench üzerinden alındı ve test sırasında tüm çekirdekler tamamen yüklendi. Birçok barındırma sağlayıcısı, BIOS'taki güç yönetimini kapatır ve bu da Powerd etkin olsa bile SpeedStep'in FreeBSD tarafından düzgün bir şekilde tanınmamasına neden olabilir. Dmesg boot'ta şuna benzer satırlar görürseniz:


est: CPU supports Enhanced Speedstep, but is not recognized.


Güç yönetimi BIOS'ta etkinleştirilmelidir. Örnek olarak'nin sunucu BIOS'unu kullanarak, seçenek Gelişmiş sekmesinin altında bulunur, ardından CPU Yapılandırması'na ve ardından CPU Güç Yönetimi Yapılandırması'na gidin ve Güç Teknolojisi'ni "Enerji Verimli" ve ardından Enerji / Performans Önyargısı'nı "Performans" olarak ayarlayın. Her BIOS açıkça farklıdır, bu nedenle sunucularınız için biraz dürtme gerekebilir. Çekirdeğin SpeedStep'i tanıyıp tanımadığını kontrol ederek bu değişikliğin işe yaradığını doğrulayabilirsiniz:


# grep -i speedstep /var/run/dmesg.boot

est0: <Enhanced SpeedStep Frequency Control> on cpu0

est1: <Enhanced SpeedStep Frequency Control> on cpu1

est2: <Enhanced SpeedStep Frequency Control> on cpu2

est3: <Enhanced SpeedStep Frequency Control> on cpu3

est4: <Enhanced SpeedStep Frequency Control> on cpu4

est5: <Enhanced SpeedStep Frequency Control> on cpu5

est6: <Enhanced SpeedStep Frequency Control> on cpu6

est7: <Enhanced SpeedStep Frequency Control> on cpu7


Ve elbette bu satırları /etc/rc.conf dosyasına ekleyerek powerd'ı etkinleştirin:


powerd_enable="YES"

powerd_flags="-a hiadaptive"


Bu, güçlendirilmiş olarak açılır ve yüksek performans olma önyargısını ayarlar, ancak aldatıcı olan "maksimum performans" değildir. Maksimum performans, tüm çekirdekleri, çekirdeklerin gerektiğinde yavaşlayabilmesini istediğimiz için kaçınmak istediğimiz maksimum frekansa kilitler. Önemli olan, hem bu BIOS değişikliklerinin yapılması hem de güçlü bir şekilde etkinleştirilmesi gerektiğidir, aksi takdirde kazanç yoktur (test ettik ... çok).


Kapsamlı testlerimiz, yeni Xeon CPU'lar için bunun UNIX Bench aracılığıyla her zaman önemli bir (%12 veya daha fazla) kazanç sağladığını göstermiştir. Eski CPU'lar için en kötü ihtimalle sonuçlar aynıdır, bu nedenle bunu yapmanın olumsuz bir tarafı yoktur.


Ücretsiz ve kolay performans artışının tadını çıkarın!


FreeBSD'yi Gerçekten Anlayan Profesyonellerle Çalışmak için 1-877-883-1394 numaralı telefonu arayın

A-Team Systems, FreeBSD Vakfı'nın gururlu bir destekçisidir ve yöneticilerimizin çoğu projeye doğrudan katkıda bulunmaktadır.

ALINTI

HIZLI DÜZENLE

FAZLASI...


Administrator

Administrator


*****

Newbie

İletiler: 23

pvp4server

freekays

IP adresini göster (?)

#1


Bugün, 04:15 ÖÖ

FreeBSD Güç Yönetimi�

30 Yanıtlar

Bu, FreeBSD işletim sisteminin sloganıdır - Hizmet Etme Gücü - bu makalenin konusuna da büyük ölçüde uyuyor. On yıl önce (evet zaman uçuyor) Bu sloganla bir duvar kağıdı bile yaptım - hala DeviatArt sayfasında mevcut.

freebsd_the_power_to_serve_small.jpg

Güç yönetimi özelliklerini kapsayan FreeBSD makalesi zamanı. Aynı zamanda FreeBSD Masaüstü serisi için de geçerlidir, ancak bununla sınırlı değildir. Popüler görüş, FreeBSD'nin herhangi bir güç yönetimi mekanizmasından yoksun olacak kadar sunucu odaklı olduğu yönündedir. Gerçeklerden daha uzak bir şey yok. Masaüstünde daha az önemli olsa da (ancak yine de elektrik faturanızı düşürecektir) veya sunucularda, dizüstü bilgisayarlarda güç yönetimini, daha uzun pil ömrüne sahip olacak ve daha sessiz çalışacak şekilde düzgün bir şekilde yapılandırmak istenir.

FreeBSD El Kitabı 11.13'teki tüm bu bilgileri kapsamadığı için bunu yazıyorum. Güç ve Kaynak Yönetimi bölümü. Dizüstü Bilgisayarlarda FreeBSD makalesi bölüm 4. Güç Yönetimi, FreeBSD 10.1-RELEASE'in eski zamanlarından kalmadır. FreeBSD Wiki sayfasında bazı bilgiler var, ancak bazı kısımları modası geçmiş.

FreeBSD, güç yönetimi departmanında birçok mekanizma sunar:

sürücü takılı olmadan aygıtları kapatın

CPU frekansını ve gücünü ölçeklendirin

CPU uyku durumlarını destekler (C1/C1E/C2/C3/...)

Turbo Modu'nu etkinleştirme/devre dışı bırakma çoğu CPU'da bulunur

USB aygıtı başına güç yönetimi seçenekleri

SATA/AHCI kanalları/denetleyicileri güç yönetimi

Desteği askıya alma/sürdürme (bunun için dizüstü bilgisayar kapağını kullanmanın yanı sıra)

güç yönetimini ölçmeye yardımcı olan satıcıya özel araçlar için destek

fan hızı kontrolü için araçlar ve ACPI desteği

ekran parlaklığını ayarlamak için araçlar ve ACPI desteği

pil kapasitesi durumu ve çalışma süresi tahmini

ağ arayüzleri güç tasarrufu seçenekleri

AMD PowerNow desteği!

Intel (Geliştirilmiş) SpeedStep desteği

Intel Speed Shift desteği

AMD Turbo Core desteği

Intel Turbo Boost desteği


Reklam


BU REKLAMI BILDIR


FreeBSD sistemindeki ayarlar için farklı dosyalar hakkında tek kelime:

/etc/rc.conf – yeniden başlatma gerektirmez sadece daemon'ların yeniden yüklenmesi

/etc/sysctl.conf – yeniden başlatma gerektirmez – bunları çalışma zamanında ayarlayabilirsiniz

/boot/loader.conf – bu ayarlar yeniden başlatma GEREKTİRİR

İşte makale için İçindekiler Tablosu (tıklanamaz).

Bilgi

Pil

Pil Aşınması

CPU

lscpu(1)

dmesg(8)

CPU Frekans Ölçeklendirme

güçlendirilmiş(8)

powerdxx(8)

C-Devletleri

CPU Turbo Modu

USB Aygıtları

SATA/AHCI Güç Yönetimi

Sürücüsü Olmayan Cihazlar

Nvidia Optimus

Askıya Alma ve Devam Ettirme

Ağ Arabirimleri

Satıcı Araçları

DTrace

Başka

cesaret

Uygulama

Donanım

GÜNCELLEME 1 – Grafik Kartı Güç Tasarrufu

GÜNCELLEME 2 – AMD CPU Sıcaklıkları

GÜNCELLEME 3 - Askıya Alma / Devam Ettirme İpuçları

GÜNCELLEME 4 – Intel Speed Shift

Bilgi�

Mevcut CPU hızı, kullanılan C durumları, USB cihazları için geçerli güç yönetimi modları, pil kapasitesi ve kalan süre vb. hakkında gerekli bilgilerin nereden alınacağını açıklayarak başlayalım.

Pil�

Pil bilgilerini almak için acpiconf(8) aracını kullanabilirsiniz. Bu, AC gücü takılı ana pilim (ThinkPad T8s dizüstü bilgisayarda) için acpiconf (420) çıkışıdır.

% acpiconf -i 0

Design capacity: 44000 mWh

Last full capacity: 37930 mWh

Technology: secondary (rechargeable)

Design voltage: 11100 mV

Capacity (warn): 1896 mWh

Capacity (low): 200 mWh

Low/warn granularity: 1 mWh

Warn/full granularity: 1 mWh

Model number: 45N1037

Serial number: 28608

Type: LION

OEM info: SANYO

State: high

Remaining capacity: 100%

Remaining time: unknown

Present rate: 0 mW

Present voltage: 12495 mV


... ve AC gücü çıkarılmış olarak.

% acpiconf -i 0

Design capacity: 44000 mWh

Last full capacity: 37930 mWh

Technology: secondary (rechargeable)

Design voltage: 11100 mV

Capacity (warn): 1896 mWh

Capacity (low): 200 mWh

Low/warn granularity: 1 mWh

Warn/full granularity: 1 mWh

Model number: 45N1037

Serial number: 28608

Type: LION

OEM info: SANYO

State: high

Remaining capacity: 100%

Remaining time: 2:31

Present rate: 0 mW

Present voltage: 12492 mV


Şimdi AC gücü dizüstü bilgisayardan ayrıldığında, Kalan süre: alanı, bu tek pil için kalan süre tahminini burada 2: 31 olarak gösterir (iki saat otuz bir dakika).

Aşağıda ikincil pilim için acpiconf(8) çıkışı var (DVD sürücüsü yerine ThinkPad T420s ultrabay'de).

% acpiconf -i 1

Design capacity: 31320 mWh

Last full capacity: 24510 mWh

Technology: secondary (rechargeable)

Design voltage: 10800 mV

Capacity (warn): 1225 mWh

Capacity (low): 200 mWh

Low/warn granularity: 1 mWh

Warn/full granularity: 1 mWh

Model number: 45N1041

Serial number: 260

Type: LiP

OEM info: SONY

State: high

Remaining capacity: 100%

Remaining time: unknown

Present rate: 0 mW

Present voltage: 12082 mV


... ve AC gücü çıkarılmış olarak.

% acpiconf -i 1

Design capacity: 31320 mWh

Last full capacity: 24510 mWh

Technology: secondary (rechargeable)

Design voltage: 10800 mV

Capacity (warn): 1225 mWh

Capacity (low): 200 mWh

Low/warn granularity: 1 mWh

Warn/full granularity: 1 mWh

Model number: 45N1041

Serial number: 260

Type: LiP

OEM info: SONY

State: discharging

Remaining capacity: 98%

Remaining time: 1:36

Present rate: 14986 mW

Present voltage: 11810 mV


AC gücü kapalıyken Kalan süre: ikincil pil için 1:36 olarak gösterilir.

Yani bataryada toplam 4:07 zamanı tahmin ediliyor. Dakika cinsinden aynı süre (247), aşağıda gösterildiği gibi hw.acpi.battery.time adlı sysctl(8) değerinde gösterilecektir.

% sysctl hw.acpi.battery.time

hw.acpi.battery.time: 247


Ayrıca, hw.acpi.battery MIB altındaki aşağıdaki sysctl(8) değerleriyle daha 'eksiksiz' pil bilgileri alabilirsiniz.

% sysctl hw.acpi.battery

hw.acpi.battery.info_expire: 5

hw.acpi.battery.units: 2

hw.acpi.battery.state: 1

hw.acpi.battery.time: 247

hw.acpi.battery.life: 99


AC gücünüz bağlıysa hw.acpi.battery.time size '-1' değerini gösterecektir.

% sysctl hw.acpi.battery

hw.acpi.battery.info_expire: 5

hw.acpi.battery.units: 2

hw.acpi.battery.state: 0

hw.acpi.battery.time: -1

hw.acpi.battery.life: 100


Pil Aşınması�

Zaman geçtikçe piller 'tasarım' kapasitelerini kaybederler. 1-2 yıl sonra bu tür bir pil, orijinal verimliliğinin sadece% 70'ine veya daha azına sahip olabilir.

Bunu kontrol etmek için gereken tüm bilgiler, acpiconf(8) komutu tarafından Design capacity: ve Last full capacity: değerleri ile sağlanır. Mevcut pil verimliliğinin ne olduğunu size söyleyecek bir battery-capacity.sh senaryosu hazırladım. İşte eylemde nasıl göründüğü.

% battery-capacity.sh 0

Battery '0' model '45N1037' has efficiency: 86%


% battery-capacity.sh 1

Battery '1' model '45N1041' has efficiency: 78%



İşte battery-capacity.sh senaryosunun kendisi.

#! /bin/sh


if [ ${#} -ne 1 ]

then

echo "usage: ${0##*/} BATTERY"

exit

fi


if acpiconf -i ${1} 1> /dev/null 2> /dev/null

then

DATA=$( acpiconf -i ${1} )

MAX=$( echo "${DATA}" | grep '^Design\ capacity:' | awk -F ':' '{print $2}' | tr -c -d '0-9' )

NOW=$( echo "${DATA}" | grep '^Last\ full\ capacity:' | awk -F ':' '{print $2}' | tr -c -d '0-9' )

MOD=$( echo "${DATA}" | grep '^Model\ number:' | awk -F ':' '{print $2}' | awk '{print $1}' )

echo -n "Battery '${1}' model '${MOD}' has efficiency: "

printf '%1.0f%%\n' $( bc -l -e "scale = 2; ${NOW} / ${MAX} * 100" -e quit )

else

echo "NOPE: Battery '${1}' does not exists on this system."

echo "INFO: Most systems has only '0' or '1' batteries."

exit 1

fi


CPU�

Mevcut CPU'lar hakkında bilgi almak için ilk fiziksel CPU çekirdeği için dev.cpu MIB veya dev.cpu.0 kullanmanız gerekir.

% sysctl dev.cpu.0

dev.cpu.0.cx_method: C1/hlt C2/io

dev.cpu.0.cx_usage_counters: 412905 0

dev.cpu.0.cx_usage: 100.00% 0.00% last 290us

dev.cpu.0.cx_lowest: C1

dev.cpu.0.cx_supported: C1/1/1 C2/3/104

dev.cpu.0.freq_levels: 2501/35000 2500/35000 2200/29755 2000/26426 1800/23233 1600/20164 1400/17226 1200/14408 1000/11713 800/9140

dev.cpu.0.freq: 800

dev.cpu.0.%parent: acpi0

dev.cpu.0.%pnpinfo: _HID=none _UID=0

dev.cpu.0.%location: handle=\_PR_.CPU0

dev.cpu.0.%driver: cpu

dev.cpu.0.%desc: ACPI CPU


coretemp(4) çekirdek modülünü kldload(8) komutuyla yüklerseniz ek sıcaklık bilgileri alırsınız.

Aşağıda, coretemp(8) çekirdek modülü yüklü aynı sysctl(0) dev.cpu.4 MIB bulunmaktadır.

% sysctl dev.cpu.0

dev.cpu.0.temperature: 49.0C

dev.cpu.0.coretemp.throttle_log: 0

dev.cpu.0.coretemp.tjmax: 100.0C

dev.cpu.0.coretemp.resolution: 1

dev.cpu.0.coretemp.delta: 51

dev.cpu.0.cx_method: C1/hlt C2/io

dev.cpu.0.cx_usage_counters: 16549 0

dev.cpu.0.cx_usage: 100.00% 0.00% last 1489us

dev.cpu.0.cx_lowest: C1

dev.cpu.0.cx_supported: C1/1/1 C2/3/104

dev.cpu.0.freq_levels: 2501/35000 2500/35000 2200/29755 2000/26426 1800/23233 1600/20164 1400/17226 1200/14408 1000/11713 800/9140

dev.cpu.0.freq: 800

dev.cpu.0.%parent: acpi0

dev.cpu.0.%pnpinfo: _HID=none _UID=0

dev.cpu.0.%location: handle=\_PR_.CPU0

dev.cpu.0.%driver: cpu

dev.cpu.0.%desc: ACPI CPU


En yararlı olanlardan bazılarını tarif etmeme izin verin.

CPU çekirdek sıcaklığı.

dev.cpu.0.sıcaklık: 49.0C

CPU, C-durumlarını (bu CPU için C1 ve C2) destekledi.

dev.cpu.0.cx_supported: C1/1/1 C2/3/104

C durumları kullanımı için CPU istatistikleri (yalnızca C1 durumu kullanılmıştır).

dev.cpu.0.cx_usage_counters: 16549 0

dev.cpu.0.cx_usage: 100.00% 0.00% son 1489us

CPU maksimum (en derin) C durumu etkindir.

dev.cpu.0.cx_lowest: C1

CPU, '/' karakterinden sonra güç kullanımıyla frekans seviyelerini destekledi. 2500/35000, 2 W güç kullanımı ile 5.35 GHz frekansı olarak okunabilir ve 2501 Turbo Mod'dur. En düşük yaklaşık 800 W kullanımla 9 MHz'dir.

dev.cpu.0.freq_levels: 2501/35000 2500/35000 2200/29755 2000/26426 1800/23233 1600/20164 1400/17226 1200/14408 1000/11713 800/9140

CPU akım frekansı (powerd(8) veya powerdxx(8) daemon kullandığınızda değişiklik gösterir).

dev.cpu.0.freq: 800

hw.acpi.thermal.tz0.temperature MIB ayrıca mevcut termal bölge sıcaklığını da gösterecektir.

% sysctl hw.acpi.thermal.tz0.temperature

hw.acpi.thermal.tz0.temperature: 49.1C


Kaç çekirdeğiniz olduğunu kontrol etmek için bu komutları kullanın.

% grep FreeBSD/SMP /var/run/dmesg.boot

FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs

FreeBSD/SMP: 1 package(s) x 2 core(s)


% sysctl kern.smp.cpus

kern.smp.cpus: 2


Açıklamam yararlı gelmiyorsa, aşağıda gösterildiği gibi sysctl(8) komutu için -d bayrağını da kontrol etmelisiniz.

% sysctl -d dev.cpu.0.freq

dev.cpu.0.freq: Current CPU frequency


lscpu(1)�

CPU özelliklerinizi ve modelinizi tanımlayacak lscpu(8) adlı üçüncü taraf aracı da vardır. Paketlerden eklemeniz gerekecektir.

# pkg install lscpu


lscpu(8)'in çalışması için cpuctl(4) çekirdek modülü gereklidir.

İşte çift çekirdekli CPU'm için nasıl görünüyor.

# kldload cpuctl

# lscpu

Architecture: amd64

Byte Order: Little Endian

Total CPU(s): 2

Thread(s) per core: 2

Core(s) per socket: 2

Socket(s): 0

Vendor: GenuineIntel

CPU family: 6

Model: 42

Model name: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz

Stepping: 7

L1d cache: 32K

L1i cache: 32K

L2 cache: 256K

L3 cache: 3M

Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 cflsh ds acpi mmx fxsr sse sse2 ss htt tm pbe sse3 pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline aes xsave osxsave avx syscall nx rdtscp lm lahf_lm


dmesg(8)�

Ayrıca dmesg(8) komutu (veya /var/run/dmesg.boot dosyası daha uzun çalışma süresinden sonra) CPU modelinizi kapsar ve bilgileri içerir.

% grep CPU /var/run/dmesg.boot

CPU: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz (2491.97-MHz K8-class CPU)

FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs

cpu0: on acpi0

coretemp0: on cpu0



CPU Frekans Ölçeklendirme�

CPU ölçeklendirme özelliği için FreeBSD temel sisteminde bulunan powerd(8) daemon'u veya FreeBSD Bağlantı Noktalarından veya paketlerinden powerdxx(8)'i kullanabilirsiniz. powerdxx(8) cini, çok çekirdekli sistemleri daha iyi ölçeklendirmeyi ve sistemde orta derecede yük olduğunda tüm çekirdekleri yüksek duruma getirmemeyi amaçlamaktadır, ancak bazı insanlar herhangi bir şey yaptıklarında tam güce sahip olmak ve hiçbir şey yapmadıklarında güç tasarrufu sağlamak için bu yaklaşımı tercih edebilir. Bu nedenle powerd(8), powerdxx(8)'den daha iyi değildir veya bunun tersi de geçerlidir. Onlar sadece farklıdır, böylece ihtiyaçlarınız için size daha fazla seçenek sunar.

Hangisini seçerseniz seçin, /etc/rc.conf dosyasında yapılandırılmalıdır.

güçlendirilmiş(8)�

İşte powerd(8) daemon seçenekleri.

powerd_enable=YES

powerd_flags="-n adaptive -a hiadaptive -b adaptive -m 800 -M 1600"


Bilinmeyen durum için -n seçeneği – herhangi bir nedenle powerd(8) AC gücüyle mi yoksa pille mi çalıştığınızı belirleyemezse. -a, AC gücü içindir ve -b, pille çalışmak içindir. Uyarlanabilir ayar daha az 'agresif'tir, bu nedenle daha fazla pil süresi dostudur. Hiadaptive daha agresiftir, bu AC gücüyle çalışırken tercih edilir. -m seçeneği, kullanılacak minimum CPU frekansını ve -M maksimum CPU frekansını ayarlar. Her ikisi de MHz birimleri olarak. Daha fazla ayrıntı için powerd(8) man sayfasına bakın.

powerdxx(8)�

İlk önce yüklemeniz gerekecek.

# pkg install powerdxx


O zaman seçenekleri powerd(8) daemon'unkilerle aynıdır.

powerdxx_enable=YES

powerdxx_flags="-n adaptive -a hiadaptive -b adaptive -m 800 -M 1600"


Bayraklar/parametreler açıklaması için yukarıdaki powerdxx(8) bölümüne bakın.

On yıl önce FreeBSD'de CPU frekansı ölçeklendirmesi şimdi olduğu gibi 'kolay' değildi, eski NASIL YAPILIR: FreeBSD CPU Ölçeklendirme ve Güç Tasarrufu 2008'den bu konuda.

C-Devletleri�

C durumları /etc/rc.conf dosyasında bu seçeneklerle yapılandırılabilir.

performance_cx_lowest

economy_cx_lowest

economy_cx_lowest parametresi pille çalışmak içindir ve performance_cx_lowest parametresi AC gücüyle çalışmak içindir. Her ikisi de rc(8) alt sistemi tarafından kullanılan /etc/rc.d/power_profile komut dosyası kullanılarak ayarlanır. Tüm dev.cpu.*hw.acpi.cpu.cx_lowest değerlerini ayarlayan/denetleyen .cx_lowest parametresini ayarlar. AC gücünü taktığınızda/çıkardığınızda /var/log/messages dosyasındaki değişiklikleri de izleyebilirsiniz.

% tail -f /var/log/messages

Nov 28 13:14:42 t420s power_profile[48231]: changed to 'economy'

Nov 28 13:14:46 t420s power_profile[56835]: changed to 'performance'


Genellikle jest bu değerleri kullanırım.

performance_cx_lowest=C1

economy_cx_lowest=Cmax


Yukarıdaki ayarlar genellikle çoğu sistem için yeterlidir. CPU'nuzun hangi C durumlarını desteklediğini kontrol etmek için dev.cpu.0.cx_supported MIB değerini alın.

% sysctl dev.cpu.0.cx_supported

dev.cpu.0.cx_supported: C1/1/1 C2/3/104


CPU'm yalnızca C1 ve C2'yi destekliyor, ancak sizinki daha fazlasını destekleyebilir. Eski bir Core 2 Duo dizüstü bilgisayar kullanırken bir keresinde, C2 (çalışan) durumundan C1 (uyku) durumuna geri dönerken C2 durumunun oldukça 'farkedilir' bir gecikmeye sahip olduğunu hatırlıyorum, bu yüzden aşağıdaki ayara ihtiyaç var. performance_cx_lowest ve economy_cx_lowest parametrelerini kullanmazsınız. İlk çekirdeği C1 ve diğer tüm çekirdekleri C2 olarak ayarlarsınız. Bu şekilde pilde bile tamamen duyarlı bir sisteme sahip olursunuz ve diğer tüm çekirdekler uyuyabilir ve enerji tasarrufu sağlayabilir.

Örneğin, 4 çekirdeğiniz varsa ve desteklenen maksimum (en derin) C-durumunuz C3 olacaksa, bunları /etc/sysctl.conf dosyasına koyarsınız.

% grep cx_lowest /etc/sysctl.conf

dev.cpu.0.cx_lowest=C1

dev.cpu.1.cx_lowest=C3

dev.cpu.2.cx_lowest=C3

dev.cpu.3.cx_lowest=C3


CPU Turbo Modu�

Turbo modunu etkinleştirmenin iki yolu vardır. Bunun bir yolu, nominal CPU hızının üzerinde ayarlanmış maksimum frekansla powerd(8) veya powerdxx(8) cinini ayarlamaktır. Örneğin, çift çekirdekli 2,3 GHz olarak tanımlanan CPU'nuz varsa, -M bayrağı ile maksimum hızı 4000 olarak ayarlayın (örneğin 4 GHz anlamına gelir). CPU frekans ölçeklendirme cinini kullanmazsanız, dev.cpu.0.freq_levels MIB'den en yüksek (ilk) değere sahip dev.cpu.0.freq parametresini kullanırsınız.

Sistemimde desteklenen CPU frekans seviyeleri.

% sysctl dev.cpu.0.freq_levels

dev.cpu.0.freq_levels: 2501/35000 2500/35000 2200/29755 2000/26426 1800/23233 1600/20164 1400/17226 1200/14408 1000/11713 800/9140


En yüksek değer (solda) 2501/35000'dir, bu nedenle Turbo Modunu kullanmak için dev.cpu.0.freq parametresini bu değerle ayarlamam gerekiyor. Yalnızca 'frekans' değeri bölümünü kullanmanız gerekir, çünkü güç gereksinimleri açıklamasıyla yapıştırırsanız başarısız olur.

# sysctl dev.cpu.0.freq=2501/35000

sysctl: invalid integer '2501/35000'


Bu şekilde kullanılmalıdır.

# sysctl dev.cpu.0.freq=2501

dev.cpu.0.freq: 800 -> 2501


USB Aygıtları�

Bağlı USB aygıtlarını listelemek için usbconfig(8) aracını kullanın.

% usbconfig

ugen1.1: at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)

ugen2.1: at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)

ugen0.1: at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)

ugen2.2: at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)

ugen0.2: at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)

ugen0.3: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

ugen2.3: at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)


pwr parametresinin (güç için kısa) size mevcut güç ayarını göstereceğini göreceksiniz:

ÜZERİNDE

KAPALI

KURTARMAK

ugen1.1 aygıtı için yeni USB güç seçeneğini ayarlamak üzere aşağıdaki şekilde power_save parametreye sahip usbconfig(8) aracını da kullanın.

# usbconfig -u 1 -a 1 power_save


USB güç yönetiminin FreeBSD'de özel yapılandırma dosyası yoktur, bu nedenle bunları rc (8) alt sistemi tarafından yönetilen başlatma işleminin sonunda çalıştırılan evrensel /etc/rc.local dosyasına koyacağız. İşte kablosuz farem olan 'Lenovo USB Alıcısı' için istisnai olarak eklenen içerik.

% grep -A 10 POWER /etc/rc.local

# POWER SAVE USB DEVICES

usbconfig \

| grep -v 'Lenovo USB Receiver' \

| awk '{print $1}' \

| sed 's|ugen||'g \

| tr -d : \

| awk -F '.' '{print $1 " " $2 }' \

| while read U A

do

usbconfig -u ${U} -a ${A} power_save 2> /dev/null

done


Fare veya izlenen cihazlar için güç tasarrufu yapmamak iyi bir fikirdir, çünkü her kullanmak istediğinizde yaklaşık bir saniye beklemek zorunda kalmayı muhtemelen can sıkıcı bulacaksınız. Kablosuz USB fare ("Lenovo USB Alıcısı" aygıtı olarak tanımlanır) dışındaki tüm USB aygıtları için güç tasarrufunu ayarlamak üzere for döngüsü kullanıyorum.

SATA/AHCI Güç Yönetimi�

FreeBSD, acpich(4) sürücüsü aracılığıyla AHCI kanalları güç yönetimi sunar. Bu güç yönetimi ayarları, /boot/loader.conf dosyasındaki hint.ahcich.*.pm_level parametresi kullanılarak önyükleme sırasında ayarlanabilir. Yalnızca üç kanalım varken 8 kanala kadar yapılandırma kullanıyorum.

% grep ahcich /var/run/dmesg.boot

ahcich0: at channel 0 on ahci0

ahcich1: at channel 1 on ahci0

ahcich4: at channel 4 on ahci0

ada0 at ahcich0 bus 0 scbus0 target 0 lun 0


Bunun nedeni, var olmayan cihazların ayarlarının zararsız olması ve herhangi bir hata mesajı görüntülememesi, ancak zaman kazandıran çeşitli sistemler için farklı ayarlar kullanmanız gerekmemesidir. Bu hint.ahcich.*.pm_level ahci(4) man sayfasındaki açıklamadır.

hint.ahcich.X.pm_level


controls SATA interface Power Management for the specified channel,

allowing some power to be saved at the cost of additional command latency.


Some controllers, such as ICH8, do not implement modes 2 and 3 with NCQ

used. Because of artificial entering latency, performance degradation in

modes 4 and 5 is much smaller then in modes 2 and 3.


Olası güç yönetimi seçenekleri şunlardır:

0 – arayüz Güç Yönetimi devre dışı bırakıldı (varsayılan)

1 – cihazın PM durum değişikliğini başlatmasına izin verilir, ana bilgisayar pasiftir

2 – Ana bilgisayar, bağlantı noktası her boşta kaldığında KISMI PM durum geçişini başlatır

3 – Ana bilgisayar, bağlantı noktası her boşta kaldığında SLUMBER PM durum geçişini başlatır

4 – sürücü, bağlantı noktası boşta kaldıktan 1 ms sonra KISMI PM durum geçişini başlatır

5 – sürücü, bağlantı noktası boşta kaldıktan 125 ms sonra SLUMBER PM durum geçişini başlatır

İşte /boot/loader.conf dosyasındaki ayarlarım.

# AHCI POWER MANAGEMENT FOR EVERY USED CHANNEL (ahcich 0-7)

hint.ahcich.0.pm_level=5

hint.ahcich.1.pm_level=5

hint.ahcich.2.pm_level=5

hint.ahcich.3.pm_level=5

hint.ahcich.4.pm_level=5

hint.ahcich.5.pm_level=5

hint.ahcich.6.pm_level=5

hint.ahcich.7.pm_level=5


Sürücüsü Olmayan Cihazlar�

FreeBSD, sürücüye bağlı olmayan cihazlara güç vermemek için güç tasarrufu seçeneğine sahiptir. hw.pci.do_power_nodriver olarak adlandırılır ve /boot/loader.conf dosyasında ayarlayabilirsiniz. İşte o zamanki pci(4) man sayfasından açıklaması.

hw.pci.do_power_nodriver (Defaults to 0)


Place devices into a low power state (D3) when

a suitable device driver is not found.


Aşağıdaki değerlerden birine ayarlanabilir:

0 – Tüm cihazlar tam güç modunda bırakılır (varsayılanlar).

1 – Depolama denetleyicilerinin de kapatılmaması dışında '2' gibi.

2 – Çoğu cihazın gücü kapatılır (ekran/bellek/çevre birimleri kapatılmamıştır).

3 – Aygıt sürücüsü olmadan tüm PCI aygıtlarını kapatır.

İşte /boot/loader.conf dosyasındaki ayarım.

# POWER OFF DEVICES WITHOUT ATTACHED DRIVER

hw.pci.do_power_nodriver=3


pciconf(8) yardımcı programı, sisteminizde hangi aygıtların bulunduğunu ve hangi sürücünün bağlı olduğunu gösterir. Sürücü takılı değilse, aşağıda none0@ gibi bu tür aygıtlar için hiçbiri*@ ifadesini görürsünüz. Ayrıca, em4 aygıtı için em(0) man sayfası veya xhci4 aygıtı için xhci(0) sayfası gibi çoğu sürücü için man sayfasını da kontrol edebilirsiniz.

% pciconf -l

hostb0@pci0:0:0:0: class=0x060000 card=0x21d217aa chip=0x01048086 rev=0x09 hdr=0x00

vgapci0@pci0:0:2:0: class=0x030000 card=0x21d217aa chip=0x01268086 rev=0x09 hdr=0x00

none0@pci0:0:22:0: class=0x078000 card=0x21d217aa chip=0x1c3a8086 rev=0x04 hdr=0x00

em0@pci0:0:25:0: class=0x020000 card=0x21ce17aa chip=0x15028086 rev=0x04 hdr=0x00

ehci0@pci0:0:26:0: class=0x0c0320 card=0x21d217aa chip=0x1c2d8086 rev=0x04 hdr=0x00

hdac0@pci0:0:27:0: class=0x040300 card=0x21d217aa chip=0x1c208086 rev=0x04 hdr=0x00

pcib1@pci0:0:28:0: class=0x060400 card=0x21d217aa chip=0x1c108086 rev=0xb4 hdr=0x01

pcib2@pci0:0:28:1: class=0x060400 card=0x21d217aa chip=0x1c128086 rev=0xb4 hdr=0x01

pcib3@pci0:0:28:3: class=0x060400 card=0x21d217aa chip=0x1c168086 rev=0xb4 hdr=0x01

pcib4@pci0:0:28:4: class=0x060400 card=0x21d217aa chip=0x1c188086 rev=0xb4 hdr=0x01

ehci1@pci0:0:29:0: class=0x0c0320 card=0x21d217aa chip=0x1c268086 rev=0x04 hdr=0x00

isab0@pci0:0:31:0: class=0x060100 card=0x21d217aa chip=0x1c4f8086 rev=0x04 hdr=0x00

ahci0@pci0:0:31:2: class=0x010601 card=0x21d217aa chip=0x1c038086 rev=0x04 hdr=0x00

ichsmb0@pci0:0:31:3: class=0x0c0500 card=0x21d217aa chip=0x1c228086 rev=0x04 hdr=0x00

iwn0@pci0:3:0:0: class=0x028000 card=0x11118086 chip=0x42388086 rev=0x3e hdr=0x00

sdhci_pci0@pci0:5:0:0: class=0x088000 card=0x21d217aa chip=0xe8221180 rev=0x07 hdr=0x00

xhci0@pci0:13:0:0: class=0x0c0330 card=0x01941033 chip=0x01941033 rev=0x04 hdr=0x00


Daha detaylı bilgi almak için -v bayrağını da kullanabilirsiniz.

% pciconf -l -v

(...)

xhci0@pci0:13:0:0: class=0x0c0330 card=0x01941033 chip=0x01941033 rev=0x04 hdr=0x00

vendor = 'NEC Corporation'

device = 'uPD720200 USB 3.0 Host Controller'

class = serial bus

subclass = USB


Nvidia Optimus�

Herhangi bir nedenle BIOS / UEFI belleniminiz Nvidia ayrı grafik kartını devre dışı bırakmanıza izin vermiyorsa, sisteminizdeki gücü tüketmemesi için devre dışı bırakmak için bu komut dosyasını kullanabilirsiniz. acpi_call paketi tarafından sağlanan acpi_call (4) çekirdek modülünü gerektirir.

# mkdir /root/bin

# cd /root/bin

# fetch https://people.freebsd.org/~xmj/turn_off_gpu.sh

# pkg install acpi_call

# kldload acpi_call

# chmod +x /root/bin/turn_off_gpu.sh

# /root/bin/turn_off_gpu.sh


Bu girişle USB güç tasarrufu seçeneklerinden sonra /etc/rc.local dosyasına ekleyebilirsiniz.

# DISABLE NVIDIA CARD

/root/bin/turn_off_gpu.sh


Çalışan ACPI çağrısını /root/.gpu_method dosyasında saklar ve her seferinde çalıştırır.

Askıya Alma ve Devam Ettirme�

Askıya alma / devam ettirme mekanizmasının en büyük düşmanları, donanımınız için BIOS / UEFI ürün yazılımınızdaki hatalardır. Bazen Bluetooth'u devre dışı bırakmak yardımcı olur – örneğin ThinkPad T420s için seçenek budur. Sisteminizde hangi askıya alma modlarının desteklendiğini kontrol etmek için sysctl(8) alt sisteminden MIB hw.acpi.supported_sleep_state bakın.

% sysctl hw.acpi.supported_sleep_state

hw.acpi.supported_sleep_state: S3 S4 S5


ACPI S3 uyku durumuna girmek (askıya alma) için acpiconf(8) aracını veya zzz(8) aracını kullanabilirsiniz.

# zzz


... veya acpiconf(8) aracıyla.

# acpiconf -s 3


zzz(8) man sayfasında belirtilenle tamamen aynı.

Ayrıca, dizüstü bilgisayarınızın kapağını her kapattığınızda sisteminizin uyku moduna geçeceği sysctl(8) değerini de ayarlayabilirsiniz. Bunu başarmak için hw.acpi.lid_switch_state=S3 dosyasını /etc/sysctl.conf dosyasına koyun. Donanımınızı komutla veya kapağı kapatarak uyku moduna geçirirseniz koyun, dizüstü bilgisayarınız kapağı açtıktan sonra devam edecektir. Tabii ki, zzz (8) komutundan sonra kapağı kapatmadıysanız, kapağı kapatıp açmanız veya devam etmek için güç düğmesine basmanız gerekecektir. Tabii ki, amacı varsa, masaüstlerini veya hatta yedekleme sunucunuzu askıya alabilir / devam ettirebilirsiniz. Sadece dizüstü bilgisayarlarla sınırlı değildir.

Çeşitli satıcı ACPI alt sistemleri için özel çekirdek modülleri de vardır. İşte onlar:

/boot/kernel/acpi_asus_wmi.ko

/boot/kernel/acpi_asus.ko

/boot/kernel/acpi_dock.ko

/boot/kernel/acpi_fujitsu.ko

/boot/kernel/acpi_hp.ko

/boot/kernel/acpi_ibm.ko

/boot/kernel/acpi_panasonic.ko

/boot/kernel/acpi_sony.ko

/boot/kernel/acpi_toshiba.ko

/boot/kernel/acpi_video.ko

/boot/kernel/acpi_wmi.ko

Örneğin, IBM / Lenovo ThinkPad'iniz varsa, acpi_ibm.ko çekirdek modülünü kullanacaksınız.

# kldload acpi_ibm


Her modülü yükledikten sonra kullanımınız için yeni sysctl(8) değerleri alacaksınız. Örneğin fan hızı, klavye arkadan aydınlatması veya ekran parlaklığı ile ilgili. Aşağıda, dev.acpi_ibm(8) çekirdek modülü yüklendikten sonra sysctl(4)'deki yeni acpi_ibm bölümü bulunmaktadır.

% sysctl dev.acpi_ibm

dev.acpi_ibm.0.handlerevents: NONE

dev.acpi_ibm.0.mic_led: 0

dev.acpi_ibm.0.fan: 0

dev.acpi_ibm.0.fan_level: 0

dev.acpi_ibm.0.fan_speed: 0

dev.acpi_ibm.0.wlan: 1

dev.acpi_ibm.0.bluetooth: 0

dev.acpi_ibm.0.thinklight: 0

dev.acpi_ibm.0.mute: 0

dev.acpi_ibm.0.volume: 0

dev.acpi_ibm.0.lcd_brightness: 0

dev.acpi_ibm.0.hotkey: 1425

dev.acpi_ibm.0.eventmask: 134217727

dev.acpi_ibm.0.events: 1

dev.acpi_ibm.0.availmask: 134217727

dev.acpi_ibm.0.initialmask: 2060

dev.acpi_ibm.0.%parent: acpi0

dev.acpi_ibm.0.%pnpinfo: _HID=LEN0068 _UID=0

dev.acpi_ibm.0.%location: handle=\_SB_.PCI0.LPC_.EC__.HKEY

dev.acpi_ibm.0.%driver: acpi_ibm

dev.acpi_ibm.0.%desc: IBM ThinkPad ACPI Extras

dev.acpi_ibm.%parent:


İşte daha ilginç olanların açıklamaları.

Bu, Mikrofon sessiz düğmesindeki LED ışığını açacaktır.

dev.acpi_ibm.0.mic_led

CPU fanını (0) yönetmek isteyip istemediğinizi seçin veya üretici varsayılanlarına (1) bırakın.

dev.acpi_ibm.0.fan

CPU fanı etkinse, hızını ayarlayın.

dev.acpi_ibm.0.fan_level

Bu size CPU fanının ne kadar hızlı döndüğünü söyleyecektir (RPM'lerde).

dev.acpi_ibm.0.fan_speed

WiFi'yi etkinleştirin/devre dışı bırakın (BIOS'ta etkinleştirilmişse).

dev.acpi_ibm.0.wlan

Bluetooth'u etkinleştirin/devre dışı bırakın (BIOS'ta etkinleştirilmişse).

dev.acpi_ibm.0.bluetooth

Enable/disable ThinkLight.

dev.acpi_ibm.0.thinklight

Mute/unmute speakers.

dev.acpi_ibm.0.mute

Speakers volume.

dev.acpi_ibm.0.volume

Screen brightness.

dev.acpi_ibm.0.lcd_brightness

For most of the cases its not needed to use them as you will probably just use the vendor defined keyboard shortcuts (probably with Fn key) or vendor specific dedicated buttons. Sometimes you want to create/use your own setup or need custom keyboard shortcuts, or you want to control the fan speed depending on the CPU temperature other way then your vendor predefined it. This is when these dedicated ACPI kernel modules are most useful.

For example I recently thought that my CPU fan seems to be little louder then it should be so I created custom cron(8) based acpi-thinkpad-fan.sh script to use lower fan speeds or even lower quieter speeds when CPU temperature is low enough.

I will post it here. Maybe you will find it useful for your purposes. To describe it shortly it disables the fan when CPU temperature is below 50 (C) degrees, it sets it to level '1' if its between 50 (C) and 60 (C) degrees and sets it to level '3' when temperature reaches more then 60 (C) degrees.

#! /bin/sh


if ! kldstat | grep -q acpi_ibm.ko

then

doas kldload acpi_ibm

fi


doas sysctl dev.acpi_ibm.0.fan=0 1> /dev/null


TEMP=$( sysctl -n hw.acpi.thermal.tz0.temperature | awk -F'.' '{print $1}' )


if [ ${TEMP} -lt 50 ]

then

doas sysctl dev.acpi_ibm.0.fan_level=0 1> /dev/null

exit 0

fi


if [ ${TEMP} -lt 60 ]

then

doas sysctl dev.acpi_ibm.0.fan_level=1 1> /dev/null

exit 0

fi


if [ ${TEMP} -ge 60 ]

then

doas sysctl dev.acpi_ibm.0.fan_level=3 1> /dev/null

exit 0

fi


... and here is its crontab(5) entry:

% crontab -l

# ACPI/IBM/FAN

* * * * * ~/scripts/acpi-thinkpad-fan.sh


Network Interfaces�

There is also ifconfig(8) option to save power if a driver supports such feature, its called powersave and its used like that.

# ifconfig wlan0 powersave


I use it in my network.sh network management script described broadly in the FreeBSD Network Management with network.sh article.

Vendor Tools�

There are also vendor tools available on FreeBSD like powermon(8) for example. Remember that it requires cpuctl(4) kernel module to work.

# pkg install powermon

# kldload cpuctl

# powermon

Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz

(Arch: Sandy Bridge, Limit: 44W)




5.11W [=======> ]




Package: Uncore: x86 Cores: GPU:

Current: 5.11W Current: 3.17W Current: 1.73W Current: 0.21W

Total: 98.33J Total: 60.86J Total: 33.49J Total: 3.98J



DTrace�

ZFS gibi Solaris/Illumos'tan FreeBSD'ye giden yolu bulan dinamik izleme çerçevesi, bataryanızda daha fazla süre için savaşta yararlı bir silah olabilir.

İlk önce dtrace-toolkit paketini ekleyin.

# pkg install dtrace-toolkit


Sisteminiz enerji tasarrufunu durdurur veya bir şeylerin çalıştırılması/yapılması gerektiği için CPU'yu uyandırır. Sisteminizde neyin çalıştırıldığını kontrol etmek için çoğunlukla ps(1) veya top(1) yardımcı programlarını çalıştırırsınız, ancak bu size tam olarak neyin başlatıldığını veya bir şeyin ne sıklıkta çalıştırıldığını göstermez. DTrace'in yardımla geldiği yer burasıdır.

dtrace-toolkit paketinden /usr/share/dtrace/toolkit/execsnoop betiğini kullanacağız. Tüm bağımsız değişkenleriyle çalıştırılan HER KOMUTU yazdıracaktır. Hiçbir komut çalıştırılmadığında sessiz kalacaktır, tavsiye edilir.

İşte benim dzen2 araç çubuğu güncellemem için örnek çıktı.

# /usr/local/share/dtrace-toolkit/execsnoop

UID PID PPID ARGS

1000 97748 97509 /usr/local/bin/zsh -c ~/scripts/dzen2-update.sh > ~/.dzen2-fifo

1000 97748 1 /bin/sh /home/vermaden/scripts/dzen2-update.sh

1000 99157 97748 sysctl -n kern.smp.cpus

1000 311 97748 ps ax -o %cpu,rss,command -c

1000 3118 1521 awk -v SMP=200 /\ idle$/ {printf("%.1f%%",SMP-$1)}

1000 4462 97748 date +%Y/%m/%d/%a/%H:%M

1000 4801 97748 sysctl -n dev.cpu.0.freq

1000 6009 97748 sysctl -n hw.acpi.thermal.tz0.temperature

1000 6728 97748 sysctl -n vm.stats.vm.v_inactive_count

1000 7043 97748 sysctl -n vm.stats.vm.v_free_count

1000 7482 97748 sysctl -n vm.stats.vm.v_cache_count

1000 10363 8568 bc -l

1000 10863 10363 dc -x

1000 13143 7773 grep --color -q ^\.

1000 13798 97748 /bin/sh /home/vermaden/scripts/__conky_if_ip.sh

1000 15089 14235 ifconfig -u

1000 16439 14235 grep -v 127.0.0.1

1000 17738 14235 grep -c inet

1000 19069 18612 ifconfig -l -u

1000 19927 18612 sed s/lo0//g

1000 20772 13798 ifconfig wlan0

1000 23388 21410 grep ssid

1000 24588 13798 grep -q "

1000 25965 25282 awk /ssid/ {print $2}

1000 27917 27217 awk /inet / {print $2}

1000 29941 97748 /bin/sh /home/vermaden/scripts/__conky_if_gw.sh

1000 32808 31412 route -n -4 -v get default

1000 34012 31412 awk END{print $2}

1000 34895 97748 /bin/sh /home/vermaden/scripts/__conky_if_dns.sh

1000 36118 34895 awk /^nameserver/ {print $2; exit} /etc/resolv.conf

1000 37628 97748 /bin/sh /home/vermaden/scripts/__conky_if_ping.sh dzen2

1000 38829 37628 ping -c 1 -s 0 -t 1 -q 9.9.9.9

1000 42079 41566 mixer -s vol

1000 42177 41566 awk -F : {printf("%s",$2)}

1000 44434 43254 zfs list -H -d 0 -o name,avail

1000 45866 43254 awk {printf("%s/%s ",$1,$2)}

1000 47004 97748 /bin/sh /home/vermaden/scripts/__conky_battery_separate.sh dzen2

1000 48282 47004 sysctl -n hw.acpi.battery.units

1000 49494 47004 sysctl -n hw.acpi.battery.life

1000 49948 47004 sysctl -n hw.acpi.acline

1000 52073 51441 acpiconf -i 0

1000 53055 51441 awk /^State:/ {print $2}

1000 53981 53186 acpiconf -i 0

1000 55354 53186 awk /^Remaining capacity:/ {print $3}

1000 55968 55631 acpiconf -i 1

1000 57187 55631 awk /^State:/ {print $2}

1000 58405 57471 acpiconf -i 1

1000 59201 57471 awk /^Remaining capacity:/ {print $3}

1000 60961 59252 bsdgrep -v -E (COMMAND|idle)$

1000 63534 59252 head -3

1000 62194 59252 sort -r -n

1000 64629 59252 awk {printf("%s/%d%%/%.1fGB ",$3,$1,$2/1024/1024)}

1000 64634 93198 tail -1 /home/vermaden/.dzen2-fifo


Sadece ekranın üstündeki bilgileri güncellemek için birçok işlem. Bu yüzden dzen2 bilgilerini yalnızca her 5 dakikada bir yeniliyorum ve şu an için kesin bilgi ve sistem durumu istiyorsam, tüm bu komutları çalıştırmak ve kendini yenilemek için dzen2 çubuğuna 'tıklıyorum'.

Bu şekilde DTrace'i kullanarak, istenmeyen bir şeyin değerli pil zamanınızı çalmadığını bileceksiniz. Bu tür dzen2 yapılandırmasını FreeBSD Masaüstü – Bölüm 13 – Yapılandırma – Dzen2 makalemde bulabilirsiniz.

Başka�

cesaret�

Varsayılan olarak ZFS, işlem grubunu her 5 saniyede bir yürütür ve bu, vfs.zfs.txg.timeout parametresi için iyi bir varsayılan ayardır. Gerekirse biraz artırmak isteyebilirsiniz. Örneğin 10'a. Bu parametre hakkında çoğunlukla söylüyorum, çünkü birçok rehber çeşitli performans nedenleriyle 1'e ayarlamayı tavsiye ediyor, ancak 1'e ayarlamanın diskinizin (ve CPU'nun) uykuya dalmasını önleyeceğini ve böylece daha fazla pil ömrü tüketeceğini unutmayın.

If you want to mess with vfs.zfs.txg.timeout value set it in the /boot/loader.conf file.

Applications�

To get more time on battery used applications are also crucial. For example Thunar uses less CPU time then Caja or Nautilus. The Geany text editor uses less CPU resources and memory then Scite or Gedit editors, even GVim takes more resources. Not to mention that custom Openbox/Fluxbox/${YOUR_FAVORITE_WM} window manager based setup will consume a lot less CPU time then entire Gnome or Mate environment.

Hardware�

It's sometimes possible to literally buy more battery time. For example when you want to buy new SSD for you laptop then pick not the fastest one but the most power efficient one. You will probably not feel the performance difference anyway but you will appreciate more battery time.

Most RAM modules come with 1.5V current voltage but there is chance that your laptop may support low power DDR modules with 1.35V current thus increasing your battery time. Also keep in mind that each RAM stick uses about 0.5-1.0W of power so using single 8 GB RAM stick will provide you more battery time the the same 8 GB of memory using two 4 GB RAM modules. This also have performance drawback because with single RAM module you will not be able to use dual channel technology so you will limit you RAM speed. Some laptops have even 4 RAM slots (like ThinkPad W520 for example) so without losing anything you should use two 8 GB RAM sticks instead of four 4 GB RAM sticks for longer battery life.

It is sometimes possible to swap your DVD drive to internal secondary battery. Examples of such laptops are Dell Latitude D630, ThinkPad T420s or ThinkPad T500/W500. Sometimes vendors offer entire slice battery that will stick to the bottom of your laptop like slice battery for ThinkPad X220 or T420/T520/W520 laptops or for the 1st generation of ThinkPad X1 laptop.

Hope that this information will help you squeeze some battery time (or at least save some power) on FreeBSD 🙂

UPDATE 1 – Graphics Card Power Saving�

If You have the graphics/drm-kmod package installed you probably use the latest i915kms.ko kernel module.

To set maximum power management for integrated Intel graphics cards put these into the /boot/loader.conf file.

# INTEL DRM WITH graphics/drm-kmod PACKAGE (NEW)

# SKIP UNNECESSARY MODE SETS AT BOOT TIME

compat.linuxkpi.fastboot=1

# USE SEMAPHORES FOR INTER RING SYNC

compat.linuxkpi.semaphores=1

# ENABLE POWER SAVING RENDER C-STATE 6

compat.linuxkpi.enable_rc6=7

# ENABLE POWER SAVING DISPLAY C-STATES

compat.linuxkpi.enable_dc=2

# ENABLE FRAME BUFFER COMPRESSION FOR POWER SAVINGS

compat.linuxkpi.enable_fbc=1


In the past these settings below were used but they are not present anymore.

# INTEL DRM WITH graphics/drm-kmod PACKAGE (OLD)

drm.i915.enable_rc6=7

drm.i915.semaphores=1

drm.i915.intel_iommu_enabled=1


UPDATE 2 – AMD CPU Temperatures�

While the coretemp(4) kernel module is used for Intel CPUs the amdtemp(4) kernel module will provide additional temperature information for AMD CPUs.

UPDATE 3 – Suspend/Resume Tips�

The biggest enemies of suspend/resume subsystem are bugs in the BIOS/UEFI firmware. Sometimes disabling the Bluetooth helps – that is the option for the Lenovo ThinkPad T420s for example. On the Lenovo ThinkPad X240 it is disabling the TPM (Trusted Platform Module).

UPDATE 4 – Intel Speed Shift�

As I run FreeBSD on very decent but also pretty old 2011 ThinkPad W520 this option is a mystery for me – but for those who run more fresh systems may benefit from it.

With the introduction of Intel Skylake (6th Generation) CPUs the FreeBSD operating system is able to utilize the Intel Speed Shift technology. You can read more about it in the hwpstate_intel(4) man page. To make use of it include the following line in the /boot/loader.conf file.

machdep.hwpstate_pkg_ctrl=0


Then in the /etc/sysctl.conf file you would add a line for each CPU thread (not core) with your desired settings.

dev.hwpstate_intel.N.epp=Y


Buradaki N, iş parçacığı numarasını temsil eder. 4 iş parçacıklı çift çekirdekli bir CPU'da bu tür 4 satırınız olacaktır. 8 iş parçacıklı sekiz çekirdekli bir CPU'da 8 satırınız olacaktır.

Y değeri şu anlama gelir:

0 – maksimum performans

50 – dengeli (varsayılan)

100 – maksimum güç tasarrufu

En fazla güç tasarrufunu elde etmek için, aşağıda gösterildiği gibi tüm dişler için 100 değerini kullanırsınız.

dev.hwpstate_intel.0.epp=100

dev.hwpstate_intel.1.epp=100

dev.hwpstate_intel.2.epp=100

dev.hwpstate_intel.3.epp=100

dev.hwpstate_intel.4.epp=100

dev.hwpstate_intel.5.epp=100

dev.hwpstate_intel.6.epp=100

dev.hwpstate_intel.7.epp=100


Elbette tek bir diş için tam performans kullanabilir, dengeli bir iş parçacığı tutabilir ve aşağıda gösterildiği gibi dişlerin geri kalanında güç tasarrufu sağlayabilirsiniz.

dev.hwpstate_intel.0.epp=0

dev.hwpstate_intel.1.epp=50

dev.hwpstate_intel.2.epp=100

dev.hwpstate_intel.3.epp=100

dev.hwpstate_intel.4.epp=100

dev.hwpstate_intel.5.epp=100

dev.hwpstate_intel.6.epp=100

dev.hwpstate_intel.7.epp=100


... ve pil yerine AC üzerinde çalışacaksanız, bu sınırsız gücü tüm dişler için 0 değerleriyle kullanmayı tercih edebilirsiniz.

sınırsız güç

Ayarlar aşağıdadır.

dev.hwpstate_intel.0.epp=0

dev.hwpstate_intel.1.epp=0

dev.hwpstate_intel.2.epp=0

dev.hwpstate_intel.3.epp=0

dev.hwpstate_intel.4.epp=0

dev.hwpstate_intel.5.epp=0

dev.hwpstate_intel.6.epp=0

dev.hwpstate_intel.7.epp=0


İdeal olarak, AC gücündeyken performans ayarlarını kullanır ve pille çalışırken güç tasarrufu modunda çalışırsınız. Bunu cron(8) daemon'da çalışan aşağıdaki basit komut dosyasıyla başarabilirsiniz.

#! /bin/sh


case $( sysctl -n hw.acpi.acline ) in


(0) # BATTERY

doas sysctl dev.hwpstate_intel.0.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.1.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.2.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.3.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.4.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.5.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.6.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.7.epp=100 1> /dev/null 2> /dev/null

;;


(1) # AC

doas sysctl dev.hwpstate_intel.0.epp=0 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.1.epp=50 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.2.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.3.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.4.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.5.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.6.epp=100 1> /dev/null 2> /dev/null

doas sysctl dev.hwpstate_intel.7.epp=100 1> /dev/null 2> /dev/null

;;


esac



... ve şimdi crontab(5) girişi. Burada ayrıca doas(1) izinlerine ihtiyacınız olduğunu varsayıyorum. Bunun yerine sudo(8) kullanıyorsanız komut dosyasını değiştirin.

% crontab -l

# INTEL/SPEED/SHIFT

* * * * * ~/scripts/acpi-intel-speed-shift.sh


Ne yazık ki, Intel Speed Shift CPU'lu dizüstü bilgisayarım olmadığından, ilk iki iş parçacığı için 0 ve 50'yi çalıştırmanın en iyi sonucu verip vermediğini bilmiyorum. Belki de daha fazla güç tasarrufu sağlamak için tüm iş parçacıklarını 100'e geçirmek daha iyidir. Gelecekte böyle bir dizüstü bilgisayarı ne zaman alacağımı size bildireceğim 🙂

EOF

ALINTI

HIZLI DÜZENLE

FAZLASI...


Administrator

Administrator


*****

Newbie

İletiler: 23

pvp4server

freekays

IP adresini göster (?)

#2


Bugün, 04:15 ÖÖ

powerd(8) [freebsd man sayfası]�

POWERD(8) BSD System Manager's Manual POWERD(8)


NAME


powerd -- system power control utility


SYNOPSIS


powerd [-a mode] [-b mode] [-i percent] [-m freq] [-M freq] [-n mode] [-p ival] [-P pidfile] [-r percent] [-v]


DESCRIPTION


The powerd utility monitors the system state and sets various power control options accordingly. It offers power-saving modes that can be

individually selected for operation on AC power or batteries.


maximum Choose the highest performance values. May be abbreviated as max.


minimum Choose the lowest performance values to get the most power savings. May be abbreviated as min.


adaptive Attempt to strike a balance by degrading performance when the system appears idle and increasing it when the system is busy. It

offers a good balance between a small performance loss for greatly increased power savings. May be abbreviated as adp.


hiadaptive Like adaptive mode, but tuned for systems where performance and interactivity are more important than power consumption. It

increases frequency faster, reduces frequency less aggressively, and will maintain full frequency for longer. May be abbreviated

as hadp.


The default mode is adaptive for battery power and hiadaptive for the rest.


powerd recognizes these runtime options:


-a mode Selects the mode to use while on AC power.


-b mode Selects the mode to use while on battery power.


-i percent Specifies the CPU load percent level when adaptive mode should begin to degrade performance to save power. The default is 50% or

lower.


-m freq Specifies the minimum frequency to throttle down to.


-M freq Specifies the maximum frequency to throttle up to.


-n mode Selects the mode to use normally when the AC line state is unknown.


-p ival Specifies a different polling interval (in milliseconds) for AC line state and system idle levels. The default is 250 ms.


-P pidfile Specifies an alternative file in which the process ID should be stored. The default is /var/run/powerd.pid.


-r percent Specifies the CPU load percent level where adaptive mode should consider the CPU running and increase performance. The default

is 75% or higher.


-v Verbose mode. Messages about power changes will be printed to stdout and powerd will operate in the foreground.


SEE ALSO


acpi(4), apm(4), cpufreq(4)


HISTORY


The powerd utility first appeared in FreeBSD 6.0.


AUTHORS


Colin Percival first wrote estctrl, the utility that powerd is based on. Nate Lawson then updated it for cpufreq(4), added features, and

wrote this manual page.


BUGS


The powerd utility should also power down idle disks and other components besides the CPU.


If powerd is used with power_profile, they may override each other.


The powerd utility should probably use the devctl(4) interface instead of polling for AC line state.


BSD

July 4, 2013 BSD

Bu İlgili Adam Sayfasına Göz Atın�

SYSMON_PSWITCH(9) BSD Kernel Developer's Manual SYSMON_PSWITCH(9)


NAME


sysmon_pswitch -- framework for power switches


SYNOPSIS


#incl#include/sysmon/sysmonvar.h>


int

sysmon_pswitch_register(struct sysmon_pswitch *smpsw);


void

sysmon_pswitch_unregister(struct sysmon_pswitch *smpsw);


void

sysmon_pswitch_event(struct sysmon_pswitch *smpsw, int event);


DESCRIPTION


The machine-independent sysmon_pswitch provides a framework for power management. The interface has been largely superceded by the pmf(9)

framework, but sysmon_pswitch is still used to manage power switches as well as related mechanical adapters and buttons. These are encapsu-

lated in the following structure:


struct sysmon_pswitch {

const char *smpsw_name; /* power switch name */

int smpsw_type; /* power switch type */


LIST_ENTRY(sysmon_pswitch) smpsw_list;

};


Unsurprisingly, smpsw_name specifies the name of the power switch and smpsw_type defines the type of it. The following types are defined:


PSWITCH_TYPE_POWER

PSWITCH_TYPE_SLEEP

PSWITCH_TYPE_LID

PSWITCH_TYPE_RESET

PSWITCH_TYPE_ACADAPTER

PSWITCH_TYPE_HOTKEY


If the type is PSWITCH_TYPE_HOTKEY, there are few predefined names that can be used for smpsw_name:


PSWITCH_HK_DISPLAY_CYCLE display-cycle

PSWITCH_HK_LOCK_SCREEN lock-screen

PSWITCH_HK_BATTERY_INFO battery-info

PSWITCH_HK_EJECT_BUTTON eject-button

PSWITCH_HK_ZOOM_BUTTON zoom-button

PSWITCH_HK_VENDOR_BUTTON vendor-button


Once a power switch event has been proceeded, sysmon_pswitch will inform the user space powerd(8), which will possibly execute a script

matching the type of the power switch.


FUNCTIONS


After the sysmon_pswitch structure has been initialized, a new power switch device can be registered by using sysmon_pswitch_register(). The

device can be detached from the framework by sysmon_pswitch_unregister().


The sysmon_pswitch_event() is used to signal a new power switch event. There are two possibilities for the value of event:


PSWITCH_EVENT_PRESSED A button has been pressed, the lid has been closed, the AC adapter is off, etc.


PSWITCH_EVENT_RELEASED A button has been released, the lid is open, the AC adapter is on, etc.


The corresponding events in powerd(8) are pressed and released.


SEE ALSO


powerd(8), pmf(9), sysmon_envsys(9), sysmon_taskq(9)


AUTHORS


Jason R. Thorpe <thorpej@NetBSD.org>

ALINTI

HIZLI DÜZENLE

FAZLASI...

Hiç yorum yok:

Yorum Gönder

Popüler Yayınlar