关于Linux内存 和 buffer & cache

关于 buffer (缓冲) 和cache (缓存) :

       Buffer 对数据进行流量整形,保持数据在处理前后流量大小基本持平。 减少I/O次数(减少大量小规模的I/O 将这些I/O转换为次数少但数据量大的I/O操作,这也比较符合 HDD的特性。当然现在nvme的SSD 已经非常优秀了)。
      Cache 平衡CPU处理数据量和磁盘访问速度的产物, 所以就需要cache 来平衡。当磁盘的访问速度能跟上CPU的时钟速度大概 理论上就不需要 cache了。

系统内存

系统在大量读取文件后,导致系统内存使用完毕。但是程序结束后系统不会正常释放内存,而是作为缓存 cache 起来。 这就导致我们在系统中看到大量的内存被buffer和cache起来。

echo N > /proc/sys/vm/drop_caches , 当N数值不同时,free –m存在差异 通过这个 命令就可以让系统释放缓存,但请在释放之前先把内存中必要的数据写到硬盘上在释放。通过下面命令即可实现。

sync
sync – flush file system buffers Force changed blocks to disk, update the super block.
刷新文件系统缓存, 强制修改块设备更新超级块 ==?(更新分区表)。

通常 N的值 只有四个

0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存

默认
[root@VM_0_9_centos ~]# cat /proc/sys/vm/drop_caches
0