Linux下free命令詳解

這是我查到的,很好的解釋,供參考!  這也是讓我們更深入的理解此FREE命令,及linux內核處理內存的機制了:  

我的linux執行free命令顯示如下:  

[root@Linux /tmp]# free              

               total       used       free     shared    buffers     cached 

Mem:     4149156    4130412      18744          0      13220    2720160 

-/+ buffers/cache:    1397032    2752124

Swap:      6289408        144    6289264 

一、free命令的解釋

第一行:

total 內存總數: 4149156 

used 已經使用的內存數: 4130412 

free 空閒的內存數: 18744 

shared 當前已經廢棄不用,總是0 

buffers Buffer Cache內存數: 13220 

cached Page Cache內存數: 2720160

關係:total = used + free

第二行:

-/+ buffers/cache的意思相當於: -buffers/cache 的內存數:1397032 (等於第1行的 used - buffers - cached) 

+buffers/cache 的內存數: 2752124 (等於第1行的 free + buffers + cached) 

可見-buffers/cache反映的是被程序實實在在喫掉的內存,而+buffers/cache反映的是可以挪用的內存總數。

第三行:暫時不說

如上面的例子:使用了4149156的內存,4130412 被佔用,但是buuffer和cached部分作爲緩存,可以使用命中率的方式提高使用效率,而且這部分緩存是根據指令隨時可以釋放的,我們可以認爲這部分內存沒有實際被使用,也可以認爲它是空閒的。 因此查看目前進程正在實際被使用的內存,是used-(buffers+cache),也可以認爲如果swap沒有大量使用,mem還是夠用的,只有mem被當前進程實際佔用完(沒有了buffers和cache),纔會使用到swap的。

二. Swap配置對性能的影響 

       分配太多的Swap空間會浪費磁盤空間,而Swap空間太少,則系統會發生錯誤。 如果系統的物理內存用光了,系統就會跑得很慢,但仍能運行;如果Swap空間用光了,那麼系統就會發生錯誤。例如,Web服務器能根據不同的請求數量衍生出多個服務進程(或線程),如果Swap空間用完,則服務進程無法啓動,通常會出現“application is out of memory”的錯誤,嚴重時會造成服務進程的死鎖。因此Swap空間的分配是很重要的。  

       通常情況下,Swap空間應大於或等於物理內存的大小,最小不應小於64M,通常Swap空間的大小應是物理內存的2-2.5倍。但根據不同的應用,應有不同的配置:如果是小的桌面系統,則只需要較小的Swap空間,而大的服務器系統則視情況不同需要不同大小的Swap空間。特別是數據庫服務器和Web服務器,隨着訪問量的增加,對Swap空間的要求也會增加,一般來說對於4G 以下的物理內存,配置2倍的swap,4G 以上配置1倍。 

        另外,Swap分區的數量對性能也有很大的影響。因爲Swap交換的操作是磁盤IO的操作,如果有多個Swap交換區,Swap空間的分配會以輪流的方式操作於所有的Swap,這樣會大大均衡IO的負載,加快Swap交換的速度。如果只有一個交換區,所有的交換操作會使交換區變得很忙,使系統大多數時間處於等待狀態,效率很低。用性能監視工具就會發現,此時的CPU並不很忙,而系統卻慢。這說明,瓶頸在IO上,依靠提高CPU的速度是解決不了問題的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章