Linux

如何解釋 Linux ’top’ 命令的輸出?

  • November 24, 2015

HERE關於如何PHP-FPM消耗記憶體的討論之後,我發現在top命令中讀取記憶體時出現問題。這是我top剛重啟後的截圖PHP-FPM。一切正常:大約 20 個PHP-FPM程序,每個程序消耗 5.5MB 記憶體(佔總數的 0.3%)。

在此處輸入圖像描述

PHP-FPM這是重新啟動之前(上次重新啟動後一天)的老化伺服器。在這裡,我們仍然有大約 25PHP-FPM個記憶體使用量翻倍(10MB 佔總數的 0.5%)。因此,使用的總記憶體應為 600-700 MB。那麼,為什麼使用了 1.6GB 記憶體呢?

在此處輸入圖像描述

TL; 博士 1

您的伺服器位於某種 virtuozzo/openvz/ virtualization-du-jour容器中。試圖理解記憶體使用情況是在風車上傾斜。

TL; 博士 2

***Linux 吃掉了你的記憶體!***但沒關係,它對每個人都有效。


長篇大論

讓我們分解吧!

在該Mem:部分中,我們有:

  • $n total:您機器中的物理 RAM 量
  • $n used:Linux消耗了多少記憶體,而不僅僅是程序的總和。
  • $n free: Linux 沒有消耗多少記憶體。這沒有考慮到記憶體和緩衝記憶體本質上是“免費的”。
  • $n buffers:緩衝區空間是儲存已讀取或等待寫入的磁碟 I/O 塊的位置。緩衝區是單個磁碟塊的 RAM 表示。

在該Swap:部分中,我們有:

  • $n total: 不言自明。可用於交換頁面的磁碟空間量。
  • $n used: 不言自明。使用了多少磁碟交換空間。
  • $n free: 赫普德普。
  • $n cache: 與上面的緩衝區密切相關。它實際上是頁面記憶體的一部分,它本身在物理磁碟上沒有空間。不要擔心這次談話的細節。

當你跑步時,有趣的部分就來了free -m。你會看到三行,所有的數字都與頂部相關。我以我自己的電腦為例:

            total       used       free     shared    buffers     cached
Mem:          8070       7747        323          0        253       5713
-/+ buffers/cache:       1780       6290
Swap:         5055          0       5055

Mem 行顯示了以兆字節為單位的總 RAM($n total在頂部)、使用了多少($n used在頂部)、有多少空閒($n free在頂部)、有多少是共享的(忽略它),現在是好部分!buffers和列cachedfree -m、可預測地$n buffers和相關$n cache。但看看以.free -m開頭的第二行-/+ buffers/cache:。數學表明使用的數量實際上是(總計)-((使用的緩衝區)-記憶體的)。免費是(總計)-(theNewUsed)。

這是什麼意思呢?這意味著***Linux 吃掉了你的記憶體!***簡而言之,Linux 核心吞噬了 RAM,因為它可用於磁碟記憶體。除非您想嘗試編譯自定義核心,否則您無能為力。**專業提示:**不要。

RAM 確實存在並且免費供程序隨心所欲地使用。這就是-/+ buffers/cache:行中的意思free -m。但是,您位於非 hyper-visor 虛擬化容器中,這使事情變得有點怪異。在這一點上,您根本無法以字節精度來評估您的記憶體。但是,您沒有看到任何非常不尋常的行為。

保持冷靜並進行。此外,獲取物理伺服器(除非您喜歡看起來像 Kreskin 是您的系統管理員的記憶體統計資訊)。

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