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