本專案開發了一套基於 Golang 的分佈式自動化壓力測試系統,用來改善傳統測試工具在「系統瓦數控制」與「長時間測試資料判讀」上的限制。

不同於只執行固定腳本的測試工具,本系統加入物理特性建模:針對 CPU(線性增長)與 Memory/Ethernet(反指數飽和)等元件建立數學模型,用來推估接近目標瓦數的壓力組合。在資料分析方面,系統以 Grafana 四維熱力圖整合溫度、轉速、瓦數與時間頻率,並串接 AI 視覺模型輔助圖表判讀,讓長時間驗證結果更容易回顧與比較。

本專案核心技術包含兩個部分:

  1. 物理特性預測建模: 針對 CPU(線性增長)與 Memory/Ethernet(反指數飽和)等元件的異質功耗特性,建立可解釋的數學模型。透過線性擬合與演算法逆向推導,推估系統瓦數與壓力組合。

  2. AI 驅動的四維視覺化: 設計整合溫度、轉速、瓦數與時間頻率的 Grafana 四維熱力圖,並串接視覺 AI 模型輔助圖表解讀,協助辨識潛在散熱風險與效能瓶頸。

🛠️ 技術深度剖析 (Technical Case Study)

1. 系統架構與基礎設施 (Infrastructure)

為了滿足多台設備與長時間測試需求,本系統採用分佈式架構設計:

  • Agent 端 (Golang CLI): 部署於待測機器 (SUT),負責執行底層測試指令。具備本地 Log 緩衝機制,即使網路中斷也能確保數據完整性。
  • Controller 端: 提供一對多遠端操作介面與預約排程功能,實現無人值守測試。
  • 監控與分析端: 整合 Grafana 進行即時監控,並將數據流導向後端 AI 分析模組。

自動化壓力測試系統架構圖

2. 核心技術:基於物理特性的壓力預測模型 (Physical Characteristic Modeling)

這是本系統的主要控制邏輯。為了讓系統接近特定的熱設計功耗 (TDP) 邊界,我減少傳統「試誤法」的腳本調整,改採數學建模方法。

2.1 物理特性的發現

透過設計「前測試 (Pre-test)」流程,自動掃描各元件從輕載到滿載的反應,我發現不同元件的功耗變化曲線存在顯著的物理差異:

  • CPU (線性增長): 隨著負載增加,瓦數幾乎呈現完美的線性上升 ($y = ax + b$)。
  • Memory & Ethernet (反指數飽和): 這些元件在初期負載增加時瓦數上升極快,但隨後會趨緩並接近飽和點,呈現類似反指數 (Inverse Exponential) 的曲線特性。

2.2 數學建模與精準施壓

基於上述發現,我手動推導出可解釋的數學公式模型。當使用者輸入「目標總瓦數」時,系統會透過演算法計算,考慮各元件的權重與飽和特性,逆向求解出最佳的 CPU、GPU、MEM 與 IO 腳本組合強度。

![物理特性建模示意圖](/postImg/smartfan/Physical model.jpeg)

3. 核心技術:四維數據視覺化與 AI 點評 (4D Visualization & AI Analysis)

解決了「控制」問題後,下一個挑戰是如何「解讀」長時間測試產生的複雜數據。

3.1 4D Grafana 熱力圖

為了在二維平面上呈現多變數的系統狀態,我客製化設計了 Grafana 面板,將四個維度的關鍵資訊融合於一張圖表中:

  • X 軸: 溫度 (Temperature)
  • Y 軸: 風扇轉速 (Fan Speed)
  • 顏色 (Color): 系統瓦數 (Power Consumption) - 透過顏色深淺直觀呈現負載高低
  • 點的大小 (Size): 累積停留時間/頻率 (Cumulative Duration)

最終測試結果圖

4D 熱力圖 Grafana 四維熱力圖

資料視覺化圖表 壓力測試資料視覺化圖表