buffer和cache
$ free -h
total used free shared buff/cache available
Mem: 1.9G 1.3G 139M 9.5M 514M 481M
Swap: 8.4G 233M 8.2G
free 指令的输出结果中,buff/cache 一列显示了用作 buffer 和 cache 的物理内存大小。那么 buffer 和 cache 到底有什么区别。
区别
- Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存。
- Buffer往往位于磁盘驱动层,侧重于作为内存和磁盘之间的写缓存,用于作为一个管道将多次小数据量的写入过程合并成一次较大数量的集中写入过程,可以优化磁盘的读写过程,加快访问速度;
- Cache往往位于文件系统层,侧重于作为读取文件数据的页缓存,按页从文件读取的数据后(即使读取的数据不足一页),重复访问相同数据时可直接从Cache中读取数据,而不需要再次访问速度较慢的低速设备。
在读写普通文件时,会经过文件系统,由文件系统负责与磁盘交互;而读写磁盘或者分区时,就会跳过文件系统,也就是所谓的“裸I/O“。这两种读写方式所使用的缓存是不同的,也就是上面所讲的 Cache 和 Buffer 区别。