对我来说,不清楚buffer
和cache
这两个Linux内存概念之间的区别。我通读了一下this post,在我看来,它们之间的区别在于过期策略:
first-out
我说的对吗?
特别是,我正在研究两个命令:free
和vmstat
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
发布于 2011-06-15 00:05:33
"Buffers“表示RAM中有多少部分专用于缓存磁盘块。"Cached“类似于"Buffers",只不过这一次它会从文件读取中缓存页面。
引用自:
发布于 2012-09-23 03:43:03
缓冲区与特定的块设备相关联,涵盖文件系统元数据的缓存以及跟踪正在进行的页面。缓存仅包含驻留的文件数据。也就是说,缓冲区记住目录中的内容,文件权限是什么,并跟踪特定块设备正在从哪些内存中写入或读取哪些内存。缓存只包含文件本身的内容。
发布于 2013-02-03 18:36:44
简短回答: Cached是页面缓存的大小。buffers是内存块I/O缓冲区的大小。缓存问题;缓冲区在很大程度上是无关紧要的。
长期答案: Cached是Linux页面缓存的大小,减去交换缓存中的内存,用SwapCached表示(因此总的页面缓存大小是Cached + SwapCached)。Linux通过页面缓存执行所有文件I/O。只需将页缓存中相应的页标记为脏,就可以实现写操作;然后,刷新线程会定期将任何脏页写回磁盘。读取是通过从页面缓存返回数据来实现的;如果数据还不在缓存中,则首先填充该数据。在现代Linux系统上,缓存很容易达到几千兆字节。它只会在内存压力的情况下收缩。系统将清除页面缓存,并将数据交换到磁盘,以便根据需要提供更多内存。
缓冲区是内存中的块I/O缓冲区。它们的寿命相对较短。在Linux内核2.4版之前,Linux有单独的页缓存和缓冲区缓存。从2.4开始,页面缓存和缓冲区缓存是统一的,并且缓冲区是未在页面缓存中表示的原始磁盘块,即不是文件数据。因此,缓冲区度量是最不重要的。在大多数系统上,缓冲区通常只有几十兆字节。
https://stackoverflow.com/questions/6345020
复制相似问题