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增长很多,说明读文件时