我想做linux的磁盘io性能测试,有什么好的工具和方法推荐吗,感谢
首先,了解些磁盘的知识
现在常用的磁盘有多种,如机械硬盘、固态硬盘等。
不同种类磁盘有其各自特性,比如机械硬盘外磁道比内磁道快。
其次,可以了解下Linux的io堆栈
比如,了解数据真正落盘跟缓存在内存中的区别。
不同版本内核,io堆栈会有更新换代而稍有不同。具体参考内核作者的网站:https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram
具体Io测试工具不少,这里推荐几个我用的工具
简单粗暴的工具:fio (
https://fio.readthedocs.io/en/latest/fio_doc.html)
复杂一些同时可以图形显示测试结果的工具:nmon (https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon)。
nmon的可视化工具有:nmonchart,NMONVisualize需要跟踪io读写,可以使用blktrace,跟踪每个io请求对应的扇区号。
除了fio测试工具和iostat,其他工具的测试结果基本上都是扯淡,跟直观感受距离太远,尤其是随机IO。
而且测试结果都不能反映真实负载,如果依据这个结果去预估负载,更是差的远。
磁盘的io控制主要采取什么方式
磁盘的io控制主要采取DMA方式。
DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。 但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。
磁盘io使用率高怎么办
1. 必须从系统和应用程序等不同层面上找原因,定位磁盘I/O使用率高的具体原因。
一般来说,可能是磁盘读写速度降低、操作系统占用率或者应用程序的I/O负荷过大等问题所导致。
2. 针对不同问题可以采用不同的解决措施。
比如,可以通过升级磁盘或增加缓存提高磁盘I/O速度;关闭无关操作或调整应用程序参数减轻I/O负荷等。
具体的情况需要根据实际情况来确定。
硬盘IO出错
硬盘IO错误,无法读取硬盘问题可以通过chkdsk磁盘修复工具来解决。
具体操作步骤如下:
1、在电脑左下角点击开始菜单,找到运行。
2、点击运行,可以看到运行的界面。
3、在运行框输入:cmd,打开管理员界面。
4、打开管理员界面时,首先要确认好硬盘在电脑上显示的盘符,到计算机中可以看到显示盘为:G
5、然后到管理界面输入代码:chkdskG:/f(需要注意代码中的G代表的是硬盘的盘符,如果您的显示是H,那就把G换为H)。
6、按enter回车键确认,硬盘就修复好了。