本压测方案主要测试Linux磁盘在应对大量的IO时,他的理想吞吐量是多少,为项目中的各个环节的传输做速度评估以及优化需求的前提。
获取根分区挂载的文件系统默认的Block size
[root@k8s-node ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 540K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vda1 79G 17G 59G 23% /
tmpfs 1.6G 0 1.6G 0% /run/user/0
[root@k8s-node ~]# tune2fs -l /dev/vda1 |grep "Block size"
Block size: 4096 (bytes)
使用dd对进行测试
模拟磁盘正常读写情况下的测试
在通常情况下,Linux的磁盘读写都是先将大量的数据通过buffer or cache进行缓存,之后再自动进行sync将缓存中的数据同步到磁盘中。这种读写的优势体现在,对于那些文件大小小于cache的文件传输,可以实现先通过cache的快速的读写先存下来,然后再同步到磁盘,文件传输的全程只同步了一次,相比于每次读写都要同步一次的方式要快很多。
[root@k8s-node ~]# dd if=/dev/zero of=/tmp/null bs=4096 count=1G conv=fsync
3099697+0 records in
3099697+0 records out
12696358912 bytes (13 GB) copied, 108.405 s, 117 MB/s