中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析SUSE Linux的CPU節電模式引發的故障案例

發布時間:2021-10-21 18:00:32 來源:億速云 閱讀:205 作者:柒染 欄目:云計算

如何解析SUSE Linux的CPU節電模式引發的故障案例,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

生產系統的一臺SUSE Linux10服務器,在深夜零點后突然失去響應了,遠程連接也無法登陸。安排駐場工程師去機房看看,發現服務器上各種指示燈均正常,網線也無松動。當接上鍵盤、鼠標后,現場工程師發現服務器無任何反應,鍵盤鼠標也無任何響應,服務器像冰凍休眠了一樣。因為這臺服務器是負載均衡服務器組中的一臺,即使離線也不影響業務。所以就讓現場工程師重啟了該服務器,重啟后發現一切正常,收集了日志后,發現有一段報錯代碼如下:

如何解析SUSE Linux的CPU節電模式引發的故障案例

根據英文提示:CPU不支持頻率調整,需要設置'CPUFREQ_ENABLED=no' 和SUSPEND2RAM_FORCE=yes 。

分析:現在服務器的CPU耗電很大,按需調節CPU頻率有對節能有重要的意義,目前多數Linux發行版都已經默認啟用了這個功能,但是也有一些LINUX發行版需要經過簡單的設置才行(啟用相關的模塊,并安裝CPU頻率調節程序)。實際上這個CPU的節電模式,也就是變頻技術,在負載不高的時候,CPU會自動降頻使用。cpufreq的驅動程序,就是用來動態調整CPU頻率以降低能源消耗的。但這個功能有的時候會有問題,比如當你沒有相應的模塊和頻率調節驅動時,會造成內核錯誤,進而引發服務器不響應。

我們可以看下系統中支持CPU頻率調整的模塊驅動

# cd /lib/modules/2.6.16.60-0.21-smp/kernel/arch/x86_64/kernel/cpufreq
web132:/lib/modules/2.6.16.60-0.21-smp/kernel/arch/x86_64/kernel/cpufreq # ls -l
total 104
-rw-r--r-- 1 root root 30264 May 6 2008 acpi-cpufreq.ko
-rw-r--r-- 1 root root 37808 May 6 2008 powernow-k8.ko
-rw-r--r-- 1 root root 29544 May 6 2008 speedstep-centrino.ko

加載的方法

#modprobe acpi-cpufreq

#modprobe powernow-k8

#modprobe speedstep-centrino

在本故障案例中,提示沒有cpufreq driver available,所以解決辦法

# vi /etc/powersave/cpufreq
CPUFREQ_ENABLED="no" (注:默認為yes)

重啟/etc/init.d/powersave,然后就生效了。

可以通過命令cpufreq-info 來查詢cpu頻率狀態
# cpufreq-info
cpufrequtils 0.4: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU
analyzing CPU 1:
no or unknown cpufreq driver is active on this CPU
analyzing CPU 2:
no or unknown cpufreq driver is active on this CPU
analyzing CPU 3:
no or unknown cpufreq driver is active on this CPU

如上顯示為關閉CPU頻率調整后的狀態顯示。

如果你的CPU支持頻率調整,系統會這樣顯示

# cpufreq-info
cpufrequtils 0.4: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 1.20 GHz - 2.50 GHz
available frequency steps: 2.50 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz
available cpufreq governors: ondemand, userspace, powersave, performance
current policy: frequency should be within 1.20 GHz and 2.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1.20 GHz (asserted by call to hardware).
analyzing CPU 1:
driver: centrino
CPUs which need to switch frequency at the same time: 1
hardware limits: 1.20 GHz - 2.50 GHz
available frequency steps: 2.50 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz
available cpufreq governors: ondemand, userspace, powersave, performance
current policy: frequency should be within 1.20 GHz and 2.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1.20 GHz (asserted by call to hardware).

analyzing CPU 2:
driver: centrino
CPUs which need to switch frequency at the same time: 1
hardware limits: 1.20 GHz - 2.50 GHz
available frequency steps: 2.50 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz
available cpufreq governors: ondemand, userspace, powersave, performance
current policy: frequency should be within 1.20 GHz and 2.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1.20 GHz (asserted by call to hardware).

analyzing CPU 3:
driver: centrino
CPUs which need to switch frequency at the same time: 1
hardware limits: 1.20 GHz - 2.50 GHz
available frequency steps: 2.50 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz
available cpufreq governors: ondemand, userspace, powersave, performance
current policy: frequency should be within 1.20 GHz and 2.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1.20 GHz (asserted by call to hardware).

接下來修改

#vi /etc/powersave/sleep

SUSPEND2RAM_FORCE="yes"

#/etc/init.d/powersaved restart

通過以上修改,問題解決。

補充cpufreq技術:

在cpufreq中內置了5種策略:performance、powersave、userspace、ondemand、

conservation。默認采用ondemand策略,在該策略里每80個毫秒就采集一次cpu的使用率

,同時假設前后兩次cpu使用率是相同的。通過前一次的cpu使用率推出后一個cpu使用率

,完了進行頻率設置。所以就總的思想來說還不是很難理解。

目的:

變頻技術是指CPU硬件本身支持在不同的頻率下運行,系統在運行過程中可以根據隨時可

能發生變化的系統負載情況動態在這些不同的運行頻率之間進行切換,從而達到對性能和

功耗做到二者兼顧的目的。

來源:

雖然多個處理器生產廠家都提供了對變頻技術的支持,但是其硬件實現和使用方法必然存

在著細微甚至巨大的差別。這就使得每個處理器生產廠家都需要按照其特殊的硬件實現和

使用方法向內核中添加代碼,從而讓自己產品中的變頻技術在 Linux 中得到支持和使用

。然而,這種內核開發模式所導致的后果是各個廠家的實現代碼散落在 Linux 內核代碼

樹的各個角落里,各種不同的實現之間沒有任何代碼是共享的,這給內核的維護以及將來

添加對新的產品的支持都帶來了巨大的開銷,并直接導致了cpufreq 內核子系統的誕生。



管理策略:

Linux內部共有五種對頻率的管理策略userspace,conservative,ondemand,powersave

和 performance

1.performance :CPU會固定工作在其支持的最高運行頻率上;

2.powersave :CPU會固定工作在其支持的最低運行頻率上。因此這兩種

governors 都屬于靜態 governor ,即在使用它們時 CPU 的運行頻率不會根據系統運行

時負載的變化動態作出調整。這兩種 governors 對應的是兩種極端的應用場景,使用

performance governor 體現的是對系統高性能的最大追求,而使用 powersave governor

則是對系統低功耗的最大追求。

3.Userspace:最早的 cpufreq 子系統通過 userspace governor 為用戶提供了

這種靈活性。系統將變頻策略的決策權交給了用戶態應用程序,并提供了相應的接口供用

戶態應用程序調節 CPU 運行頻率使用。 (可以使用Dominik 等人開發了 cpufrequtils

工具包 )

4.ondemand :userspace是內核態的檢測,效率低。而ondemand正是人們長期以

來希望看到的一個完全在內核態下工作并且能夠以更加細粒度的時間間隔對系統負載情況

進行采樣分析的 governor。當CPU有負載的時候選用最大的主頻,當CPU空閑的時候一步

步降低.

5.conservative : ondemand governor 的最初實現是在可選的頻率范圍內調低

至下一個可用頻率。即根據CPU使用情況進行升或降頻,這種降頻策略的主導思想是盡量減

小對系統性能的負面影響,從而不會使得系統性能在短時間內迅速降低以影響用戶體驗。

但是在 ondemand governor 的這種最初實現版本在社區發布后,大量用戶的使用結果表

明這種擔心實際上是多余的, ondemand governor 在降頻時對于目標頻率的選擇完全可

以更加激進。因此最新的 ondemand governor 在降頻時會在所有可選頻率中一次性選擇

出可以保證 CPU 工作在 80% 以上負荷的頻率,當然如果沒有任何一個可選頻率滿足要求

的話則會選擇 CPU 支持的最低運行頻率。大量用戶的測試結果表明這種新的算法可以在

不影響系統性能的前提下做到更高效的節能。在算法改進后, ondemand governor 的名

字并沒有改變,而 ondemand governor 最初的實現也保存了下來,并且由于其算法的保

守性而得名 conservative 。

Ondemand降頻更加激進,conservative降頻比較緩慢保守,事實使用ondemand的效果也是

比較好的。和ondemand管理器不同的是,在CPU負載高的時候conservative
并不直接跳上最高的主頻,而是采用步進的方式來升高主頻。

Cpufreq在用戶態所呈現的接口:

cpuinfo_max_freq cpuinfo_min_freq: 分別給出了 CPU 硬件所支持的最高運行

頻率及最低運行頻率,

cpuinfo_cur_freq 則會從 CPU 硬件寄存器中讀取 CPU 當前所處的運行頻率。

Governor在選擇合適的運行頻率時只會在 scaling_max_freq 和

scaling_min_freq 所確定的頻率范圍內進行選擇

scaling_cur_freq 返回的是 cpufreq 模塊緩存的 CPU 當前運行頻率,而不會對

CPU 硬件寄存器進行檢查。

scaling_available_governors 會告訴用戶當前有哪些 governors 可供用戶使用

scaling_driver 則會顯示該 CPU 所使用的變頻驅動程序

Scaling_governor 則會顯示當前的管理策略,往這個上echo其他類型會有相應的

轉變。

scaling_setspeed:需將governor類型切換為userspace,才會出現,往這個文件

echo數值,會切換主頻

1.
運行命令:echo userspace >

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
讓系統進入userspace模式,然后就可以通過如下命令手動修改CPU的頻率:
echo freq_val > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
其中,freq_val為要設置的CPU頻率值,以KHz為單位,如336000代表336MHz。freq_val的

取值范圍是 36000~400000。如果freq_val的值不是12000的整數倍,運行此命令后,CPU

頻率會被設置到跟freq_val最接近,但又是 12MHz的整數倍的頻率。

2.運行命令:echo conservative >

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
讓系統進入conservative模式,CPU頻率將會逐步降低,直到最小值36MHz。

3.運行命令:echo powersave >

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
讓系統進入powersave模式,CPU頻率將直接降低到最小值36MHz。

4.運行命令:echo performance >

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
讓系統進入performance模式,CPU頻率將直接升高到最大值396MHz。

CPU及串口的變頻,當CPU變頻前,發PRECHANGE通知給驅動,串口接到該通知后,將FIFO中的內容先發完,然后禁止FIFO;然后CPU做變頻的相關改變,改完之后發POSTCHANGE通知;串口收到該通知,以新的時鐘重新計數波特率,使能FIFO。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平湖市| 肇州县| 安岳县| 扶余县| 宜川县| 沙坪坝区| 龙里县| 津市市| 新昌县| 玛纳斯县| 赤水市| 平遥县| 仲巴县| 龙泉市| 盐边县| 牟定县| 阿克陶县| 昌黎县| 邹城市| 水富县| 都兰县| 福海县| 阳高县| 凌源市| 嘉善县| 邢台市| 伊宁市| 得荣县| 咸丰县| 满洲里市| 化隆| 克拉玛依市| 沾益县| 抚州市| 关岭| 南澳县| 象山县| 甘泉县| 莱阳市| 南木林县| 永和县|