引言
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
昨天我们说了Buffer
和Cache
,不知道大家还记不记得,我们的结论是:Buffer
是搞写入磁盘的数据,Cache
是搞读文件缓存的,那写,它缓存嘛?今天我们实战来了解一下。
磁盘和文件写
首先,为了排除缓存的影响,我们使用指令:echo 3 > /proc/sys/vm/drop_caches,这个命令就是然后free命令查看整体内存情况,如下所示:
这个命令就是将这个文件的值置为3,3就是删除的意思。
接着我们执行 cat /proc/meminfo
命令,查看缓存,如下所示:
然后我们执行vmstat 1
命令,一秒打印一次:
- buff 和 cache 分别对应 Buffers 和 Cache,单位是 KB,打了这么多几乎没变。
- bi 和 bo 则分别表示块设备读取和写入的大小,单位为块 / 秒。因为 Linux 中块的大小是 1KB,所以这个单位也就等价于 KB/s。
然后用 dd if=/dev/urandom of=/tmp/file bs=1M count=500命令随机写入,我们之后再看:
然后我们执行vmstat 1
命令,一秒打印一次:
我们看到buff基本不变,cache疯涨,咦,你不是说文件是读缓存的嘛?怎么我写,它还涨啊?太晚了,我先睡了。