Fan Control之最重要類別“DbusPidZone”

更新 發佈閱讀 7 分鐘

上一篇文章中,我有提到風扇在控制的時候會有Zone的區分。這是為什麼呢?伺服器內部並不是一個均勻的空間,不同的元件(如 CPU、記憶體、硬碟、網卡)分佈在不同位置,它們的發熱特性與耐熱上限截然不同。現代伺服器內部通常有風罩(Air Shroud)或擋板。分區可以對應這些物理隔離,確保風扇產生的風量優先服務於該區域的元件。也可以根據不同熱特性差異:

  • CPU/GPU/PCIe switch:發熱量大且變化極快,需要能快速反應的 PID 曲線。
  • HDD/SSD:發熱量大但變化慢,耐溫較低,需要平穩、緩慢變動的風量。

設計不同的冷卻控制行為或演算法。當然還有一個很重要的原因是,風扇通常排成一列(Fan Wall)。靠近左側的風扇主要冷卻 CPU0,右側的風扇冷卻 CPU1。如果不分 Zone,為了冷卻過熱的 CPU0 而讓全機 10 個風扇都加速,是非常沒效率的。

因應風扇控制有所謂的Zone,OpenBMC在管理上也變的相對複雜一些。Thermal team需要詳細定義哪些風扇屬於哪個 Zone、哪些感測器該被列入計算,這需要對硬體架構有極深的了解(所以通常也會找硬體部門EE一起討論)。再者,為了確保Thermal team所設計的Fan table,不論是只執行Linear的風扇控制或者含有PID的自動控制公式,都需要近一步的做實驗來確認其穩地性與可行性。在這個過程中,韌體工程師需要預留debug相關的程式碼,以確保有足夠的資料可以分析每個當下的sensor情況與風扇轉速,是否在正確的自動控制中,可以達到很好的冷卻功效。

了解了 Zone 的重要性後,回過頭看 DbusPidZone 這個類別。我沒有先從Fan control的main function開始寫起,反而是先介紹一個類別,因為這個類別對我來說包山包海,幾乎你想到Fan control應該要做的事情都離不開他。所以,如果介紹這個類別的時候你對於整個風扇控制的流程還是沒有覺得很清晰,那是正常的。因為我們還在介紹他的功能與實作,我還會在講一下他的流程與main function。接下來,我們分成幾大項來講一下這個類別的職責報告:

  • D-Bus Communication
    繼承並實作多個 D-Bus 儀表板介面,處理外界指令。處理指令的部分包含manual/auto mode的切換,有時候風扇控制出現異常,或者是機器進到了原本fan table沒有辦法cover的error situation,此時我們會緊急調整成manual mode,可能是手動把風扇全部調整到100轉,也或者是手動調整成某一個固定轉速以確保系統的安全。另外,當風扇控制的處理流程中,出現了異常,可是程式並沒有確切的error handle,需要記錄這個error log或者回報給工程師讓工程師來進行妥善的處理,Fan control會透過Dbus interface把log送出來。最後是addPidControlProcess為每個 PID 控制器(如單獨的溫度或功耗控制器)建立一個專屬的 D-Bus 物件,讓外部工具可以即時監控。這個Function定義該控制器的類別(如 Temperature, Margin 或 Power)並設定預設的目標值(Setpoint),這個目標值決定該自動控制物件何時會開始啟動。也讓外部使用者能透過 D-Bus 介面,在不重啟服務的情況下,動態地啟用或禁用特定的 PID 控制運算。
  • Sensor Caching & Management
    這裡的processSensorInputs會負責循環讀取感測器、計算超時時間,並用多個 Map 來存放感測器原始值與處理後的值。還有一個很有趣的function是updateFanTelemetry. 我以前沒有想過,為什麼fan的轉速也需要cache?想像一下,如果 PID 運算過程中,算比例 (P) 的時候讀取一次感測器,算積分 (I) 的時候又讀取一次,而這兩次讀取之間風扇轉速變動了,這會導致數學模型產生微小的誤差。另一個原因也是因為讀取硬體(如透過 D-Bus 或 sysfs)通常很慢且有延遲。先一次性把數據全部抓好存進記憶體(Cache),後面的 PID 運算就可以在極短的時間內完成,而不必在計算過程中等待硬體反應。總的來說,這確保了在同一輪迴圈(Iteration)中,所有的控制器(Thermal PIDs, Fan PIDs)看到的數據都是同步的「那一個瞬間」的狀態。這個細節,通常只有相對資深的韌體工程師會注意到。(呵呵
  • PID Loop Orchestration
    每個Zone會算出自己根據管理的sensor以及對應的公式, 得到一個output轉速。而這些轉速會統一被收集,在determineMaxSetPointRequest裏面做最終的抉擇。抉擇會根據多個不同的條件來決定,每個條件也有他的優先權。總結決策優先順序:
    • Tuning File (最高優先級,一旦檔案存在則無視其他邏輯,確保manual手動控制永遠可以覆寫自動控制的轉速)
    • Ceiling (如果有設定,絕對不能超過,意思是最高轉速不能高於這個天花板值)
    • Thermal PID Requests (多個熱感測器的計算結果,有時候是linear+pid疊加才是output風扇轉速,例如:PID_CPU0 + Stepwise_CPU,系統會取最大值)
    • Minimum Setpoint (最低保障,確保不低於此值)
  • Failsafe Mode
    它負責即時監控感測器的健康狀態,一旦透過 processSensorInputs 偵測到讀值異常,便立即將該感測器標記為失效並列入追蹤清單。此時,系統會強制介入,計算所有控制區塊(Zone)中所需的安全轉速 (Failsafe Percent),無視常規 PID 運算,直接將風扇拉高至該安全數值,確保在感測器數據不可靠時,硬體仍能獲得足夠散熱以避免損壞。

DbusPidZone 只是「指揮」,而這兩者是真正的「執行」。

  • ThermalController: 將感測器溫度轉換為轉速請求。
  • FanController: 將轉速請求轉換為實際寫入硬體(或 D-Bus)的 PWM 指令。

之後我們從main function開始往下走,就可以對整體風扇控制有更多認識。





留言
avatar-img
L'Angolo di Embedded
25會員
26內容數
這裡會有一些我對於OpenBMC, Embedded Software的學習與經驗分享, 本來只在Line社群跟大家互動, 但是有夥伴提出想要看到歷史文章的需求, 於是我決定把它放到這裡, 努力磨練自己的技術和文筆。
L'Angolo di Embedded 的其他內容
2026/01/05
以風扇控制為例,說明 OpenBMC 如何透過「策略與實作分離」的設計,將不同產品間的硬體差異有效收斂。從以 JSON 描述散熱拓撲與 PID 策略,到以介面抽象硬體互動,OpenBMC 避免了 hard code 與 ifdef 的擴散,展現其作為可擴充、可維護框架的核心價值。
2026/01/05
以風扇控制為例,說明 OpenBMC 如何透過「策略與實作分離」的設計,將不同產品間的硬體差異有效收斂。從以 JSON 描述散熱拓撲與 PID 策略,到以介面抽象硬體互動,OpenBMC 避免了 hard code 與 ifdef 的擴散,展現其作為可擴充、可維護框架的核心價值。
2025/12/22
本文以 BCM2711 datasheet 為核心,說明如何從硬體控制器層理解 Raspberry Pi,協助工程師將規格文件轉化為可用於系統分析與除錯的依據。
2025/12/22
本文以 BCM2711 datasheet 為核心,說明如何從硬體控制器層理解 Raspberry Pi,協助工程師將規格文件轉化為可用於系統分析與除錯的依據。
看更多
你可能也想看
Thumbnail
一位來自中國香港的投資者“何必懷念”爆料,FAN HUA GROUP · 繁華集團對於投資者的出金申請一直拖延,疑似跑路。一周了都不給出金,甚至有的學員一個多月仍舊未能出金成功。並且附上了自己與繁華集團工作人員的溝通記錄及申請記錄截圖如下:   在外匯投資中,黑平臺一直是外匯投資圈的一枚毒瘤,
Thumbnail
一位來自中國香港的投資者“何必懷念”爆料,FAN HUA GROUP · 繁華集團對於投資者的出金申請一直拖延,疑似跑路。一周了都不給出金,甚至有的學員一個多月仍舊未能出金成功。並且附上了自己與繁華集團工作人員的溝通記錄及申請記錄截圖如下:   在外匯投資中,黑平臺一直是外匯投資圈的一枚毒瘤,
Thumbnail
一旦愛上了 BKPP,大概就無法回頭了。和大多數的人一樣,我喜歡上 BKPP 的起點是《以你的心詮釋我的愛》這齣劇。但是,看完所有的幕後花絮,好多訪談和綜藝後,真正讓我墜入更深的,是 BKPP 兩人一起攜手走過的每一步成長歷程,還有他們兩人比誰都還真誠的內心。
Thumbnail
一旦愛上了 BKPP,大概就無法回頭了。和大多數的人一樣,我喜歡上 BKPP 的起點是《以你的心詮釋我的愛》這齣劇。但是,看完所有的幕後花絮,好多訪談和綜藝後,真正讓我墜入更深的,是 BKPP 兩人一起攜手走過的每一步成長歷程,還有他們兩人比誰都還真誠的內心。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
若您的電腦出現"CPU Fan Error"的錯誤訊息,這代表著您的電腦中央處理器(CPU)的風扇可能出現了問題。以下是故障維修方式: 停止使用電腦並關機:關閉電腦,並拔掉電源線,以防止電腦繼續運行且讓CPU過熱。 網路/電腦維修搜尋飛鳥電腦LINE ID 『 @mvn8521y 』
Thumbnail
若您的電腦出現"CPU Fan Error"的錯誤訊息,這代表著您的電腦中央處理器(CPU)的風扇可能出現了問題。以下是故障維修方式: 停止使用電腦並關機:關閉電腦,並拔掉電源線,以防止電腦繼續運行且讓CPU過熱。 網路/電腦維修搜尋飛鳥電腦LINE ID 『 @mvn8521y 』
Thumbnail
這篇文章是我第一次參加泰星TayNew粉絲見面會的心情分享。從初次接觸他們的劇集到參加粉絲見面會,感受到他們的魅力與互動。活動中有精彩的音樂表演和趣味遊戲,讓我不禁笑聲不斷,感受到他們對粉絲的愛。雖然活動緊湊,但正是這樣的經歷讓我更加期待未來的見面會。希望下次能夠更好地準備,享受每一刻!
Thumbnail
這篇文章是我第一次參加泰星TayNew粉絲見面會的心情分享。從初次接觸他們的劇集到參加粉絲見面會,感受到他們的魅力與互動。活動中有精彩的音樂表演和趣味遊戲,讓我不禁笑聲不斷,感受到他們對粉絲的愛。雖然活動緊湊,但正是這樣的經歷讓我更加期待未來的見面會。希望下次能夠更好地準備,享受每一刻!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News