免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1716 | 回复: 0
打印 上一主题 下一主题

linux power managment [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-14 15:40 |只看该作者 |倒序浏览

发信人: sunway (sunway), 信区: Linux
标  题: [转帖]電源管理指引
发信站: BBS 北邮人论坛站 (Sun Aug 21 21:11:41 2005), 站内
  
  
電源管理指引
內容:
  
1. 介紹
  
為什麼需要電源管理?
  
筆記型電腦電池的容量和持續力在過去幾年已有很大的改善,然而現今的處理器較過去消耗更多能源,而且新一代筆記型電腦引進越來越多的高耗電配備,這就是為
什麼電源管理愈形重要的原因。要延長電池的持續力並不一定要買另一顆電池,良好運用智慧型電源管理政策就能獲得很大的改善。
  
概要
  
請注意這份文件說明 筆記型電腦 的電源管理。雖然一些章節可能可以適用於 伺服器,其他的章節卻不行,而且可能造成損害。請不要將這份指引應用到伺服器上,除非您很清楚知道您在做什麼。
  
由於這份指引很長,這裡先給個簡短的概述,幫助您了解大概的內容。
  
在 前提要件 這一章會談到設定一些基本的要求,這些將在接下來討論各種設備設定的章節內會用到,這些包括 BIOS 和 kernel 的設定,還有使
用者端的簡化手續。接下來三個章節將專注於特別耗電的設備 ─ 處理器,螢幕和硬碟,它們可以被個別設定,CPU 電源管理 展示如何調整處理器的頻率,
而能夠在不甚影響效能的前提下,達到省電最大化。幾個避免您的硬碟作不必要運轉的小技巧會在 硬碟電源管理 提到(順便可以降低噪音程度)。最後在 其他
配備的電源管理 一章,我們會說明一些關於無線網路和 USB 週邊應注意的事項。另外有個章節專門講述 睡眠狀態 (雖然還是實驗性質)。最後 問題排
除 列舉常見的陷阱。
  
各元件的電源預算
  
圖示 1.1: 各元件的電源預算
Fig. 1: 那種元件最耗能源?
  
幾乎所有元件都可以在不同的狀態下運作 ─ 停止,睡眠,閒置,運作是其中幾種 ─ 耗費不同程度的能源。很大部份能源是消耗在 LCD 螢幕、CPU、
晶片組和硬碟。通常您可以啟動 BIOS 內不倚賴作業系統的電源管理,但是在作業系統內做些智慧型的設定,針對不同情況做出調整,可以達到更有效的能源
運用。
  
2. 前提要件
  
需要先完成的事情
  
我們將會談如何使各種設備有電源管理的能力,但是在此之前,請您先確認某些前提要件已經符合。在取得 BIOS 設定之後,一些 kernel 的選項應
該要啟動 ─ 大致上有 ACPI、睡眠狀態和 CPU 變頻。大多時候省電的代價是犧牲效能和反應延遲,所以應該在電力來源是電池時才啟動。因此設定一
個新的執行階層(runlevel) battery 是很方便的。
  
BIOS 部份
  
第一步,看看您 BIOS 電源管理的設定,最好的作法是整合 BIOS 和作業系統的政策,但是現在先取消 BIOS 的部份,這會確保 BIOS 的設定不去干擾到您的政策。不要忘記在您做好所有設定之後,把 BIOS 設定重新開啟。
  
設定 kernel
  
Kernel 內 ACPI(Advanced Configuration and Power Interface)的支援還在持續加強中,所以選擇較新的 kernel 會讓您獲得更多功能。
  
在 kernel 設定中,啟動下列選項:
  
原始碼 2.1: Kernel 電源管理最基本設定 (Kernel 2.6)
  
Power Management Options --->
   
  • Power Management Support
       [ ] Software Suspend
       [ ] Suspend-to-Disk Support
      
       ACPI( Advanced Configuration and Power Interface ) Support --->
         
  • ACPI Support
         [ ]   Sleep States
            AC Adapter
            Battery
            Button
            Fan
            Processor
              Thermal Zone
            ASUS/Medion Laptop Extras
            Toshiba Laptop Extras
         [ ]   Debug Statements
          
       CPU Frequency Scaling --->
         
  • CPU Frequency scaling
               Default CPUFreq governor (userspace)
            'performance' governor
            'powersave' governor
            CPU frequency table helpers
          ACPI Processor P-States driver
          CPUFreq driver for your processor
      
    您可以自行決定要不要勾選 Sofrware Suspend、Suspend-to-Disk 和 Sleep States(見下面章節)。如果您的筆記型電腦是華碩、Medion 或 Toshiba,請啟動相關的選項。
      
    開始編譯 kernel,確認啟動時載入需要的模組,然後重開機使用您新編好有 ACPI 支援的 kernel。接著執行 emerge sys-
    apps/acpid 安裝 acpi daemon,這個程式會通知您相關事件的發生,例如從使用 AC 電源轉到使用電池或是闔上螢幕蓋。確認
    button 模組有載入如果您沒有編進 kernel,然後鍵入 /etc/init.d/acpid start 啟動 ac pid。執行 rc
    -update add acpid default 讓它在開機時自動載入。您很快就會知道如何使用這個程式。
      
    原始碼 2.2: 安裝 acpid
      
    # emerge sys-apps/acpid
    # modprobe button
    # /etc/init.d/acpid start
    # rc-update add acpid default
      
    建立新的 "battery" 執行階層
      
    預設的政策只有在必要時才會啟動電源管理,就是電力來源是電池的時候。為使 AC 電源和電池電源之間的轉換更方便,建立一個新的執行階層 battery 來儲存所有電源管理啟動和停止的 scripts。
      
    注意: 如果您不想新設執行階層,您可以略過這一節,這不會有影響。但是略過這一步會使得接下來的動作設定上比較不直接,所以下一節會假設執行階層 battery 存在。
      
    原始碼 2.3: 建立 battery 執行階層
      
    # cd /etc/runlevels
    # cp -a default battery
      
    完畢。您新設的執行階層 battery 已經包含了所有 default 內的設定,只差還無法在兩者間自動轉換。該是想辦法改正的時候了。
      
    回應 ACPI 事件
      
    典型的 ACPI 事件有闔上螢幕蓋、變換電力來源或按下睡眠按鈕,所有 kernel 認識的 acpi 事件都會被 acpid 攔截並呼叫 /etc/acpi/default.sh。要支援執行階層轉換,下面給個簡單的修改範例:
      
    原始碼 2.4: 運用 acpid 達到事件驅動的執行階層轉換
      
    #!/bin/sh
      
    set $*
      
    group=${1/\/*/}
    action=${1/*\//}
      
    # AC 模式下的執行階層
    RLVL_AC="default"
    # 電池模式下的執行階層
    RLVL_BATTERY="battery"
      
    # 指示 AC 狀態的檔案,使用前請先確定檔案名稱
    AC_STATE="/proc/acpi/ac_adapter/AC/state"
    # 此行表示在 AC 模式
    AC_ON="on-line"
    # 此行表示在電池模式
    AC_OFF="off-line"
      
    function SwitchRunlevel() {
       if [[ "$(grep ${AC_OFF} ${AC_STATE})" != "" && "$(cat /var/lib/init.d/softlevel)" != "${RLVL_BATTERY}" ]]
       then
         logger "Switching to ${RLVL_BATTERY} runlevel"
         /sbin/rc ${RLVL_BATTERY}
       elif [[ "$(grep ${AC_ON} ${AC_STATE})" != "" && "$(cat /var/lib/init.d/softlevel)" != "${RLVL_AC}" ]]
       then
         logger "Switching to ${RLVL_AC} runlevel"
         /sbin/rc ${RLVL_AC}
       fi
    }
      
      
    case "$group" in
       battery)
         case "$action" in
           battery)  
             SwitchRunlevel
             ;;
           *)  
             logger "ACPI group battery / action $action is not defined"
             ;;
         esac
         ;;
      
       ac_adapter)
         case "$action" in
           ac_adapter)
             SwitchRunlevel
             ;;
           *)
             logger "ACPI group ac_adapter / action $action is not defined"
             ;;
         esac
         ;;
       *)
         logger "ACPI group $group / action $action is not defined"
         ;;
    esac
      
    試試看:把電源插頭插上或拔下,然後看看 syslog 內有沒有出現 "Switching to AC mode" 或 "Switching to battery mode" 的訊息。
      
    由於事件機制設計的關係,您的筆記型電腦無論電力來源為何,在開機時都會進入 default 執行階層。您可以在 boot loader 內增加一行
    softlevel=boot,但是它無法記住這個設定。一個比較好的方法是在開機程序要完成前,假造一個 ACPI 事件,讓
    /etc/acpi/default.sh script 決定需不需要轉換執行階層。用您喜歡的編輯器開啟
    /etc/conf.d/local.start 並加入以下程式:
      
    原始碼 2.5: 編輯 local.start 以便開機時能轉換執行階層
      
    # 如果使用電池,假造 acpi 事件來轉換執行階層
    /etc/acpi/default.sh "battery/battery"
      
    有了這些前置準備,您就能夠針對個別設備啟動電源管理政策。
      
    3. CPU 電源管理
      
    手動設定頻率
      
    降低 CPU 的速度和電壓有兩個好處:一方面減少能源消耗,另一方面是熱量的改善,因為您的系統不會像全速運轉時那麼熱。顯而易見的,主要的缺點是效能較差。降低處理器速度是在效能的損失和能源的節省中求取平衡。
      
    注意: 並非所有筆記型電腦都支援變頻。如果您不確定,問題排除 一章有個列表,列舉有支援的處理器,您可以看看您的處理器是否在其中。
      
    是測試 CPU 變頻是否能正常運作的時候了。為了熟悉 kernel 提供的介面,先用手動改變速度。要設定 CPU 速度,鍵入:
      
    原始碼 3.1: 手動變更 CPU 速度
      
    (取得現在頻率)
    # grep "cpu MHz" /proc/cpuinfo
      
    (列出支援頻率,這有可能行不通)
    # cd /sys/devices/system/cpu/cpu0/cpufreq/
    # cat scaling_available_frequencies
      
    (改變頻率到 1 GHz (100000 KHz)
    用您筆記型電腦支援的頻率代換)
    # echo -n userspace > scaling_governor
    # echo -n 1000000 > scaling_setspeed
      
    (確認頻率有改)
    # grep "cpu MHz" /proc/cpuinfo
      
    如果您遇到錯誤訊息,請參考指引的最後一章 問題排除。
      
    您也可以寫入 scaling_max_freq 和 scaling_min_freq 來設定頻率的上下界。
      
    注意: 有些 kernel 似乎在 /proc/cpuinfo 的更新上有點不穩定,如果您沒看到該有的變化,這並不意味 CPU 的頻率沒改。如果
    您遇到這個狀況,執行 emerge x86info,照指令更新您的 kernel,並用 x86info -mhz 查看現在的頻率。
      
    自動頻率調整
      
    上述的方法很好,可是不適合日復一日的例行工作,最好是讓您的系統自動設定適當的頻率。幾個在使用者空間執行的程式可以幫您達到這個目標。下面的表格提供簡單的介紹,輔助您選擇合適的程式。
    名稱     優點     缺點
    cpudyn     支援硬碟待命      
    cpufreq     可以做精密的設定     設定複雜
    speedfreq     小巧但功能強大
    client/server 介面很好用     只是用於 kernel 2.6 系列
    powernowd     支援多處理器      
      
    根據工作負載調整頻率看似簡單,卻不是件容易的工作。一個設計不良的演算法可能會造成頻繁的頻率轉換,或是把頻率設太高而造成能源浪費。
      
    該選擇那個程式?如果您無法決定,先試試 speedfreq:
      
    原始碼 3.2: 安裝 speedfreq
      
    # emerge speedfreq
    # rc-update add speedfreq battery
      
    編輯 /etc/conf.d/speedfreq 來設定 speedfreq。舉例來說,如果您希望使用者可以變更政策,把 SPEEDFREQ_OPTS="" 改成 SPEEDFREQ_OPTS="-u",改完就啟動 daemon。
      
    原始碼 3.3: 啟動 speedfreq
      
    # /etc/init.d/speedfreq start
      
    cpufreq 的設定就比較複雜一點。
      
    警告: 不要同時執行上面的程式,這可能造成頻率經常變換的混亂。如果您安裝了 speedfreq,請暫時略過 cpufreq。
      
    原始碼 3.4: 安裝 cpufreqd
      
    # emerge cpufreqd
    # rc-update add cpufreqd battery
      
    cpufreqd 有提供預設值在 /etc/cpufreqd.conf,您可以根據您的需求修改設定檔。下面的例子會較預設值節省更多能源 ─ 當然,效能會比較差。
      
    原始碼 3.5: cpufreqd 設定檔範例
      
    [General]
    pidfile=/var/run/cpufreqd.pid
    poll_interval=2
    pm_type=acpi
    # 使用下面設定來啟動 ACPI workaround(參考 cpufreqd.conf(5))
    # acpi_workaround=1
    verbosity=4 #(如果您想要最少的記錄,把值設成 5)
      
    # 最大效能
    [Profile]
    name=ac
    minfreq=600000
    maxfreq=1400000
    policy=performance
      
    # 最大化能源節約
    [Profile]
    name=battery
    minfreq=600000
    maxfreq=900000
    policy=powersave
      
    # 固定頻率
    [Profile]
    name=dvd
    minfreq=900000
    maxfreq=1100000
    policy=powersave
      
    # AC 電源時使用最大效能
    [Rule]
    name=ac_on
    ac=on
    profile=ac
      
    # 如果電池狀態許可,編譯程式應該要快速
    [Rule]
    name=compiling
    ac=off
    battery_interval=30-100
    programs=emerge,make,gcc,cpp
    cpu_interval=0-100
    profile=ac
      
    # 慢速的 CPU 頻率會使 DVD 播放不順
    # 電玩等程式同樣適用
    [Rule]
    name=dvd_watching
    ac=off
    battery_interval=15-100
    programs=xine,mplayer,avidemux,kaffeine,kmplayer
    cpu_interval=0-100
    profile=dvd
      
    # 如果上述規則都不適用,最大化能源節約
    [Rule]
    name=battery_on
    ac=off
    battery_interval=0-100
    cpu_interval=0-100
    profile=battery
      
    cpudyn 和 powernowd 的安裝方式與 speedfreq 相同.
      
    最後要檢查的是您設定的新政策確實做好它的工作。一個簡單的方法,在您用筆記型電腦工作時監測 CPU 速度:
      
    原始碼 3.6: 監測 CPU 速度
      
    # watch -n 1 grep "cpu MHz" /proc/cpuinfo
      
    如果 /proc/cpuinfo 沒有被更新(參考前面討論),用下面的指令監看 CPU 頻率:
      
    原始碼 3.7: 監測 CPU 速度的另一種方法
      
    # watch -n 1 x86info -mhz
      
    取決於您的設定,CPU 的速度應該在負載大時增加,在不活動時減低或保持不變。
      
    4. LCD 電源管理
      
    能源消耗者第一名
      
    如 圖 1.1 所示,LCD 螢幕消耗最大部份的能源(不見得適用於 non-mobile CPU)。因此在不使用時關閉螢幕,在合適時減低背景亮度,都成為重要的關鍵。大部分筆記型電腦都有提供操控背景亮度的功能。
      
    首先要檢查螢幕 待命/暫停/關閉 的時機設定。因為不同的視窗管理程式設定方式都不相同,所以我將這部份留給您自行解決。提供兩個常見的地方做參考:要
    空白終端機的畫面可用 setterm -blank 、setterm -
    powersave on 和 setterm -powerdown 。在 Xorg 下,修改
    /etc/X11/xorg.conf 如下:
      
    原始碼 4.1: Xorg 和 XFree86 暫停 LCD 的設定
      
    Section "ServerLayout"
       Identifier  [...]
       [...]
       Option  "BlankTime"  "5"  # 5 分鐘後空白螢幕(模擬的)
       Option  "StandbyTime"  "10"  # 10 分鐘後關閉螢幕(DPMS)
       Option  "SuspendTime"  "20"  # 20 分鐘後完全暫停
       Option  "OffTime"  "30"  # 半小時後關閉
       [...]
    EndSection
      
    [...]
      
    Section "Monitor"
       Identifier  [...]
       Option  "DPMS"  "true"
       [...]
    EndSection
      
    XFree86 和 /etc/X11/XF86Config 的設定完全一樣。
      
    更重要的也許是背景亮度的調暗。如果您有辦法運用工具程式存取亮度控制設定,寫個簡單的 script 以便在電池模式下調暗背景光源,然後將它加到 battery 執行階層。
      
    5. 硬碟電源管理
      
    閒置時睡眠
      
    讓我們在不需要硬碟時,盡早將之設成睡眠狀態。我將展示兩種方法來達成這項工作。第一種是運用 cpudyn 對應碟電源管理的支援,啟用
    /etc/conf.d/cpudyn 內 "Disk Options" 部份的設定。如果要讓第一顆硬碟在休止 60 秒之後,進入睡眠狀態,您可
    以將檔案修改如下:
      
    原始碼 5.1: 使用 cpudyn 做硬碟待命
      
    ################################################
    # DISK OPTIONS
    # (disabled by default)
    ################################################
      
    #
    # 如果時限內硬碟沒有執行任何存取,
    # 硬碟將進入待命模式(單位為秒)
    #
      
    TIMEOUT=60
      
    #
    # 指定要休息的硬碟(用逗號分隔)
    #
      
    DISKS=/dev/hda
      
    第二種方法是使用簡單的 script 和指令 hdparm。建立檔案 /etc/init.d/pm.hda 如下:
      
    原始碼 5.2: 使用 hdparm 做硬碟待命
      
    #!/sbin/runscript
    start() {
       ebegin "Activating Power Management for Hard Drives"
       hdparm -q -S12 /dev/hda
       eend $?
    }
      
    stop () {
       ebegin "Deactivating Power Management for Hard Drives"
       hdparm -q -S253 /dev/hda
       eend $?
    }
      
    參看 man hdparm 來了解可用的選項。如果您的 script 準備好了,把它加到 battery 執行階層。
      
    原始碼 5.3: 自動化硬碟待命的設定
      
    # /sbin/depscan.sh
    # rc-update add pm.hda battery
      
    重要: 硬碟 sleep/spin down 的設定值要特別小心,設定值太小可能會磨耗您的硬碟而無法得到保固。
      
    延長閒置時間 ─ 筆記型電腦模式
      
    新近的 kernel(2.6.6 以後、最近 2.4 版本和其他修正版)包含了所謂的 筆記型電腦模式(laptop-mode),當啟動時,
    dirty buffers 會在讀取時或 10 分鐘間隔後(而不是 30 秒)被寫入硬碟,這會使硬碟需要轉動的時間降到最少。
      
    要啟動和停止筆記型電腦模式,新建 script /etc/init.d/laptop-mode,您可以使用包含在 /usr/src/linux/Documentation/laptop-mode.txt 提供的範例。準備好之後,確定它會被呼叫到。
      
    原始碼 5.4: 自動啟動筆記型電腦模式
      
    # rc-update add laptop-mode battery
      
    警告: 再一次提醒:硬碟 sleep/spin down 設定要特別小心,設定值太小可能磨耗您的硬碟而失去保固。請閱讀文件 laptop-
    mode.txt。確定在電池電力耗光之前,停止筆記型電腦模式,讓資料能被寫入硬碟 ─ 否則,您最起碼會失去最後 10 分鐘的工作成果。
      
    其他小技巧
      
    除了讓您的硬碟儘快進入睡眠模式,將硬碟存取減到最少也是個好主意。檢視經常寫入硬碟的程式 ─ syslogd 就是個可能人選。您可能不想要完全停掉
    那個程式,但是透過修改設定檔,避免把 "不必要" 的事情記錄下來,就能減少硬碟存取流量。Cups 也定期寫入硬碟,所以可以考慮停止這隻程式,而改
    在必要時手動啟動。
      
    原始碼 5.5: 在電池模式下停止 cups
      
    # rc-update del cupsd battery
      
    另一個可省電的地方是在電池模式下停止 swap。在撰寫 swapon/swapoff 轉換之前,請確定有足夠的 RAM 而且 swap 不是經常被使用,否則您會遇上大問題。
      
    如果您不想使用筆記型電腦模式,我們仍可以把某些目錄掛在 tmpfs ─ 寫入動作不會存到硬碟上而是到主記憶體,卸載時資料便遺失 ─ 來達到使硬碟
    存取最小化的目的。通常可以把 /tmp 用這種方式掛載起來 ─ 您不需要做特別的處理,因為無論是掛載在硬碟或 RAM 上,每次它的內容在重開機時
    都會自動清理掉。只要您確認有足夠的 RAM 而且沒有程式(如下載程式或壓縮工具)需要在 /tmp 下使用非常多空間。要使用這項功能,啟動您
    kernel 內 tmpfs 支援,然後在 /etc/fstab 加入一行文字:
      
    原始碼 5.6: 編輯 /etc/fstab 使 /tmp 更有機動性
      
    none  /tmp  tmpfs  size=32m  0 0
      
    警告: 特別留意 size 參數的設定,要依據您的系統做合適的改變。如果您不確定,請不要嘗試這個方法,它很容易成為效能的瓶頸。如果您想要讓
    /var/log 如此掛載,請確定在卸載前把記錄檔寫回硬碟上,這些動作是必須的。請勿嘗試用此方法掛載 /var/tmp ,Portage 使用
    這個目錄做編譯工作...
      
    6. 其他設備的電源管理
      
    無線電源管理
      
    無線網路卡能源消耗也不少,可以用類似 pm.hda script 的方式將它們加入電源管理模式。
      
    原始碼 6.1: WLAN 電源管理自動化
      
    #!/sbin/runscript
    start() {
       ebegin "Activating Power Management for Wireless LAN"
       iwconfig wlan0 power on power max period 3
       eend $?
    }
      
    stop () {
       ebegin "Deactivating Power Management for Wireless LAN"
       iwconfig wlan0 power off
       eend $?
    }
      
    啟動這個 script 會使 wlan0 在三秒鐘沒有流量之後進入電源管理模式。同硬碟 script 般,存成
    /etc/init.d/pm.wlan0 並加入 battery 執行階層。參看 man iwconfig 內更詳細的說明和選項。如果您的驅動
    程式和存取點(access point)支援 beacon time 變更,有可能可以節省更多能源。
      
    USB 電源管理
      
    USB 週邊要做到能源節省會面臨兩個問題:第一是像 USB 滑鼠、數位相機或是 USB 隨身碟這些配備一插上就會消耗能源,無法完全避免(除非在不
    用時移除)。第二是當 USB 設備插上時,USB host controller 會定期存取匯流排,這樣一來會使得 CPU 無法進入 C3/4
    睡眠模式。作業系統針對這個問題的解答是所謂的 "USB 選擇性暫停(selective suspend)",這項功能還沒有進入 kernel。
    USB 選擇性暫停只允許匯流排在設備運作時被存取。在這項功能實作出來之前,一個暴力解決辦法:把 USB 支援和設備驅動程式編譯成模組,然後用
    script 在不使用時(例如,闔上螢幕蓋時)移除它們。
      
    7. 睡眠狀態:睡眠、待命、suspend to disk
      
    概說
      
    ACPI 定義了不同的睡眠狀態,比較重要的有
      
         * S1 等同於 待命(Standby)
         * S3 等同於 Suspend to RAM 等同於 睡眠(Sleep)
         * S4 等同於 Suspend to Disk 等同於 冬眠(Hibernate)
      
    當系統沒有在使用時,可以進入這些狀態。關機不在選項中是因為開機程序耗費時間。
      
    睡眠、待命和冬眠
      
    ACPI 對這些睡眠狀態的支援被標記為實驗性質不是沒有原因的,APM 睡眠狀態較為穩定,但是您不能同時使用 APM 和 ACPI。
      
    警告: 雖然對於睡眠狀態的支援改善許多,它還是實驗性質。最起碼,我讓 swsusp2 和 suspend to RAM 成功運作,但是事先的警告仍是必須的:以下的動作很可能不僅無法成功,反而損害到您的資料或系統。
      
    目前有三種 S4 的實作方式,最早的是 swsusp;然後是 swsusp2,這隻程式有最好的介面設計(包括 bootsplash 支援),但是
    需要自己動手做 kernel 補釘;最晚出現的是 Suspend-to-Disk,一個 swsusp 的分支。
      
    如果上面這段話讓您感到困惑,請參考 特色比較。如果您還是不太清楚要選擇哪一個,先試試 swsusp2,看起來前景不錯。
      
    kernel 內相關部份如下:
      
    原始碼 7.1: Kernel 內不同待命狀態的設定
      
    Power Management Options --->
      
       (睡眠和待命)
       ACPI( Advanced Configuration and Power Interface ) Support --->
         
  • ACPI Support
            
  •    Sleep States
      
       (使用 swsup 冬眠)
       
  • Software Suspend (EXPERIMENTAL)
       
       (使用 swsusp2 冬眠)
       Software Suspend 2
         --- Image Storage(您最少需要選一個)
         
  •     Swap Writer
         --- Page Transformers
         
  •     LZF image compression
         (/dev/"在此填入您的 swap")    Default resume device name
      
       (使用 Suspend-to-Disk 冬眠)
       
  • Suspend-to-Disk Suport
       (/dev/"在此填入您的 swap") Default resume partition
      
    適當的設定啟動之後就可以編譯您的 kernel,然後鍵入 /proc/acpi/sleep 或是 cat /sys/power/state (分
    別適合 2.4 和 2.6 系列版本)看看有支援那幾種狀態。後者回傳給我的是 standby mem disk。要是使用 swsusp,需要指定
    kernel 參數 resume=/dev/"在此填入您的 swap"。如果開機因為影像(image)破損而無法完成,swsusp 用
    noresuem,Suspend-to-Disk 用 pmdisk=off,swsusp2 用 noresume2 做補救。
      
    要讓您的系統進入下列睡眠狀態,執行
      
    原始碼 7.2: 啟動睡眠狀態
      
    (kernel 2.4 系列)
    # echo 1 > /proc/acpi/sleep          (待命)
    # echo 3 > /proc/acpi/sleep          (睡眠)
      
    (kernel 2.6 系列)
    # echo -n standby > /sys/power/state (待命)
    # echo -n mem > /sys/power/state     (睡眠)
      
    (swsusp)
    # echo 4 > /proc/acpi/sleep          冬眠
      
    (Suspend-to-Disk)
    # echo -n disk > /sys/power/state    冬眠
      
    (swsusp2)
    # echo > /proc/swsusp/activate
      
    警告: 在您進行這些動作之前,請先備份您的資料。在執行其中任一個指令之前,先執行 sync,讓所有快取資料被寫回硬碟。先在沒有跑 X 的情況下試,然後再在 X 正在執行但沒有記錄時試。
      
    如果您遇到因為 uhci 或類似項目導致 kernel panics 的情況,試著將 USB 支援編譯成模組,然後在您的筆記型電腦進入睡眠狀態前先卸載模組。
      
    雖然上述方法應該可以讓 swsusp 和 Suspend-to-Disk 跑起來(我沒有說正常運作), swsusp2 需要額外的設定。首先要做的是用

    http://softwaresuspend.berlios.de/
    提供的補釘修改 kernel,然後安裝該網頁內提供的 hibernate script。
      
    8. 問題排除
      
    如果事情進行不順利...
      
    Q: 我試著改變 CPU 的頻率,但是 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 不存在。
      
    A: 請確認您的處理器支援 CPU 變頻,並且您所選的 CPUFreq 驅動程式是正確的。這裡列出 cpufreq(kernel 2.6.7)所
    支援的處理器:ARM Integrator, ARM-SA1100, ARM-SA1110, AMD Elan - SC400, SC410,
    AMD mobile K6-2+, AMD mobile K6-3+, AMD mobile Duron, AMD mobile Athlon,
    AMD Opteron, AMD Athlon 64, Cyrix Media GXm, 搭配某些晶片組的
    Intel mobile PIII 和 Intel mobile PIII-M, Intel Pentium 4, Intel Xeon,
    Intel Pentium M (Centrino), National Semiconductors Geode GX, Transmeta Crusoe,
    VIA Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, 某些 "PowerBook" 和
    "iBook2" ,還有其他一些 ACPI 2.0-compatible 系統上的處理器(只有在 ACPI/BIOS 介面上有
    "ACPI Processor Performance States" 選項時)。
      
    Q: 我的筆記型電腦支援變頻,但是 /sys/devices/system/cpu/cpu0/cpufreq/ 是空的。
      
    A: 用 dmesg | grep ACPI 檢查看看有沒有 ACPI 相關的錯誤訊息。試試更新 BIOS,尤其當有 DSDT 毀損的報告時。您也可以試著手動修復系統(當然這超出這份指引的範圍)。
      
    Q: 我的筆記型電腦支援變頻,但是從 /proc/cpuinfo 看來,速度從未改變過。
      
    A: 這看起來像是 kernel 的 bug。執行 emerge x86info,照指示更新您的 kernel,然後用 x86info -mhz 檢查現在的頻率。
      
    Q: 我可以改變 CPU 頻率,但是可改變的範圍不如其他作業系統大。
      
    A: 您可以把變頻和 ACPI throttling 一起使用,這樣可以獲得更低的頻率。注意 throttling 並不會節省太多能源,而且它主
    要的功能是在熱量管理(讓您的筆記型電腦保持涼爽安靜)。您可以用 cat /proc/acpi/processor/CPU/throttling
    來讀取現在 throttling 的狀態,然後用 echo -n "0:x" >
    /proc/acpi/processor/CPU/limit 來改變它的值,指令中的 x 是
    /proc/acpi/processor/CPU/throttling 中列舉的狀態 Tx 。
      
    Q: 電池持續時間好像變得比以前更糟糕了。
      
    A: 檢查您 BIOS 的設定,也許您忘了把某些設定重新啟動。
      
    Q: 我的電池已經充飽,但是 KDE 回報說只有 0% 剩下,然後就關機了。
      
    A: 檢查電池支援有編譯進您的 kernel。如果您把它編成模組,請確定此模組有載入。
      
    Q: 我有一台 Dell Inspiron 51xx,但是我收不到任何 ACPI 事件。
      
    A: 這似乎是個 kernel bug。請閱讀 這裡。
      
    Q: 我剛買了一個全新的電池,但是它卻只能撐幾分鐘!那裡出錯了?
      
    A: 首先依照製造商的說明指示將電池正確地充電。
      
    Q: 上面的回答都沒有幫助,我該怎麼辦。
      
    A: 有些所謂 "新" 電池其實是舊貨。試試下面的指令:
      
    原始碼 8.1: 詢查電池狀態
      
    $ grep capacity /proc/acpi/battery/BAT0/info
    design capacity:     47520 mWh
    last full capacity:  41830 mWh
      
    如果 "last full capacity" 與 design capacity 差很多,您的電池可能壞掉了。這時,該是您使用保固權利的時候了。
      
    這份文件是以 Creative Commons - 姓名標示-相同方式分享 授權條款發布
      
      
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94108/showart_1995911.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP