Linux

新的 64 位 linux 系統有正常程序(ps、grep 等)佔用過多的 VIRT 記憶體

  • January 21, 2012

我們剛剛從 32 位機器遷移到 64 位機器。儘管新盒子的記憶體是舊盒子的兩倍,但我們很快就用完了記憶體。

執行一個簡單的 ps 命令將說明問題。

新機:

132 prod-Charlotte1-node1 ~/public_html/rearch/cgi-bin> ps aux | grep ps
root       293  0.0  0.0      0     0 ?        S<   May09   0:00 [kpsmoused]
xamine    2267  1.0  0.0  63728   928 pts/3    R+   16:50   0:00 ps aux
xamine    2268  0.0  0.0  61172   752 pts/3    S+   16:50   0:00 grep ps

老機器:

132 prod-116431-node1:/home/xamine> ps aux | grep ps
xamine   23191  0.0  0.0  2332  768 pts/6    R+   15:41   0:00 ps aux
xamine   23192  0.0  0.0  3668  692 pts/6    S+   15:41   0:00 grep ps

請注意,ps 程序使用 63M 的 VIRT 記憶體,而舊機器上的記憶體為 2。

新機:

  • Enterprise Linux Enterprise Linux Server 5.4 版 (Carthage)
  • 紅帽企業 Linux 伺服器 5.4 版(標準)

老機器:

  • 紅帽企業 Linux ES 第 4 版(Nahant 更新 4)

取決於您如何計算已用記憶體。如果您正在查看“免費”,請確保將使用的記憶體和緩衝區打折。

Linux 嘗試盡可能多地記憶體磁碟活動,以便後續訪問這些文件比再次訪問磁碟要快得多。如果需要記憶體,將釋放記憶體記憶體以滿足新的請求。

例如:

# free
        total       used       free     shared    buffers     cached
Mem:       3973040    3944864      28176          0     433448    3123468
-/+ buffers/cache:     387948    3585092
Swap:      2040244      72080    1968164

在這種情況下,雖然系統報告幾乎所有 4G 記憶體都已使用,但仔細檢查顯示其中的 3G 已“記憶體”,這意味著實際上有大量可用記憶體。輸出的第二行free表示該計算——不包括緩衝區和記憶體,有 3.5G 可用記憶體。

引用自:https://serverfault.com/questions/141321