查詢Linux系統記憶體總得不到想要的資訊?這有更好的命令

儲存頻道發表於2019-02-21

   有許多辦法可以獲得Linux系統上所安裝記憶體的資訊,並檢視其中有多少記憶體正在使用中。有的命令會展示大量的細節,而有的命令則提供了簡潔(但不一定容易理解)的結果。在這篇文章中將介紹一些更有用的工具,幫助你檢查記憶體及其使用情況。

  不過,在進一步討論之前,我們要先回顧一些基本知識。實體記憶體和虛擬記憶體是不一樣的,後者包括配置為交換區的磁碟空間。交換區可能包括為此用途預留的分割槽,或者那些為新增到新的交換區而建立的檔案——當建立一個新的分割槽並不實際時。有些Linux命令提供了這兩方面的資訊。

  交換區透過提供磁碟空間來擴充套件記憶體,這些磁碟空間可用於存放那些實體記憶體已滿時移動到磁碟的非活動頁。

  在記憶體管理中起到作用的一個檔案是/proc/kcore,這個檔案看起來像一個普通的(雖然非常大)檔案,但是它根本不佔用磁碟空間。就像/proc中的所有檔案一樣,它是一個虛擬檔案。

  有趣的是,下面查詢的兩個系統沒有安裝相同數量的記憶體,但是/proc/kcore的大小在這兩個系統上是相同的。第一個系統安裝了4 GB記憶體,第二個有6 GB。

  該檔案的大小表示可用虛擬記憶體的數量(可能加上4K),這個解釋可能站不住腳。這個數字表明這些系統上的虛擬記憶體是128 TB!這個數字代表64位系統能夠定址的記憶體數量,而不是系統上的可用記憶體數量。透過以下方式進行計算,再加上4 K,就可以推匯出這個數字:

  另一個更人性化的檢查記憶體的命令是free命令,它可以提供一個易於理解的記憶體報告。

  使用-g選項,free以gb為單位報告這些值。

  使用-t選項,free顯示的值與沒有選項時顯示的值相同(不要混淆-t和tb),但是在輸出的底部新增了一行。

  當然,你也可以同時使用這兩個選項。

  如果你希望得到“這個系統上安裝了多少RAM”的答案,那麼你可能會對這個報告感到失望,這與上面示例中顯示的具有6GB RAM的系統相同。並不表示這個報告是錯的,而是系統對它所擁有的記憶體的看法。free命令還提供了每X秒(在下面的示例中為10秒)更新一次結果的選項。

  使用-l, free命令可以提供高記憶體使用量和低記憶體使用量。

  檢視記憶體的另一個辦法是/proc/meminfo檔案。與/proc/kcore類似,這是一個虛擬檔案,它提供了一個有用的報告,顯示安裝了多少記憶體、空閒記憶體和可用記憶體。顯然,空閒和可用並不是一個意思。MemFree代表未使用的RAM,MemAvailable是對啟動新應用程式可用記憶體的估計。

  如果只想檢視總記憶體,可以使用以下命令之一:

  DirectMap條目將記憶體上的資訊分解成類別。

  DirectMap4k表示對映到標準4k頁面的記憶體量,而DirectMap2M表示對映到2MB頁面的記憶體量。

  getconf命令將提供的資訊往往比較多。

  使用如下所示的命令可以將輸出縮減為特定的內容,你能夠獲得與上面的一些命令相同的資訊。

  該命令透過將輸出的第一行和最後一行中的值相乘來計算記憶體,如下所示:

  獨立地進行計算,我們就可以看到這個值是如何推匯出來的。

  另一個輸出非常容易理解的命令是top,top輸出前5行中的數字顯示了記憶體的使用情況。

  最後這個命令將以簡潔的方式回答“這個系統上安裝了多少RAM ?

  根據您希望看到的詳細資訊的多少,Linux系統提供了許多選項,可以檢視系統上安裝了多少記憶體,以及使用了多少記憶體和有多少可用記憶體。

  原文作者: Sandra Henry-Stocker 來源:NetworkWorld


來自 “ NetworkWorld ”,原文連結:http://blog.itpub.net/31545805/viewspace-2636624/,如需轉載,請註明出處,否則將追究法律責任。

相關文章