如何在 Linux 中测试 IO 性能?
IO 和文件系统基准测试是一个复杂的主题。没有任何一种基准测试工具能够适用于所有情况。以下是关于不同基准测试工具的简要概述:
块存储:
文件系统(合成):
文件系统(工作负载):
石溪大学和 IBM Watson 实验室在“存储事务”中发表了一篇关于文件系统基准测试的强烈推荐期刊论文,其中介绍了不同的基准及其优缺点:一项为期九年的研究文件系统和存储基准测试。文章明确指出,大多数基准测试的结果至少是有问题的。
工具:fio
链接:http://freshmeat.net/projects/fio/
测试物理磁盘IO:
./fio examples/disk-zone-profile
设置参数: 顺序读/写:rw=读或rw=写 随机读/写:rw=randread 或 rw=randwrite
如果您需要一种无需安装任何东西的快速方法。这是我用来测试写入速度的方法:
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
输出是这样的
root@rackserver:/# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 4.86922 s, 221 MB/s
还有: 之后删除测试文件以恢复使用的额外空间
一些解释:
bs = block size
count = the no of blocks to be written
调整这些参数以根据您的服务器规格更改写入文件的大小以及您想要写入的时间。
读取速度如 gtsouk 所建议,可以通过使用 /dev/null 作为输出来检查。
dd if=/dev/sda of=/dev/null
让它运行几分钟,然后使用 ctrl+C 停止它。它将打印驱动器/控制器的读取传输速度。这是您可以从驱动器中获得的最大读取速度。
系统工作台
参见 http://www.howtoforge.com/how-to-benchmark-your-system-cpu-file-io-mysql-with-sysbench
示例
sysbench --test=fileio --file-total-size=150G prepare
sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
还可以测试cpu、内存、线程、数据库服务器性能,
太棒了。
或者测试用java编写的软件:http://www.dacapobench.org/
您需要指定您要测试的内容,否则基准测试只会产生误导。您需要选择优化 IO 性能的不同方面,并使用不同的参数。
您的系统参数:
您的测试参数:
有一个优秀的程序可以在 Unix 上测试块存储 IO,称为 IORATE。您可以从 iorate.org 获取副本。
它可以生成复杂的混合IO,包括重用(命中)和用于分层存储测试的热区。
看看 IOzone: http://www.iozone.org/
如果您想阅读说明 HPC 集群实际使用情况的白皮书,请参阅此 pdf,第 36 页: http://i.dell.com/sites/content/business/solutions/hpcc/en/Documents/Dell-NSS-NFS-Storage-solution-final.pdf