1. 程式人生 > >[轉載] [嵌入式開發]Linux效能分析——上下文切換

[轉載] [嵌入式開發]Linux效能分析——上下文切換

標籤

PostgreSQL , Linux , 上下文切換

背景

原文

一、從一個問題說起

相信很多人在玩手機還是PC時,都曾碰到過這樣一種情況,安裝的軟體多了系統性能就變慢了,但是去檢視CPU利用率一直都低於10%,記憶體也很充足。我在近期的開發工作中就碰到了類似的情況,不同的是,系統此時只有一個測試程式和幾個睡眠的後臺程序,說明是系統,特別是驅動部分可能出現問題導致的。 從作業系統角度上分析,以下是一些比較可能的原因:

    1. 大量的中斷 可能是在不斷磁碟讀寫,網路通訊, 也可能是模組使用不當或者硬體上出問題導致外設不斷給CPU送中斷;
    1. 系統負載高(注意:不是CPU利用率) 負載高表示有很多程式等待排程執行,它會導致上下文切換頻繁。
    1. 上下文切換過於頻繁 上下文切換是指CPU從一個程序切換到另一個程序,這個過程也是需要消耗一定時間的。如果說上下文切換過於頻繁,說明CPU用於執行程序程式碼的時間少了。第2點有提到負載高會引起上下文切換頻繁,但是上下文切換頻繁負載不一定就高。

在以往的排查經驗中,系統性能下降主要由1引起的,在影響系統性能上表現得比較明顯;而2,3則比較隱蔽,即使數值已經異常,只要應用對實時性要求不高,最多就是響應稍慢一些,看不出有什麼不妥。因此,底層驅動開發人員一般不會去考慮2,3兩點,更別說將它作為評價系統性能的測試指標。剛好我要測試的模組對實時性要求很高,而由於系統在空閒時的上下文切換已經很頻繁,測試結果自然不佳。

原文連結