- 结果筛选
D:\Work\Project\EG540-G30 擎天柱\EVT>find "write: IOPS" 全部硬盘fio.log
D:\Work\Project\EG540-G30 擎天柱\EVT>find ": io" 全部硬盘fio.log
将两个结果并排放在exl中,进行分列筛选即可
2. 测FIO时,同时监控HDD温度及带宽的方法
前提:先把fio跑起来
1."# smartctl -i /dev/hdb 检查硬盘是否支持SMART
smartctl -a /dev/nvme0n1 |grep -i temp #看温度
注意:千万不能组成RAID,否则会导致HDD变成RAID模式,将不支持smartctl"
可以用自动监控硬盘温度脚本来记录读数,注意改下HDD的名字
2.iostat -xm 2 实时显示盘的读写
用来观察带宽和占用率是否有下降,然后记录截图
注意:fio用跑顺序写,因为这个占用率高
- 注意,对于NVme每次测试写之前最好都要清理一下硬盘,
①单跑fio的时候:当硬盘带宽明显跑的不够高时,尤其是比dd低好多的时候,要考虑将jobsnum的值改为1.
②和cpu压力同时跑的时候:当硬盘有时是nvme速率明显下降的时候,要适当增加jobsnum的值,比如说从1升到8
在iostat -mx 2界面下看,如果硬盘的%util没有到100%,那就是numjobs小了,否则该值只可能更大
原因分析:正常情况下,一个CPU线程的处理速度远高于HDD的速度,所以用一个进程即可满足,但如果改成多线程,将会导致读写操作在这些线程中来回切换,所以速率反而降低。
与CPU压力同时跑时,由于CPU的线程被调去跑压力,导致线程分配给fio读写的资源不足,不足以达到HDD的满性能读写,所以适当增加一些线程,让多个线程一起供SSD资源,可以提高速率。
经验证,numjobs数量增大不会影响速率?!
③看看hdd的空间是不是满了,导致写入缓慢。
首先,可以比较一下读写的差异是不是很大,如果大,很可能是hdd满了。
Nvme查看磁盘使用量的方法:
[root@localhost 桌面]# yum install nvme-cli
[root@localhost 桌面]# nvme list
如果已经满了,进行格式化hdd
[root@localhost 桌面]# mkfs.ext4 /dev/nvme1n1
格式化完毕后,在看一下,注意显示可能有延时,多刷几遍。
④如果用方法③不行的话,怎么操作磁盘都是满的,就在图形界面下,用磁盘工具擦除,再试试效果。
⑤如果方法三不好使,试试下面这个方法:
nvme format -s 1 /dev/nvme1n1
这条命令执行后,虽然在nvme list显示ssd的占用率还是100%,但其实上已经擦除了,在测试速率确实会变高。
⑥简易格式化
dd if=/dev/zero of=/dev/sd* bs=1M count=1
3. 如果发现跑着跑着速率就低了,很可能是磁盘满了,或者温度过高导致的降频
- 找到系统中某个hdd对应的位置。
方法1、用如下命令:
[root@localhost ~]# smartctl --all /dev/nvme2n1
找到里面的sn信息:
Model Number: INTEL SSDPE2KX040T8
Serial Number: PHLJ11100A1N4P0DGN
然后再去找对应的实物hdd即可。
方法2、如果是raid卡控制的,用raid点亮led的方式:
点亮HDDled:diver management---选中一块盘--option--start locate-- go,确认完之后记得要stop locate掉
- 监测IO口的总带宽
[root@localhost ~]# vmstat 1
用这个命令可以看所有hdd的总速率
4. SSD测试速率不稳定的问题,结论如下:
建议的测试顺序:格式化磁盘+顺序预处理+顺序测试+随机预处理+随机测试,如果时间不急的话,可以直接用脚本
lantency是要看一下延时,和各队列的速度分布情况
第二次顺序预处理速率低:因为里面都是随机的数据,所以顺序写的时候,是不会先写进nand里的,而是先进性数据搬移,再写入,所以性能会低
硬盘格式化之后,里面的数据都是死数据,写测试的时候,不会进行数据搬移,而是直接写,所以性能会偏高,不准;
所有的厂商的ssd都是这样;
每次测试都要这样做;
业内跑性能顺序通常用128K写,numjobs=1,iodepth=128;
5. 强制关闭fio
[root@localhost ~]# killall fio