|
楼主 |
发表于 2008-11-29 17:02:55
|
显示全部楼层
http://heaven.branda.to/~thinker/GinGin_CGI.py/show_id_doc/268
参照此文没有 hw.acpi.thermal.tz0 。。。。
炎炎夏日, notebook 也會想罷工。自從上星期 notebook 因過熱,而頻頻自動關機,我就覺的納悶。今天又給我自動關機,於是我狠下心看看如何做電源管理。查了一些 man page 之後,終於有些心得。
以我的 notebook (panasonic R5) 為例,沒有風扇。因此只能使用 passive cooling 的方式來降溫,白話就是 CPU 降頻。透過設定 ACPI ,能讓 FreeBSD 在系統過熱時,自動降低 CPU 的頻率,減少發熱,進而達到降溫的目的。設定 ACPI 主要有三個部分要做,
1. enable passive cooling
2. 設定 passive cooling 的啟動溫度
3. 設定過溫度上限,以啟動關機程序
FreeBSD 的相關設定可以看 acpi_thermal(4) 。 Notebook 的設計,可能將機器劃分成數的區域 (zone)。每一個區域各自有其溫度感應器,可以透過 sysctl hw.acpi.thermal 取得
su-2.05b# sysctl hw.acpi.thermal
hw.acpi.thermal.min_runtime: 0
hw.acpi.thermal.polling_rate: 10
hw.acpi.thermal.user_override: 0
hw.acpi.thermal.tz0.temperature: 40.0C
hw.acpi.thermal.tz0.active: -1
hw.acpi.thermal.tz0.passive_cooling: 1
hw.acpi.thermal.tz0.thermal_flags: 0
hw.acpi.thermal.tz0._PSV: 73.0C
hw.acpi.thermal.tz0._HOT: -1
hw.acpi.thermal.tz0._CRT: 75.0C
hw.acpi.thermal.tz0._ACx: 73.0C -1 -1 -1 -1 -1 -1 -1 -1 -1
這台機器只有一個, tz0 就代表第一個 zone ,其溫度為攝氏 40 度 (hw.acpi.thermal.tz0.temperature) 。而我的 notebook 則有 tz0 和 tz1 兩個 zone 。
我的 notebook 是設定在攝氏 60 度時,啟動 passive cooling , 80 度時關機。因此在 /etc/sysctl.conf 包含下面設定
hw.acpi.thermal.user_override=1
hw.acpi.thermal.tz0._PSV=60
hw.acpi.thermal.tz0._CRT=80
hw.acpi.thermal.tz1.passive_cooling=1
hw.acpi.thermal.tz1._PSV=60
hw.acpi.thermal.tz1._CRT=80
其中 user_override 一定要設為 1 ,後面的設定才能生效。而我的 R5 ,不知什麼原故,無法設定 hw.acpi.thermal.tz0.passive_cooling=1 ,但其它設定卻能生效。 _PSV 是設定啟動 passive cooling 的溫度,而 _CRT 則是自動關機的溫度。
除了上面溫度控制的設定之外,降頻的程度也是可以設定的。透過設定 hw.acpi.cpu.cx_lowest 可以設定最大的降頻等級。
hw.acpi.cpu.cx_lowest=C2
這是我的 R6 所能達到的最大降頻等級。機器所支援的等級可以從 hw.acpi.cpu.cx_supported 查得。而目前 CPU 的工作頻率,則可透過 dev.cpu.0.freq 查得。若而第二顆 CPU ,則可查詢 dev.cpu.1.freq ,依此類推可以查更多的 CPU 。
降頻的方式雖然可行,但是電腦的速度會急速下降。最好的方案還是找間冷氣房待著吧!! 除了電腦,人腦也需要降溫。 |
|