歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下cache和buffer的使用情況

Linux下cache和buffer的使用情況

日期:2017/2/28 14:45:19   编辑:Linux教程

Linux下的cache和buffer是物理內存分配給高速緩存,以保證系統運行的更快,使用free命令可以查看內存的使用情況,

此處的內存使用情況:第一行的free+buffer為物理內存分配出來,但是free和buffer還沒有使用的大小。
第二行的-/+buffer/cache中的使用內存used為物理內存分配給buffer和cached的使用情況,free為真實的內存剩余大小。
總內存:memory=used+free=used1+free1=buffers+cached+used1+free
也就是說:free1=free+buffers+cache。
內存中的buffers和cached為內存使用的機制。
Buffers和cached:
Buffers(緩沖區)為還沒有寫入硬盤,cached(緩存)為已被從硬盤中讀取和存入硬盤以備使用。

Linux內核中cache的實現:
Kmem_cache是Linux內核提供的快速內存緩沖接口,這些內存塊要求是大小相同的,因為分配出的內存在接口師范時並不是真正釋放,而是作為緩存保留,下一次請求分配時就可以直接使用,省去了各種內存塊初始化或者釋放的操作,因此分配速度很快,通常用於大數量的內存塊兒分配情況,如:inode節點,skbuff頭,netfilter的連接,可以通過/proc/slabinfo文件直接讀取cache分配情況。
Kmem_cache在/proc/slabinfo中可以找到。

新的概念:
Page:Linux中,page是內核中內存基本管理單元,每個page的內存大小是固定的,對於x86來說,page是4k,slab則是kmem_cache的具體內存空間形式,根據cache的對象的大小,每個slab可以有1-32個page,如果把cache對象比一個page的空間還小,那麼這個page對象會容納多個對象以盡可能利用空間。
Kmem_cache數據結構並沒有定義在.h的頭文件。

Copyright © Linux教程網 All Rights Reserved