首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Linux中的缓冲区和缓存有什么不同?

Linux中的缓冲区和缓存有什么不同?
EN

Stack Overflow用户
提问于 2011-06-14 22:20:38
回答 12查看 239K关注 0票数 186

对我来说,不清楚buffercache这两个Linux内存概念之间的区别。我通读了一下this post,在我看来,它们之间的区别在于过期策略:

first-out

  • cache's

  • buffer的策略是先入,最近最少使用策略。

我说的对吗?

特别是,我正在研究两个命令:freevmstat

代码语言:javascript
复制
james@utopia:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
5  0      0    173     67    912    0    0    19    59   75 1087 24  4 71  1
james@utopia:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2007       1834        172          0         67        914
-/+ buffers/cache:        853       1153
Swap:         2859          0       2859
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-06-15 00:05:33

"Buffers“表示RAM中有多少部分专用于缓存磁盘块。"Cached“类似于"Buffers",只不过这一次它会从文件读取中缓存页面。

引用自:

票数 73
EN

Stack Overflow用户

发布于 2012-09-23 03:43:03

缓冲区与特定的块设备相关联,涵盖文件系统元数据的缓存以及跟踪正在进行的页面。缓存仅包含驻留的文件数据。也就是说,缓冲区记住目录中的内容,文件权限是什么,并跟踪特定块设备正在从哪些内存中写入或读取哪些内存。缓存只包含文件本身的内容。

quote link

票数 187
EN

Stack Overflow用户

发布于 2013-02-03 18:36:44

Cited answer (for reference):

简短回答: Cached是页面缓存的大小。buffers是内存块I/O缓冲区的大小。缓存问题;缓冲区在很大程度上是无关紧要的。

长期答案: Cached是Linux页面缓存的大小,减去交换缓存中的内存,用SwapCached表示(因此总的页面缓存大小是Cached + SwapCached)。Linux通过页面缓存执行所有文件I/O。只需将页缓存中相应的页标记为脏,就可以实现写操作;然后,刷新线程会定期将任何脏页写回磁盘。读取是通过从页面缓存返回数据来实现的;如果数据还不在缓存中,则首先填充该数据。在现代Linux系统上,缓存很容易达到几千兆字节。它只会在内存压力的情况下收缩。系统将清除页面缓存,并将数据交换到磁盘,以便根据需要提供更多内存。

缓冲区是内存中的块I/O缓冲区。它们的寿命相对较短。在Linux内核2.4版之前,Linux有单独的页缓存和缓冲区缓存。从2.4开始,页面缓存和缓冲区缓存是统一的,并且缓冲区是未在页面缓存中表示的原始磁盘块,即不是文件数据。因此,缓冲区度量是最不重要的。在大多数系统上,缓冲区通常只有几十兆字节。

票数 88
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6345020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档