linux性能-06 内存中的buffer和cache

buffer 和 cache

  • buffer:Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。
  • cache:是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。
  • SReclaimable 是 Slab 的一部分。Slab 包括两部分,其中的可回收部分,用 SReclaimable 记录;而不可回收部分,用 SUnreclaim 记录。是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。
  • 简单理解:Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。

swap

  • Swap 说白了就是把一块磁盘空间或者一个本地文件(以下讲解以磁盘为例),当成内存来使用。它包括换出和换入两个过程。
    • 换出,就是把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。
    • 换入,则是在进程再次访问这些内存的时候,把它们从磁盘读到内存中来
    • Swap 其实是把系统的可用内存变大了。这样,即使服务器的内存不足,也可以运行大内存的应用程序。

内存占用问题解决思路

linux性能-06 内存中的buffer和cache