我近期在類似樹梅派這樣的單板電腦上架構了一個應用,大約由10支程式獨立程式構
成,程式部分以C++跟python編寫,主要用途是藉由板子上的UART與外部設備通訊、
讀取ADC,用GPIO控制周邊電路。
程式跟程式間我使用redis進行資料交換,程式架構的虛擬碼大致如下:
while(true) {
// 從redis讀取別的程式產生的資料
...
// UART通訊 or 讀ADC or 操作GPIO
...
// 將讀到的值或執行的結果寫入redis
...
// 延遲若干時間讓CPU得以休息
// C++用std::this_thread::sleep_for()
// Python用time.sleep()
delay(n);
}
這種結構是我以前寫MCU或RTOS常使用的程式架構。
今天查資料時偶然知道uptime跟free這類效能監控命令,結果發現load average
異常的高,在單核心CPU下1、5、30分鐘的監測值都落在8.x~10.x之間,至於記憶
體使用量倒是還好,平均都還有25%的閒置(free)空間。以top觀看CPU使用率較高
的程式都是我編寫的,其他service等使用量都不高。我有嘗試去加長delay時間,
delay要直到秒級才有比較明顯的效果,但這麼長的delay有點不實際。
由於接觸linux程式設計時間並不長,不太知道這類問題要怎麼下關鍵字找資料比
較正確,所以想請問各位先進尋求建議,讓我有個方向可以解決這個現象。
謝謝。