Linux的內存機制:cache,buffer,swap(物理內存充足的情況下,swap區使用量大於0?!)

最近在做服務器相關的測試,需要從這些命令的輸出查看某協議傳輸數據過程中對內存的使用情況來尋找其瓶頸,發現一個問題:在物理內存充足的情況下,使用vmstat 命令查看內存使用情況,swpd 這個參數竟然是大於0的。看其他的博文裏說,出現這個情況那就是物理內存出現瓶頸,系統開始使用交換區內存。這就跟我的情況矛盾了,於是打算探個究竟。常見的查看內存的命令無非是這幾個,top,free,vmstat 等。。先搞清楚他們的含義吧~

首先搞清楚free出的這些參數的關係:

 總=used+free

空閒=buff+cache+free

cache和buffer雖然寫在一起,但是有不同的含義:

cache是告訴緩衝寄存器,處於CPU和主存之間,容量較小但是運行速度較快。其存在就是爲了解決CPU運算速度和主存的讀取速度不匹配的問題,當CPU從內存中讀取數據的時候是要等待一定的時間週期,那麼如果將一部分cpu最近使用較頻繁的數據進行保存,將它們放到處理速度較快的cache裏,就會減少CPU讀取數據的時間,因此提升了系統效率。

內存的工作方式就要複雜得多:

(1)找到數據的指針。(指針可能存放在寄存器內,所以這一步就已經包括寄存器的全部工作了。)

(2)將指針送往 MMU ,由MMU將虛擬的內存地址翻譯成實際的物理地址。

(3)將物理地址送往內存控制器 ,由內存控制器找出該地址在哪一根內存插槽上。

(4)確定數據在哪一個內存塊上,從該塊讀取數據。

(5)數據先送回內存控制器,再送回CPU,然後開始使用。

buffer與cache不同,它存放的是Linux系統最近使用的文件目錄及其屬性。

swap成爲內存交換空間,作用:在應付物理內存不足時存儲造成的內存擴展記錄的功能。當物理內存使用足夠的時候,系統是不

佔用swap區的,當物理內存不夠用了,系統就會將部分不常用的文件存至swap區,以保證系統運行。

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