1. 程式人生 > >linux系統下top命令進行記憶體監控

linux系統下top命令進行記憶體監控

今天進行壓力測試,測試進行了兩波後,發現使用top命令監控系統性能,mem中used很高:

一段時間甚至接近total

很疑惑到底為什麼,開始懷疑是記憶體洩露,但是服務已經全部殺掉後used仍然保持很高。

查詢了下linux下使用top命令進行監控的詳細解釋,網上對這個的解釋很多很詳細,實際上並非服務記憶體洩露的原因,而是linux核心對於記憶體的管理造成的:

1. linux中核心對於已經使用了的記憶體,當期被服務或應用釋放掉後,未必會將其放在free中,而是可能將其放在buffers和cached中

2. top中顯示的men中 used  free 實際上都是核心角度的記憶體分配情況  也就是雖然used 使用很高 但是實際上服務或者應用是可以使用buffers和cached的記憶體的

當top中看到的free不多了的時候,核心會從buffers和cached中吐一部分出來支援free

3. 可以使用 free -m 命令進行進一步的檢視:

圖中可見:

buffer/cache 中的used 實際上才是實際被使用的記憶體大小,而其下的free  31360 是實際服務/應用可用的記憶體,mem與top中的mem是一樣的,也就是mem中的free+buffers+cached才是buffer/cache中的 free

後續壓測中也驗證了這一點,當mem中free較多時,優先使用free的實際實體記憶體,buffers和cached基本不變,當free快要耗盡時,buffers和cached變小,free會增加一些。

當然,如果buffers和cached也耗盡了,系統就會使用swap虛擬記憶體。

綜上,linux系統下進行top檢測記憶體的使用情況,不能完全看mem中的used 和 free  還是需要結合 free -m  和實際的應用進行具體分析。