linux中記憶體使用,swap,cache,buffer的含義

itpub120發表於2009-11-04
首先介紹一下linux中記憶體是如何使用的。[@more@]當有應用需要讀寫磁碟資料時,由系統把相關資料從磁碟讀取到記憶體,如果實體記憶體不夠,則把記憶體中的部分資料匯入到磁碟,從而把磁碟的部分空間當作虛擬記憶體來使用,也稱為Swap。如果給所有應用分配足夠記憶體後,實體記憶體還有剩餘,linux會盡量再利用這些空閒記憶體,以提高整體I/O效率,其方法是把這部分剩餘記憶體再劃分為cache及buffer兩部分加以利用。
從磁碟讀取到記憶體的資料在被相關應用程式讀取後,如果有剩餘記憶體,則這部分資料會存入cache,以備第2次讀取時,避免重新讀取磁碟。當一個應用程式在記憶體中修改過資料後,因為寫入磁碟速度相對較低,在有空閒記憶體的情況下,這些資料先存入buffer,在以後某個時間再寫入磁碟,從而應用程式可以繼續後面的操作,而不必等待這些資料寫入磁碟的操作完成。
如果在某個時刻,系統需要更多的記憶體,則會把cache部分擦除,並把buffer中的內容寫入磁碟,從而把這兩部分記憶體釋放給系統使用,這樣再次讀取cache中的內容時,就需要重新從磁碟讀取了。
透過以上分析可以得知,空閒實體記憶體不多,不一定表示系統執行狀態很差,因為記憶體的cache及buffer部分可以隨時被重用,在某種意義上,這兩部分記憶體也可以看作詩額外的空閒記憶體。swap如果被頻繁呼叫,bi,bo長時間不為0,則才是記憶體資源是否緊張的依據。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-1028436/,如需轉載,請註明出處,否則將追究法律責任。

相關文章