系统tps低,磁盘使用率高,CPU使用率又正常,那么就可以看看磁盘的的速度! LInux操作系统可以使用dd和hdparm进行测试磁盘的速度,其中hdparm主要用于ssd磁盘测试。 磁盘测试速度之前,先介绍两个熟悉的设备:devnull:回收站、无底洞。devzero:伪设备,它只产生空字符流,对它不会产生IO。测试磁盘写能力 ddifdevzeroofpathtofilecount2048kconvfsync 参数解释: if:inputfile of:outputfile 这个命令的意思就是从一个文件写入另一文件,返回耗时和速度。〔rootsweng3〕ddifdevzeroofvarlogsscount2048kconvfsync20971520recordsin20971520recordsout1073741824bytes(1。1GB)copied,9。30563s,115MBs 因为devzero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。 convfsync加入这个参数后,dd命令执行到最后会真正执行一次同步(sync)操作,这样算出来的时间才是比较符合实际使用结果的。(如果没有这个参数,只是写缓存,速度快很多。) bs512Bytes,这是默认值,表示每次写入多大的块。 count2048k,写入多少次,这个例子中bscount1GB,也就是写入1GB的数据来测试。convfdatasync表示只把文件的数据写入磁盘,fsync与fdatasync相差不大 oflagdsync每个blocksize都单独写一次磁盘,使用同步IO,去除caching的影响,这是最慢的一种方式,可以当成是模拟数据库插入操作。 oflagdirect,nonblock避掉文件系统cache,直接读写,不使用buffercache oflagdirect,测到的才是真实的磁盘IO速度 测试磁盘读能力 ddifdevsdaofdevnullbs4k devsda是一个物理分区,对它的读取会产生IO,devnull是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在devsda上,也相当于测试磁盘的读能力。用大文件来测试读速度 timeddifdevzeroofvarlogsscount4096kconvfdatasync ddifvarlogssofdevnullbs32k 测试同时读写能力 timeddifdevsdaofvarlogddbs2048k 在这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对devsda是读,对testrw。db是写),假设它们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。hdparm测试磁盘 hdparm仅用于Linux系统。现在主要用来测试SSD固态硬盘读取速度。yum安装 yuminstallhdparm 源码包编译安装wgethttp:ncu。dl。sourceforge。netprojecthdparmhdparmhdparm9。48。tar。gztarzxvfhdparm9。48。tar。gzcdhdparm9。48makemakeinstall 测试硬盘的读取效率 hdparmtdevsda 测试硬盘缓存的读取速度 hdparmTdevsda hdparmTtdevsda 2秒钟读取了17210MB的缓存,读取速度约合8645MBsec; 在3。01秒中读取了1318MB磁盘数据(物理读),读取速度约合439MBsec测试硬盘的实际读性能 hdparmtTdirectdevsda 还可以使用sar、nmon等监控查看磁盘的速度等! 头条创作挑战赛linux