对Linux中cached和buffers的理解

Linux - free中cached和buffers

用户空间在向内核发起内存申请时,会根据当前请求页面是否在内存缓存当中进行相应的策略调整.内核在内存当中会开辟一块缓冲区,用于提升读取页面的效率,否则就要进行相应的磁盘I/O读写. cached和buffers正是缓冲区中对应的两个不同区域,从字面上理解,感觉相差不大,以下说明下cached和buffers的意义.


首先 通过 man free进行查看

   buffers
          Memory used by kernel buffers (Buffers in /proc/meminfo)

   cached
          Memory used by the page cache  (calculated as Cached - Shmem in          /proc/meminfo  -  the  Cached value is actually the sum of page cache and tmpfs 

buffers:主要用于I/O写,将应用程序的多次零碎写事件,集中到一个缓冲区(即buffers),然后再一次性写入磁盘中,这样就提高了写磁盘的效率。

cached:主要用于提升读取相关页面的效率,内核会将经常访问的页面放到cached中,这样就提高了页面的命中率,cached越大,命中率就越高,就减少了I/O读请求。


以上是对buffers和cached的解释,这里主要讲下对cached的理解

cached又分为文件页(file cache)和匿名页(anonymous cache)

文件页:和外部存储设备上的某个文件相对应,例如磁盘文件对应的page cache;匿名页,其内容不来 自于外部存储设备,例如用户进程中的堆栈,回收匿名页会出现swap,因为页面里的数据不在文件里,要换出内存则必须swap。

猜你喜欢

转载自blog.csdn.net/harrypanda/article/details/77639352
今日推荐