本压测方案主要测试Linux磁盘在应对大量的IO时,他的理想吞吐量是多少,为项目中的各个环节的传输做速度评估以及优化需求的前提。

获取根分区挂载的文件系统默认的Block size

  1. [root@k8s-node ~]# df -h
  2. Filesystem Size Used Avail Use% Mounted on
  3. devtmpfs 7.8G 0 7.8G 0% /dev
  4. tmpfs 7.8G 0 7.8G 0% /dev/shm
  5. tmpfs 7.8G 540K 7.8G 1% /run
  6. tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
  7. /dev/vda1 79G 17G 59G 23% /
  8. tmpfs 1.6G 0 1.6G 0% /run/user/0
  9. [root@k8s-node ~]# tune2fs -l /dev/vda1 |grep "Block size"
  10. Block size: 4096 bytes

使用dd对进行测试

模拟磁盘正常读写情况下的测试

在通常情况下,Linux的磁盘读写都是先将大量的数据通过buffer or cache进行缓存,之后再自动进行sync将缓存中的数据同步到磁盘中。这种读写的优势体现在,对于那些文件大小小于cache的文件传输,可以实现先通过cache的快速的读写先存下来,然后再同步到磁盘,文件传输的全程只同步了一次,相比于每次读写都要同步一次的方式要快很多。

  1. [root@k8s-node ~]# dd if=/dev/zero of=/tmp/null bs=4096 count=1G conv=fsync
  2. 3099697+0 records in
  3. 3099697+0 records out
  4. 12696358912 bytes (13 GB) copied, 108.405 s, 117 MB/s