1.buffer和cache
- Buffers是对原始磁盘块的临时存储,也就是缓存磁盘的数据(20MB左右)
- Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。减少访问磁盘的次数
- SReclaimable 是 Slab 的一部分。Slab 包括两部分,其中的可回收部分,用 SReclaimable 记录;而不可回收部分,用 SUnreclaim 记录。
2.案例
2.1 磁盘和文件写案例
步骤1. 在第一个终端运行vmstat
1
2
3
4
5
6
7
|
# 每隔1s输出1组数据
$ vmstat 1
# 打印
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 1329296 33000 362496 0 0 2 0 109 14 0 1 99 0 0
0 0 0 1329288 33000 362540 0 0 0 0 493 815 0 1 99 0 0
|
buff、cache就是缓存和存储,单位kb
bi和bo分别表示设备读取和写入,单位为块/秒=(kb/s)(linux中块的大小为1kb)
步骤2. 在第二终端执行 dd 命令,通过读取随机设备,生成一个 500MB 大小的文件:
1
|
$ dd if=/dev/urandom of=/tmp/file bs=1M count=500
|
步骤3. 观察第一个终端的buff和cache
1
2
3
4
5
6
7
|
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 1329540 33000 362532 0 0 0 0 495 859 0 1 99 0 0
1 0 0 1221920 33000 469896 0 0 80 0 1514 1207 0 22 77 0 0
1 0 0 1112552 33016 579296 0 0 16 53248 1610 964 0 26 74 0 0
1 0 0 1007088 33040 684576 0 0 16 106496 1809 995 0 25 74 1 0
1 0 0 901184 33040 791096 0 0 0 106496 1780 967 0 26 74 0 0
|
分析:bo出现了106496kb/s,说明设备有大量的写入操作
2.1 磁盘和文件读案例
步骤1. 在第一个终端运行vmstat
步骤2. 在第二终端执行 dd 命令
清理缓存后,从磁盘分区 /dev/sda1 中读取数 据,写入空设备:
1
2
3
4
5
6
7
8
9
10
11
|
# 首先清理缓存
$ echo 3 > /proc/sys/vm/drop_caches
# 运行 dd 命令读取文件
$ dd if=/dev/sda1 of=/dev/null bs=1M count=1024
# 打印
...
r b swpd free buff cache si so bi bo in cs us sy id wa st
4 0 0 1550296 1056 165584 0 0 0 0 556 957 0 1 99 0 0
3 0 0 1384708 1192 330848 0 0 164984 0 2781 1445 6 10 84 1 0
1 0 0 1112044 1192 603536 0 0 272128 0 5781 1117 10 15 74 1 0
0 0 0 1036704 1192 678808 0 0 75076 0 2069 1206 3 4 92 0 0
|
分析:buff不变,cache增长很多,说明读文件时,