【程序员必备小知识-内存知识24】内存实战讲解Buffer和Cache

引言

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

昨天我们说了BufferCache,不知道大家还记不记得,我们的结论是:Buffer是搞写入磁盘的数据,Cache是搞读文件缓存的,那写,它缓存嘛?今天我们实战来了解一下。

磁盘和文件写

首先,为了排除缓存的影响,我们使用指令:echo 3 > /proc/sys/vm/drop_caches,这个命令就是然后free命令查看整体内存情况,如下所示:

image.png

这个命令就是将这个文件的值置为3,3就是删除的意思。 image.png

接着我们执行 cat /proc/meminfo命令,查看缓存,如下所示:

image.png

然后我们执行vmstat 1命令,一秒打印一次:

image.png

  • buff 和 cache 分别对应 Buffers 和 Cache,单位是 KB,打了这么多几乎没变。
  • bi 和 bo 则分别表示块设备读取和写入的大小,单位为块 / 秒。因为 Linux 中块的大小是 1KB,所以这个单位也就等价于 KB/s。

然后用 dd if=/dev/urandom of=/tmp/file bs=1M count=500命令随机写入,我们之后再看:

image.png

然后我们执行vmstat 1命令,一秒打印一次:

image.png

我们看到buff基本不变,cache疯涨,咦,你不是说文件是读缓存的嘛?怎么我写,它还涨啊?太晚了,我先睡了。

猜你喜欢

转载自juejin.im/post/7018201325078839309