歡迎光臨
每天分享高質量文章

使用 top 命令瞭解 Fedora 的記憶體使用情況 | Linux 中國

如果你使用過 top 命令來查看 Fedora 系統中的記憶體使用情況,你可能會驚訝,看起來消耗的數量比系統可用的記憶體更多。下麵會詳細介紹記憶體使用情況以及如何理解這些資料。
— Paul W. Frields


致謝
編譯自 | 
https://fedoramagazine.org/understand-fedora-memory-usage-top/
 
 作者 | Paul W. Frields
 譯者 | Hank Chow (HankChow) ??共計翻譯:6.0 篇 貢獻時間:300 天

如果你使用過 top 命令來查看 Fedora 系統中的記憶體使用情況,你可能會驚訝,看起來消耗的數量比系統可用的記憶體更多。下麵會詳細介紹記憶體使用情況以及如何理解這些資料。

記憶體實際使用情況

操作系統對記憶體的使用方式並不是太通俗易懂。事實上,其背後有很多不為人知的巧妙技術在發揮著作用。通過這些方式,可以在無需用戶干預的情況下,讓操作系統更有效地使用記憶體。

大多數應用程式都不是系統自帶的,但每個應用程式都依賴於安裝在系統中的庫中的一些函式集。在 Fedora 中,RPM 包管理系統能夠確保在安裝應用程式時也會安裝所依賴的庫。

當應用程式運行時,操作系統並不需要將它要用到的所有信息都加載到物理記憶體中。而是會為存放代碼的儲存空間構建一個映射,稱為虛擬記憶體。操作系統只把需要的部分加載到記憶體中,當某一個部分不再需要後,這一部分記憶體就會被釋放掉。

這意味著應用程式可以映射大量的虛擬記憶體,而使用較少的系統物理記憶體。特殊情況下,映射的虛擬記憶體甚至可以比系統實際可用的物理記憶體更多!而且在操作系統中這種情況也並不少見。

另外,不同的應用程式可能會對同一個庫都有依賴。Fedora 中的 Linux 內核通常會在各個應用程式之間共享記憶體,而不需要為不同應用分別加載同一個庫的多個副本。類似地,對於同一個應用程式的不同實體也是採用這種方式共享記憶體。

如果不首先瞭解這些細節,top 命令顯示的資料可能會讓人摸不著頭腦。下麵就舉例說明如何正確查看記憶體使用量。

使用 top 命令查看記憶體使用量

如果你還沒有使用過 top 命令,可以打開終端直接執行查看。使用 Shift + M 可以按照記憶體使用量來進行排序。下圖是在 Fedora Workstation 中執行的結果,在你的機器上顯示的結果可能會略有不同:

主要通過以下三列來查看記憶體使用情況:VIRTRES 和 SHR。目前以 KB 為單位顯示相關數值。

VIRT 列代表該行程映射的虛擬virtual記憶體。如上所述,虛擬記憶體不是實際消耗的物理記憶體。例如, GNOME Shell 行程 gnome-shell 實際上沒有消耗超過 3.1 GB 的物理記憶體,但它對很多更低或更高級的庫都有依賴,系統必須對每個庫都進行映射,以確保在有需要時可以加載這些庫。

RES 列代表應用程式消耗了多少實際(駐留resident)記憶體。對於 GNOME Shell 大約是 180788 KB。例子中的系統擁有大約 7704 MB 的物理記憶體,因此記憶體使用率顯示為 2.3%。

但根據 SHR 列顯示,其中至少有 88212 KB 是共享shared記憶體,這部分記憶體可能是其它應用程式也在使用的庫函式。這意味著 GNOME Shell 本身大約有 92 MB 記憶體不與其他行程共享。需要註意的是,上述例子中的其它程式也共享了很多記憶體。在某些應用程式中,共享記憶體在記憶體使用量中會占很大的比例。

值得一提的是,有時行程之間通過記憶體通信,這些記憶體也是共享的,但 top 這樣的工具卻不一定能檢測到,所以以上的說明也不一定准確。

關於交換分割槽

系統還可以通過交換分割槽來儲存資料(例如硬碟),但讀寫的速度相對較慢。當物理記憶體漸漸用滿,操作系統就會查找記憶體中暫時不會使用的部分,將其寫出到交換區域等待需要的時候使用。

因此,如果交換記憶體的使用量一直偏高,表明系統的物理記憶體已經供不應求了。有時候一個不正常的應用也有可能導致出現這種情況,但如果這種現象經常出現,就需要考慮提升物理記憶體或者限制某些程式的運行了。

感謝 Stig Nygaard[1] 在 Flickr[2] 上提供的圖片(CC BY 2.0)。


via: https://fedoramagazine.org/understand-fedora-memory-usage-top/

作者:Paul W. Frields[4] 選題:lujun9972 譯者:HankChow 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

赞(0)

分享創造快樂