深入瞭解laptop_mode

對UBUNTU6.06LTS中切入Laptop_mode模式的補充
UBUNTU6.06LTS版附帶的laptop-mode-tools是 1.11(2005-10-29日發佈)的版本,具最新的1.32版(2006-10-06日發佈)已相差14個版本,UBUNTU的laptop- mode-tools包已經非常舊啦,一年多的時間沒有維護和升級過啦。

爲了更好的用好laptop_mode_tools帶來的便利,強列推薦用戶升級到1.32版,
ubuntu的用戶可以到這裏下載:http://www.xs4all.nl/~bsamwel/laptop_mode/tools/downloads/debian/laptop-mode-tools_1.32-1_all.deb
新版本的功能修證和增強請參閱:http://www.xs4all.nl/~bsamwel/laptop_mode/tools/revision-history.html

附1.32版的安裝和啓動方法:
I、安裝:sudo dpkg -i laptop-mode-tools_1.32-1_all.deb
注:如果你已安裝過ubuntu附帶的1.11版,安裝過程中將提示你是替換舊版的配置文件和守護腳本,按Y鍵替換,N鍵保留,D鍵查看新舊版配置文件的不同,這裏請按Y鍵。
II、配置方法1.:sudo gedit /etc/default/acpi-support,更改ENABLE_LAPTOP_MODE=true
(注:這樣設置只爲允許啓動laptop_mode,而laptop_mode_tools的配置文件默認在切挽到電池供電時啓用 laptop_mode,如果你只想在電池供電狀態下使用laptop_mode請用此設置且不用再作其它設定如配置方法2)
配置方法2:sudo gedit /etc/laptop-mode/laptop-mode.conf更改ENABLE_LAPTOP_MODE_ON_AC=1,ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1
(注:在acpi-support中設置ENABLE_LAPTOP_MODE=true後,想在電源供電狀態啓動laptop_mode,或合上LCD時啓用laptop_mode請用)
III、啓動:新版的laptop_mode_tools,在你正確配置了相關配置文件後,會隨系統自動啓動。
你可以重新啓動laptop,鍵入cat /proc/sys/vm/laptop_mode看看,非零則正常啓動。
手動啓動方法如同laptop_mode_tools 1.11版,新版守護腳本增加了force-reload參數,你可以在必要情況下使用。

下面講講sudo laptop_mode status後的信息。
sudo laptop_mode 返回當前laptop_mode的狀態信息。

Mounts:安裝點,形同/etc/mtab,當前系統安裝點狀態。
和mounts相關的laptop_mode.conf設置:

CONTROL_NOATIME=0
控制文件系統掛起選項noatime,禁止更新文件的訪問時間,能大大提高效率。訪問時間不是一個太有用的屬性,修改/etc/fstab就可以了,
如:/etc/fstab中:/dev/fd0 /floppy auto user,noauto,noatime 0 0

CONTROL_MOUNT_OPTIONS=1
Change mount options on partitions in PARTITIONS?(partitions in PARTITIONS?不知怎樣理解?知道的請跟貼。謝謝!),你最好不要改變此設置。

Drive power status:驅動器電源狀態:
/dev/hda:
drive state is :active/idle
硬盤狀態:活動或空閒狀態
/dev/hdc:
drive state is :standby
光驅狀態:待命
(NOTE: drive settings affected by Laptop Mode cannot be retrieved.)
注意:laptop mode不能恢復受影響驅動器設置。
注:Drive power status受laptop_mode.conf配置影響,
CONTROL_HD_IDLE_TIMEOUT=1,值爲1時,控制硬盤空閒超時。
LM_AC_HD_IDLE_TIMEOUT_SECONDS=20:latop_mode模式電源供電時硬盤空閒超時秒數
LM_BATT_HD_IDLE_TIMEOUT_SECONDS=20:laptop_mode模式電池供時硬盤空閒超時秒數
NOLM_HD_IDLE_TIMEOUT_SECONDS=7200:非laptop_mode模式硬盤空閒超時秒數
這裏的硬盤空閒超時指的是設置磁盤驅動器低速運轉超時,磁盤根據此超時值決定在關閉主軸電機以節約能耗之前等待多長時間(無磁盤操作)。在這種狀態下,驅動器可能需要來響應一個接下來的磁盤訪問。
如上述laptop_mode模式下磁盤驅動器低帶運轉超時值爲20秒,非laptop_mode模式超時值爲2小時。
驅動器狀態:active/idle--活動/閒置指普通操作;standby--待命指低能耗模式,驅動器待命中;sleep--掛起指最低能耗模式,驅動器被完全關閉。

Readahead states:(超前讀狀態)
/dev/hda3: 3072 kB
/dev/hda9: 3072 kB
/dev/hda1: 3072 kB
/dev/hda5: 3072 kB
/dev/hda6: 3072 kB
/dev/hda7: 3072 kB
預備知識:所有的Linux文件系統使用一個共同的buffer cache來緩存底層的設備的數據緩衝區,這樣可以加速對於存放文件系統的物理設備的訪問,從而加快對文件系統的訪問。這個buffer cache獨立於文件系統,集成在Linux核心分配、讀和寫數據緩衝區的機制中。讓Linux文件系統獨立於底層的介質和支撐的設備驅動程序有特殊的好處。所有的塊結構的設備向Linux核心登記,並表現爲一個統一的,以塊爲基礎的,通常是異步的接口。甚至相對複雜的塊設備比如SCSI設備也是這樣。當真實的文件系統從底層的物理磁盤讀取數據的,引起塊設備驅動程序從它們控制的設備上讀取物理塊。在這個塊設備接口中集成了buffer cache。當文件系統讀取了塊的時候,它們被存放到了所有的文件系統和Linux核心共享的全局的buffer cache中。其中的buffer(緩衝區)用它們的塊編號和被讀取設備的一個唯一的標識符來標記。所以,如果相同的數據經常需要,它會從buffer cache中讀取,而不是從磁盤讀取(會花費更多時間)。一些設備支持超前讀(read ahead),數據塊會預先讀取,以備以後可能的讀取。
從而看出我的laptop的readahead數據爲3M.

Laptop Mode is allowed to run: /var/run/laptop-mode-enabled exists.
當/var/run/laptop-mode-enabled 文件存在時laptop mode充許運行。
此文件是你在配置文件acpi-support中更改ENABLE_LAPTOP_MODE=true時,守護腳本所產生的,也是你在電腦啓動時看到“Enabling laptop mode”提示時產產生的。

/proc/sys/vm/dirty_ratio: 60
該文件表示如果進程產生的髒數據到達系統整體內存的百分比,此時進程自行把髒數據寫回磁盤。缺省設置:40

/proc/sys/vm/dirty_background_ratio: 1
該文件表示髒數據到達系統整體內存的百分比,此時觸發pdflush進程把髒數據寫回磁盤。缺省設置:10

/proc/sys/vm/dirty_expire_centisecs: 36000
該文件表示如果髒數據在內存中駐留時間超過該值,pdflush進程在下一次將把這些數據寫回磁盤。缺省設置:3000(1/100秒)

/proc/sys/vm/dirty_writeback_centisecs: 36000
該文件表示pdflush進程週期性間隔多久把髒數據寫回磁盤。缺省設置:500(1/100秒)

有關髒數據的處理的相關設置:

LM_DIRTY_RATIO=60:含義請見status輸出的/proc/sys/vm/dirty_ration部分,此處是指laptop_mode模式下的設置。
NOLM_DIRTY_RATIO=40:含義請見status輸出的/proc/sys/vm/dirty_ration部分,此處是指非laptop_mode模式下的系統默認設置。
LM_DIRTY_BACKGROUND_RATIO=1:含義請見status輸出的/proc/sys/vm/dirty_background_ratio部分,此處是指laptop_mode模式下的設置。
NOLM_DIRTY_BACKGROUND_RATIO=10含義請見status輸出的/proc/sys/vm/dirty_background_ratio部分,此處是指laptop_mode模式下的系統默認設置。

有關磁盤行爲的其它設置:

CONTROL_HD_WRITECACHE=0
控制磁盤驅動器的寫緩存特性,值0爲關閉,1爲打開,此值直接影響到*_HD_WRITECACHE的設置。
NOLM_AC_HD_WRITECACHE=1
非laptop_mode模式電源適配器供電時磁盤驅動器的寫緩存行爲,值0爲關閉,1爲打開;
NOLM_BATT_HD_WRITECACHE=0
非laptop_mode模式電源供電時磁盤驅動器的寫緩存行爲,值0爲關閉,1爲打開;
LM_HD_WRITECACHE=0
laptop_mode模式磁盤驅動器的寫緩存行爲,值0爲關閉,1爲打開;

CONTROL_HD_POWERMGMT=0
控制磁盤驅動器的高級電源管理(請先確定你的磁盤是否支持APM),值0爲關閉,1爲打開;此值直接影響到*_HD_POWERMGMT的設置。
*_HD_POWERMGMT的值(1-255),低參數值獲得更好的電源管理,高參數值獲得更好的性能,值爲255時關閉磁盤APM支持。
BATT_HD_POWERMGMT=1
電池供電時磁盤驅動器的電源管理,更省電。
LM_AC_HD_POWERMGMT=255
laptop_mode模式電源適配器供電時的電源管理,這裏是關閉磁盤APM支持。
NOLM_AC_HD_POWERMGMT=255
非laptop_mode模式電源適配器供電時的電源管理,這裏是關閉磁盤APM支持。

*_MAX_LOST_WORK_SECONDS:
當你係統崩潰或切斷電源時,將丟失內存中多少鈔內的數據。
LM_BATT_MAX_LOST_WORK_SECONDS=600
laptop_mode模式,電池供電時,若系統崩潰或斷電時,將丟失600秒內的數據
LM_AC_MAX_LOST_WORK_SECONDS=360
laptop_mode模式,電源供電時,若系統崩潰或斷電時,將丟失360秒內的數據

LM_SECONDS_BEFORE_SYNC=2:
laptop_mode模式,磁盤在進入空閒狀態前幾秒鐘同步數據。


/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq: 531672
cpu變頻之當前頻率

/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq: 1528557
cpu變頻之最大頻率

/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:531672
cpu變頻之最小頻率

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:userspace
cpu變頻之頻率調節器

注:有關laptop_mode的CPU變頻設定(該功能工作於2.6系統的內核),受/etc/laptop-mode/laptop-mode.conf文件的影響,
如果你是AMD的CPU,建意用AMD的PowerNow功能,ubuntu中的powernow腳本也是建立在cpufreq的基礎上。
AMD CPU PowerNow的用法是在/etc/fstab中增加一行代碼sysfs /sys sysfs defaults 0 0。
起用laptop_mode模式的CPU變頻功能:更改CONTROL_CPU_FREQUENCY=1,
BATT_CPU_*:在電池供電時CPU變頻設定,
LM_AC_CUP_*:laptop_mode模式電源供電時CPU進行變頻設定,
NOLM_AC_CUP_*:非laptop_mode模式電源供電時CPU進行變頻設定,
可用的CPU頻率請見:/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
可以的CPU調節器請見:/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
CONTROL_CPU_THROTTLING=0
如果你的CPU不支持變頻設定,只支持過熱保護時請用(此功能多用於P4cpu,amd不適用),
CPU過熱保護降頻,可用的降頻模式請見:/proc/acpi/processor/CPU*/throttling,
若*_CPU_THROTTLING=maximum則CPU運行非常慢!
若*_CPU_THROTTLING=minimum則CPU運行較快!
若*_CPU_THROTTLING=medium則是CPU一半的頻率運行!

CPU 過熱保護降頻跟intel speed step不同。speed step的降頻是根據CPU負荷自動調整工作頻率的機制,它可以讓CPU在兩種工作模式之間隨意地切換,即接交流電時的最大性能模式和電池狀態時的節電模式,其目的在於降低發熱和功耗;而CPU過熱保護降頻(即 CPU throttle)屬於硬件過熱保護技術,當CPU內部溫度超過一定臨界值時,爲保護CPU不被燒燬而進行’降頻’。
CPU throttle降頻機制的原理是,當傳感器檢測到CPU內部溫度超過臨界值時,開始在CPU時鐘週期中插入空閒週期然後再送入ALU(算術邏輯運算單元)。ALU是CPU中是真正負責運算的部件,因爲此時ALU的頻率爲CPU時鐘主頻的一半,所以此時CPU性能也就降半。


/proc/acpi/button/lid/LID/state:
state: open
laptop的屏幕開合鍵狀態,laptop-mode.conf的配置項ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED將會用到此狀態,若此配置項值爲1,則合上屏幕時會進入laptop_mode模式。
laptop的LCD通常是個能源消耗大戶,以至於LCD的開合,LCD的亮度調節都對laptop的能源有個重大影響,至於laptop的屏幕開合鍵狀態及相關執行動作,請見系統菜單system-preferences-power management內容。

/proc/acpi/ac_adapter/AC/state:
state: on-line
laptop-mode.conf的配置項ENABLE_LAPTOP_MODE_ON_AC將會用到此狀態,若此配置項值爲1,則可以在電源適配器供電時使用laptop_mode模式。
laptop的電源適配器狀態。on-line表示在電源適配器供電模式,off-line表示在電池供電模式。
至於laptop的電源狀態及相關執行動作,請見系統菜單system-preferences-power management內容。

/proc/acpi/battery/CMB1/state:
present: yes
capacity state: ok
charging state: discharging
present rate: 0 mA
remaining capacity: 4000 mAh
present voltage: 12450 mV

/proc/acpi/battery/CMB2/state:
present: no

其它status中無表示的laptop_mode.conf配置

CONTRON_SYSLOG_CONF
CONTRON_SYSLOG_CONF=0:是否用laptop_mode_tools來控制syslogd,值0則否,值1則是;當值1 時,laptop_mode_tools則把原始的syslogd配置文件,備份爲/etc/syslog.conf.no-lm,當系統爲非 laptop_mode模式時則還原爲原始的syslogd配置文件。

LM_AC_SYSLOG_CONF=/etc/syslog-on-ac-with-lm.conf
Laptop_mode模式用電源適配器供電時syslog文件爲:/etc/syslog-on-ac-with-lm.conf

NOLM_AC_SYSLOG_CONF=/etc/syslog-on-ac-without-lm.conf
非Laptop_mode模式用電源適配器供電時syslog文件爲:/etc/syslog-on-ac-without-lm.conf

BATT_SYSLOG_CONF=/etc/syslog-on-battery.conf
電池供電時syslog文件爲:/etc/syslog-on-battery.conf

SYSLOG_CONF_SIGNAL_PROGRAM=syslogd
當產生syslog的配置文件被改變或替換時信號通知的程式爲syslogd
SYSLOG_CONF=/etc/syslog.conf
原始syslogd配置文件爲/etc/syslog.conf

CONTROL_START_STOP=1:laptop_mode_tools能自動開始和結束程序在不同的電源供電情況下。
簡略點講:你可以放置自已編寫的腳本到/etc/laptop-mode/batt-stop, batt-start, lm-ac-stop,lm-ac-start, nolm-ac-stop,nolm-ac-start文目下,切換不同的供電情況時,將執行相關目錄下的腳本。腳本的編寫要求是可以傳遞"start" 或"stop"參數,如切換不同電源供電情況時將傳遞觸發此情況之前所執行腳本的"stop"參數,和現在將執行腳本的"start"參數。
什麼時候會用到此功能,比如,你在從桌面拿開laptop,到會議室時,可能想讓電腦作些什麼例行操作,然後由會議室回到辦會桌時,又能讓電腦作些什麼例行操作之類的。大家自已想吧。


CONTROL_DPMS_STANDBY
CONTROL_DPMS_STANDBY=0:是否控制DPMS(顯示器電源管理系統),DPMS通常支持兩種模式Standby(待機), Suspend(掛起)。值0則否,值1則控制DPMS(顯示器電電源管理信號)待命。
顯示器工作狀態的控制既可以由BIOS來完成,也可以在OS中設定。在BIOS電源管理設置項中,如果將 “Video off method(視頻關閉方式)”交給DPMS,當在一定時間內沒有對計算機進行操作後,顯示器就會進入待機狀態,電源指示燈閃爍;如果再隔一段時間仍未對計算機進行操作,顯示器則進入節能效果更佳的掛起狀態,此時電源指示燈爲黃色(正常顯示時爲綠色)。
待機狀態下,顯卡停止輸出場同步信號,顯示器中場掃描電路停止工作,但行電路繼續工作,燈絲也繼續給陰極加熱,雖然顯示器處於黑屏,但可以被瞬間喚醒;
掛起狀態下,顯卡同時停止行、場掃描信號輸出,顯示器行、場掃描電路均停止工作,燈絲供電如果從行電路獲得,此時燈絲也不亮了。掛起狀態下只有電源維持工作,耗電量很少,但喚醒時間也較長。
提示,更多更祥細的有關顯示器電源管理可到BIOS菜單配置。

BATT_DPMS_STANDBY=300:電池供電下顯示器空閒超過5分種進入待機狀態。
LM_AC_DPMS_STANDBY=1200:laptop_mode模式電源適配器供電下熒屏顯示器超過20分種進入待機狀態。
NOLM_AC_DPMS_STANDBY=1200:非laptop_mode模式電源適配器供電下熒屏顯示器超過20分種進入待機狀態。

CONTROL_TERMINAL=0
laptop_mode_tools是否控制終端(顯示輸出終端)關閉。值0爲否,值1則是。
BATT_TERMINAL_BLANK_MINUTES=1
BATT_TERMINAL_POWERDOWN_MINUTES=2
電池供電情況下顯示輸出關閉和斷電等候時間。
LM_AC_TERMINAL_BLANK_MINUTES=10
LM_AC_TERMINAL_POWERDOWN_MINUTES=10
laptop_mode模式電源適配器供電情況下顯示輸出關閉和斷電等候時間。
NOLM_AC_TERMINAL_BLANK_MINUTES=10
NOLM_AC_TERMINAL_POWERDOWN_MINUTES=50
非laptop_mode模式電源適配器供電情況下顯示輸出關閉和斷電等候時間。
上述這些設置指明瞭在多久時間後顯示輸出終端關閉並斷電。如BLANK_MINUTES=2 and POWERDOWN_MINUTES=5意味着顯示輸出設備將在7分鐘之後關閉並斷電。
參數值的範圍值在1到60分鐘間,值0則表示禁止。


ENABLE_AUTO_HIBERNATION
ENABLE_AUTO_HIBERNATION=0:當電池將放完電時,是否允許laptop_mode_tools控制laptop自動進入睡眠,值0爲否,值1則是。
HIBERNATE_COMMAND=/usr/sbin/hibernate:當觸發電腦自動睡眠時將執行的命令爲/usr/sbin/hibernate.
AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT=2:當電池剩餘電量爲總電池充電量的百分之幾時電腦將自動睡眠。
AUTO_HIBERNATION_ON_CRITICAL_BATTERY_LEVEL=1:當電池報告其放電到緊急情況時將啓動電腦自動睡眠。

下面是一些系統內核默認參數,如果你不知道你要作什麼,請不要隨便改變它。
DEF_UPDATE=5
DEF_XFS_AGE_BUFFER=15
DEF_XFS_SYNC_INTERVAL=30
DEF_XFS_BUFD_INTERVAL=1
DEF_MAX_AGE=30
XFS_HZ=100

總結:本文通過結合laptop_mode_tools的輸出信息來講解laptop_mode_tools的配置文件,講述了加載點控制、文件系統超前預讀緩衝設置、髒數據處理、磁碟驅動器寫緩衝、驅動器電源控制、內存數據同步時間、CPU變頻及CPU過熱保護設置、顯示輸出設備節省方案等方法相關知識。希望大家用好這個2.6內核加入的laptop_mode模式,用好你的laptop,也希望對想深入瞭解系統和對系統優化感興趣的朋友啓一個拋磚引玉的作用。
注:本文原創,傳載請註明出處。謝謝!

來自:http://kw-gift.com/blog/index.php?entry=entry061025-180208
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章