如何全面了解 RAM 使用情況

如何全面了解 RAM 使用情況

我已經在伺服器上安裝了 Ubuntu 14.10。伺服器的主要任務是運行 MongoDB 安裝以及多個 NodeJS 應用程式。 NodeJS 應用程式將持續運行並接受來自外部的請求。

時不時會有大量請求出現,導致某些 NodeJS 應用程式在短時間內使用大量 RAM。我一直在努力監測這一情況,但不確定如何看待我的發現。

到目前為止,我已經使用了兩個命令來了解 RAM 使用情況。這些都是

free -m

sudo htop

第一個顯示了這一點:

                        total       used       free     shared    buffers     cached                                           
Mem:                     3442       3158       283          6        111       1203                                           
-/+ buffers/cache:                  1842       1599                                                                         
Swap:                    0          0          0    

當我看到這個時,我會說大約 280MB 的 RAM 是免費的。這看起來並不多。

htop 告訴我以下:

  1  [|||                                         0.8%]     Tasks: 61, 129 thr; 2 running
  2  [|||                                         1.0%]     Load average: 1.16 1.15 0.93
  Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB]     Uptime: 29 days, 00:23:31
  Swp[                                           0/0MB]   

我現在真的不知道如何閱讀這篇。有人可以幫我從這裡出去嗎?

我想我的問題最終歸結為這些:

  • 如何了解可用 RAM 量?
  • 什麼時候RAM記憶體太小? 300MB算不算小?這麼危險嗎?

答案1

長話短說:只要該-/+ buffers/cache行顯示足夠的可用內存,您就不必擔心。如果它顯示可用記憶體較低並且您不斷被swap寫入磁碟,那麼您需要擔心。

解釋:

您對目前的 RAM 使用情況感到滿意。讓我們把它的輸出free -m分解:

所有列都是free -m不言自明的。需要注意的重要一點是,當記憶體使用率很高而看不到快取和緩衝的記憶體量時,您不需要驚慌。

從輸出來看,您已經使用了 3442 MB RAM 中的 3158 MB,簡單的減法就會顯示您只有 283 MB 的空閒空間可指派給新程式。這是不對的,您還需要查看cached和列,它們將顯示 RAM 快取的磁碟資料量,以便更快存取常用文件,並顯示要寫入磁碟的資料量。bufferscachedbuffered

如您所知,磁碟存取比 RAM 慢得多,因此為了提高效能,將一些磁碟資料儲存到 RAM 中是一件好事。您有 1203 MB 的快取資料和 111 MB 的緩衝資料。這是一件好事,您的內存可以緩存這麼多內存,而不只是保持這麼多 RAM 空閒。這將大大提高你的表現。

若要取得在沒有快取/緩衝的情況下正在使用的實際 RAM 量,請查看該-/+ buffers/cache:行。顯示的結果是減去緩存/緩衝量。正如您所看到的,您有 1599 MB 的可用空間,因此在此狀態下一切似乎都正常。如果您看到該行中的值較低,那麼您需要注意並查看 RAM 使用情況。

另請注意,當要啟動新程式且快取後記憶體不足時,舊的快取將自動清除,為新程式騰出空間。因此,只要實際記憶體使用率不高,並且不斷地將記憶體交換到磁碟,那麼在快取中擁有大量記憶體是一件好事,因為它可以有效地「使用」記憶體。

答案2

heemayl 已經涵蓋了大部分有關實際可用記憶體的資訊。我在這裡的帖子只是幾個單行文字,您可以將其添加到您的.bashrc別名中,以用作實際使用情況的快速概述:

free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x }'

和範例輸出:

$ free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x  }'                                                                 
Used 1.2G Out of 5.6G

如果您有興趣更深入地研究內存,請使用cat /proc/meminfo,它列出了全部信息,並且這個部落格將幫助您了解free命令如何從該文件計算內容。

相關內容