Linux
Linux 交換空間使用未釋放
我在我的一個系統 (RHEL6) 上收到警報,說它的交換空間使用率很高。
查看虛擬機後,我確實可以看到交換已被充分利用,而我們有足夠多的可用物理記憶體,例如:
[root@xxxxxxxxxx ~]# free -h total used free shared buffers cached Mem: 11G 5.3G 6.3G 2.6M 196M 560M -/+ buffers/cache: 4.6G 7.0G Swap: 4.0G 4.0G 21M
所以我的問題是:
這是否意味著系統在某個時候耗盡了物理記憶體,並且“不得不”使用這些 4Gbs 的額外 SWAP。之後記憶體被釋放,但交換仍然很高。
如果是這樣的話,有沒有辦法“清空”那個交換?
在機器上執行頂部時,通過交換使用過濾,我可以看到一些使用該 SWAP 的程序(頂部的 java 尤其是2.7g)
top - 14:57:06 up 72 days, 19:54, 4 users, load average: 0.06, 0.02, 0.00 Tasks: 201 total, 1 running, 200 sleeping, 0 stopped, 0 zombie Cpu(s): 1.2%us, 0.9%sy, 0.0%ni, 97.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 12197860k total, 5598708k used, 6599152k free, 201704k buffers Swap: 4193276k total, 4170820k used, 22456k free, 573636k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND 9180 pcmc03 20 0 7428m 980m 9208 S 0.3 8.2 797:35.54 2.7g java 9474 pcmc03 20 0 3409m 999m 9.8m S 0.0 8.4 492:09.57 513m pmrepagent 9455 pcmc03 20 0 2702m 1.5g 3712 S 0.0 13.0 29:42.06 297m pmrepagent 9383 pcmc03 20 0 4362m 229m 1568 S 0.3 1.9 159:45.77 213m java 9494 pcmc03 20 0 2705m 108m 10m S 0.3 0.9 183:49.58 61m pmserver 7371 root 20 0 231m 69m 2104 S 0.0 0.6 360:27.50 60m prismd.pl 1730 root 20 0 117m 44m 920 S 0.0 0.4 33:45.09 46m rootmon
這是否意味著這個 java 程序必須在某個時候使用 2.7g 的交換並保留保留?如果是這樣,我想這個系統可能需要額外的記憶體來避免將來出現類似情況?
vmstat不顯示任何 si/so 。
非常感謝您
是的,看來您的記憶體不足。不,不要嘗試將其從交換中釋放出來。如果你這樣做,它將進入 RAM。然而,可能值得看看哪些程序正在浪費記憶體,並詢問它們是否需要存在?