A. linux怎么计算io读写速度
Linux下测试磁盘的读写IO速度,使用hdparm命令,下面是测试方法:
#hdparm-Tt/dev/sda
/dev/sda:
Timingcachedreads:6676MBin2.00seconds=3340.18MB/sec
Timingbuffereddiskreads:218MBin3.11seconds=70.11MB/sec
#可以看到,2秒钟读取了6676MB的缓存,约合3340.18MB/sec;
#在3.11秒中读取了218MB磁盘(物理读),读取速度约合70.11MB/sec;
B. 如何测试linux磁盘的读写速度
1、先熟悉两个特殊的设备:
(1)/dev/null:回收站、无底洞。
(2)/dev/zero:产生字符。
2、测试磁盘写能力
代码如下:
time dd if=/dev/zero of=/testw.dbf bs=4k count=100000
因为/dev//zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。命令结尾添加oflag=direct将跳过内存缓存,添加oflag=sync将跳过hdd缓存。
3、测试磁盘读能力
代码如下:
time dd if=/dev/sdb of=/dev/null bs=4k
因为/dev/sdb是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb上,也相当于测试磁盘的读能力。(Ctrl+c终止测试)
4、测试同时读写能力
代码如下:
time dd if=/dev/sdb of=/testrw.dbf bs=4k
在这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sdb是读,对/testrw.dbf是写),假设它们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。
C. Linux 系统下进行iozone 硬盘读写
iozone是一个文件系统的基准测试工具,可以全面测试不同操作系统中文件系统的读写性能
方法/步骤
命令及参数说明
-a:使用全面自动模式,使用的块大小从4k到16M,在文件大于 32MB时将自动停止使用低于64K的块大小测试,这节省了许多时间。
-z:与-a连用,测试所有的块,强制iozone 在执行自动测试时包含小的块;
-R:生成Excel报告。iozone将生成一个兼容Excel的标准输出报告,这个文件可以使用Microsoft Excel打开,可以创建一个文件系统性能的图表。注意:3D图表是面向列的,画图时需要选择这项,因为Excel默认处理面向行的数据;
-b filename : iozone输出结果时将创建一个兼容Excel的二进制格式的文件。
-n:设置测试时最小文件大小
-g:设置测试时最大文件大小
-s:设置测试时文件大小
-f filename: 指定测试文件的名字,完成后会自动删除(这个文件必须指定你要测试的那个硬盘中)
-y:指定测试块的大小范围,表示测试最小块大小,需要和-a同时使用;
-q:指定测试块的大小范围,表示测试最大块大小,需要和-a同时使用;
-r:指定测试的块大小测试。
如果只在意读/写的性能,并不想花时间执行所有测试,可以像如下一样限制测试内容
./iozone –Ra –g 2G –i 0 –i 1
-i :设置I/O测试模式(0=write/Re-write,1=read/Re-read,2=random-read/write,3=Read-backwards … 12=preadv/Re-preadv),这些别的详细内容请查man
首先需要进入iozone3_397/src/current/路径下,然后再执行下列命令
全面的自动测试模式,所有参数都是缺省的,并且测试完成所有的操作,生成输出结果iozone.xls,这个文件可以使用Microsoft Excel打开,执行下列命令:
./iozone -a -Rb /home/loongson/iozone.xls
自定义模式,设置最小测试文件为64M,最大测试文件为1G,只进行读写测试,并在当前路径下生成输出结果iozone.xls,在终端执行下列命令:
./iozone -a -n 64m -g 1G -i 0 -i 1 -Rb ./iozone.xls
设备当前内存大小是8G,需要指定内存大小的两倍,并且从块大小4K到16M结束全面测试;
./iozone -a -s 16g -Rb ./iozone.xls
6
挂载盘的测试,比如U盘等;首先要现将测试盘挂载到/mnt目录下;
./iozone -a -n 1g -g 4g -i 0 -i 1 -f /mnt/iozone -Rb ./iozone.xls
7
设备当前内存大小是8G,需要指定内存大小的两倍,并且从指定块64k大小开始到16M结束全面测试;
./iozone -a -y 64k -s 16g -Rb ./iozone.xls
8
指定块大小测试案例
./iozone -a -i 0 -i 1 -i 2 -s 8g -r 16m -Rb iozone.xls
D. windows和Linux测试磁盘读写速度
测试windows的命令:winsat disk -drive 盘符,其中D盘是机械硬盘,C盘是SSD;从截图中可以看出机械硬盘顺序读的速度是随机读的10倍,SSD的顺序读速度接近随机读的3倍
、
E. 在 Linux 上检测硬盘速度
在Linux中可以用 hdparm 命令来测试硬盘速度。
为了检测更精准,这个操作应该 重复2-3次 。这显示了无需访问磁盘,直接从 Linux 缓冲区缓存中读取的速度。这个测量实际上是被测系统的处理器、高速缓存和存储器的吞吐量的指标。这是一个 for 循环的例子,连续运行测试 5 次:
F. Linux 如何测试 IO 性能(磁盘读写速度
linux下测试磁盘IO读写速度
[root@node3 /]# time dd if=/dev/sda2 of=/dev/null bs=8k count=524288
524288+0 records in
524288+0 records out
4294967296 bytes (4.3 GB) copied, 37.4222 seconds, 115 MB/s
real 0m37.497s
user 0m0.036s
sys 0m1.320s
了4.3G的数据,平均速度为115M/s
[root@node3 /]# hdparm -t /dev/sda2
/dev/sda2:
Timing buffered disk reads: 284 MB in 3.00 seconds = 94.55 MB/sec
[root@node3 /]# hdparm -t /dev/sda2
/dev/sda2:
Timing buffered disk reads: 292 MB in 3.02 seconds = 96.82 MB/sec
读了将近300M的数据,平均速度大约为95M/s
经过以上的测试数据大体估算该磁盘的性能大约为100M/s
G. linux shell 硬盘文件读写校验测试脚本
读写失败时dd的返回值分别是多少一直查不到,而如果这个没法弄明白的话,校验的对错就没什么意义了(根本不知道是dd出的错还是md5sum出的错),算了,你将就一下吧,查到后改一下就好了。
#!
/bin/bash
infile="$1"
cycle=0
=0
err=0
if
[
"$#"
-ne
1
]
||
[
!
-f
"$1"
]
then
echo
"用法:test
<infile>"
exit
1;
fi
echo
-e
"<>警告<>:本测试程序对磁盘有较大损害,请您谨慎运行。"
echo
-e
"
按Crtl+C键终止测试"
echo
-e
"开始测试?(y/n)y:c"
while
read
-r
answer
</dev/tty
do
if
[
"$answer"
==
'n'
]
||
[
"$answer"
==
'N'
]
then
echo
"结果:$cycle
轮共
$
次复制,读/写错误
$err
次"
rm
-f
${infile}_*
exit
0
fi
let
cycle++
echo
"=========================
第
$cycle
轮
==========================="
rm
-f
"$infile"_*
sync
let
++
#方便起见,选第一分区爆之
while
[
"$(df
-k|sed
-n
'3q;2s/
*/
/g;2p'|cut
-d
'
'
-f
4)"
-gt
1
]
do
echo
"===========
副本
$
==========="
outfile="${infile}_${}"
dd
if="$infile"
of="$outfile"
#关于dd命令如果遭遇读失败或写失败的返回码无据可查,但肯定不是0,
另一种实现方法是用md5sum
--status检验,但这种方法看起来多此一举反而导致读写比变>为3:1
if
[
"$?"
-ne
0
]
then
let
err++
fi
let
++
echo
&&
sync
trap
"echo
'结果:'
$cycle
'轮共'
$
'次复制,读/写错误'
$err
'次'
&&
rm
-f
${infile}_*
&&
exit;"
1
2
3
15
done
echo
-e
"磁盘已满,删除测试文件后继续?(y/n)y:c"
done
H. 如何查看linux服务器io读写情况
首先 、用top命令查看
top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si
Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers
Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached
查看12.6% wa
IO等待所占用的CPU时间的百分比,高过30%时IO压力高
其次、 用iostat -x 1 10
avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.25 33.46 66.29
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
查看%util 100.10 %idle 66.29
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)
vmstat -1
如果你想对硬盘做一个IO负荷的压力测试可以用如下命令
time dd if=/dev/zero bs=1M count=2048 of=direct_2G
此命令为在当前目录下新建一个2G的文件
我们在新建文件夹的同时来测试IO的负荷情况
I. Linux下测试磁盘读写速度(转)
理论上复制量越大测试越准确。
命令解释:
time 有计时作用,dd 用于复制,从 if 读出,写到 of。
if=/dev/zero 不产生 IO,因此可以用来测试纯写速度。
同理 of=/dev/null 不产生 IO,可以用来测试纯读速度。
bs 是每次读或写的大小,即一个块的大小,count 是读写块的数量。
J. Linux查看实时硬盘读写速度
可以参考以下资料
1. 了解hdparm命令Linux上使用hdparm命令查看硬盘信息和测试硬盘读写速度。Linux测试硬盘读写速度用什么命令了解hdparm命令
以CentOS7.5为例。默认情况下,并没有安装该工具。[root@zcwyou ~]# yum -y install hdparm2. 查看硬盘信息:/dev/sda:SG_IO: bad/missing sense data, sb[]: 70 1c 05 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3. 显示硬盘的摘要信息