
我一直在 Linux 上運行一個演示系統,核心如下:
2.6.32-400.1.1.el5uek #1 SMP 6 月 25 日星期一 20:25:08 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
一旦發生交換,系統上的CPU使用率幾乎達到100%繁忙,其中約90%是sys CPU使用率。我被告知這是預期的,因為 Linux 頁面守護進程只有在記憶體不足(或可用記憶體小於 0.5G)時才會啟動並開始寫入記憶體區塊以進行交換,這會導致大量的系統 CPU 使用。系統上的「swappiness」為 60。
Linux 上發生交換時 CPU 使用率達到 100% 是預期行為嗎?
我有上述問題的原因是,當我將演示遷移到具有以下 Linux 核心的另一個系統時,上述行為發生了變化:
2.6.39-400.128.14.el5uek #1 SMP 5 月 10 日星期六 00:06:52 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux
我注意到遷移後的系統上 vm 參數的唯一區別是 min_free_kbytes 參數,在遷移後的系統上更改為 524288,而在預先遷移的系統中更改為 51200。
在遷移後的系統上,當可用記憶體低於1.5G時,就會發生交換,然後CPU使用率會略有上升,大約從30%到40%,並且應用程式效能只會在短時間內變得不穩定,然後一切都恢復正常,就像交換發生之前一樣。
是什麼讓遷移後的系統表現如此不同,以至於交換發生時 CPU 使用率不會達到 100% 繁忙?
這是一個非常重要的演示系統,對上述兩個問題的解釋將非常有用。任何想法將不勝感激。