系统性能瓶颈,都是磁盘惹的祸,一文搞定磁盘性能测试!

系统tps低,磁盘使用率高,CPU使用率又正常,那么就可以看看磁盘的的速度!

LInux操作系统可以使用dd和hdparm进行测试磁盘的速度,其中hdparm主要用于ssd磁盘测试。

磁盘测试速度之前,先介绍两个熟悉的设备:

测试磁盘写能力

dd if=/dev/zero of=/path/to/file count=2048k conv=fsync

参数解释:

if : input file

of: output file

这个命令的意思就是从一个文件写入另一文件,返回耗时和速度。

[root@sweng3 ]# dd if=/dev/zero of=/var/log/ss count=2048k conv=fsync
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 9.30563 s, 115 MB/s

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

conv=fsync 加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,这样算出来的时间才是比较符合实际使用结果的。(如果没有这个参数,只是写缓存,速度快很多。)

bs=512Bytes, 这是默认值,表示每次写入多大的块。

count=2048k, 写入多少次,这个例子中bs*count = 1GB,也就是写入1GB的数据来测试。

oflag=direct,测到的才是真实的磁盘IO速度

测试磁盘读能力

dd if=/dev/sda of=/dev/null bs=4k

/dev/sda是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sda上,也相当于测试磁盘的读能力。

用大文件来测试读速度

time dd if=/dev/zero of=/var/log/ss count=4096k conv=fdatasync

dd if=/var/log/ss of=/dev/null bs=32k

测试同时读写能力

time dd if=/dev/sda of=/var/log/dd bs=2048k

在这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sda是读,对/testrw.db 是写),假设它们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。

hdparm测试磁盘

hdparm仅用于Linux系统。现在主要用来测试SSD固态硬盘读取速度。

yum安装

yum install hdparm

源码包编译安装

# wget http://ncu.dl.sourceforge.net/project/hdparm/hdparm/hdparm-9.48.tar.gz
# tar zxvf hdparm-9.48.tar.gz
# cd hdparm-9.48
# make && make install 

测试硬盘的读取效率

hdparm -t /dev/sda

测试硬盘缓存的读取速度

hdparm -T /dev/sda

hdparm -Tt /dev/sda

2秒钟读取了17210 MB的缓存,读取速度约合8645 MB/sec;

在3.01秒中读取了1318MB磁盘数据(物理读),读取速度约合439 MB/sec

测试硬盘的实际读性能

hdparm -tT --direct /dev/sda

还可以使用sar、nmon等监控查看磁盘的速度等!

#头条创作挑战赛##linux#

展开阅读全文

页面更新:2024-03-06

标签:磁盘   都会   缓存   瓶颈   命令   性能   速度   硬盘   能力   文件   测试   设备   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top