最近我看到一個盒子(實際上是Web 伺服器虛擬機器),其交換區中有0(零)位元組未使用,而可用ram(不是免費的,但空閒+緩衝區+快取的總和)為總數的60%虛擬機器記憶體。以前從未見過,所以想知道這是否是好的配置(對於盒子和應用程式)。
虛擬機器的管理員告訴我,他認為這是完全正常的,這是他調整盒子的常用方法。
他的想法是,如果 box 有很多冷內存頁面,內核會將其清理出來以釋放“真實”內存頁面,以便它可以用於緩存資料。
對我來說,如果我們喜歡快速盒子,我曾經知道交換是最後使用的東西。因此,我曾經將交換性設置為較低的值(因此內核不喜歡交換頁面),但這個人的方法是交換出與交換空間一樣多的數據,從而擁有更多的快取。是的,他說,核心也可以快取交換的頁面,所以保持交換空閒是沒有好處的。
請讓我輕鬆一下:VM Seap 是否應該以最佳方式使用,並且以這種方式釋放 RAM,以便可以更有效地使用核心磁碟快取?
確切地說,目前有:1 Gb 交換空間(100% 使用),VM 有 32 Gb 內存,可用內存為 13 Gb。
答案1
完全使用少量交換(1GiB 與 32GiB RAM 相比很小)就可以了。這意味著正如虛擬機管理員所描述的那樣:考慮到RAM 的可用性,最終進入交換區的任何內容都不會被使用,最好將其保留在那裡並使用相應的物理內存來實現更緊迫的目的- 無論是活動工作負載,還是磁碟快取。
過多的交換使用僅在交換量很大,或者由於內存壓力而進行頁面交換時才令人擔憂,更重要的是如果交換活動很重要,IEifvmstat
顯示頁面一直在換入換出。這表示系統正在崩潰,花時間逐出頁面,結果卻不得不再次將它們交換回來;當 RAM 量對於系統工作負載而言太小時,就會發生這種情況。
我正在編寫此內容的系統的交換空間稍多,並且與您的虛擬機器的情況類似:
$ free -m
total used free shared buff/cache available
Mem: 32054 19405 1098 2365 11550 9827
Swap: 6410 6410 0
不過,互動表現很好,並且vmstat
沒有顯示交換活動。