在Linux中测试IO性能[已关闭]

问题描述 投票:0回答:8

如何在 Linux 中测试 IO 性能?

linux file-io storage benchmarking
8个回答
38
投票

IO 和文件系统基准测试是一个复杂的主题。没有任何一种基准测试工具能够适用于所有情况。以下是关于不同基准测试工具的简要概述:

块存储:

  • IOMeter - 高度可定制并允许协调多个客户端。需要一台 Windows PC 用于协调应用程序。由英特尔开发。在 Linux 上,对旧版本(至少 2006.07.27 及更早版本)的最高速率持保留态度,因为提交方法不是最佳的。

文件系统(合成):

  • FFSB - 灵活的文件系统基准。 Linux 的非常简洁的基准测试。良好的工作负载定制。 NFS 基准测试 (net-ffsb) 有点不健全。
  • Filebench - 非常强大,但最初是为 Solaris 开发的。 Linux 支持不好。
  • sysbench - 主要是数据库基准测试工具,也是基本的文件系统基准测试工具。
  • bonnie - 似乎已经过时了。
  • bonnie++ - bonnie 的 C++ 端口.简单,但似乎不太可定制。

文件系统(工作负载):

  • Postmark - 模拟邮件服务器的 IO 行为。太小,无法对良好的 IO 系统施加压力。

石溪大学和 IBM Watson 实验室在“存储事务”中发表了一篇关于文件系统基准测试的强烈推荐期刊论文,其中介绍了不同的基准及其优缺点:一项为期九年的研究文件系统和存储基准测试。文章明确指出,大多数基准测试的结果至少是有问题的。


20
投票

工具:fio

链接:http://freshmeat.net/projects/fio/

测试物理磁盘IO:

    ./fio examples/disk-zone-profile 

设置参数: 顺序读/写:rw=读或rw=写 随机读/写:rw=randread 或 rw=randwrite


19
投票

如果您需要一种无需安装任何东西的快速方法。这是我用来测试写入速度的方法:

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 作为输出来检查。


10
投票
dd if=/dev/sda of=/dev/null

让它运行几分钟,然后使用 ctrl+C 停止它。它将打印驱动器/控制器的读取传输速度。这是您可以从驱动器中获得的最大读取速度。


5
投票

系统工作台

参见 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/


4
投票

您需要指定您要测试的内容,否则基准测试只会产生误导。您需要选择优化 IO 性能的不同方面,并使用不同的参数。

您的系统参数:

  1. 存储设备:HDD、SSD(哪个?)、Raid(哪个?)
  2. 文件系统、块大小、日志模式
  3. 文件缓存、脏阈值、内存量
  4. IO 调度程序,其可调参数
  5. CPU 数量
  6. 内核版本

您的测试参数:

  1. 读取或写入性能?
  2. 顺序还是随机?
  3. 1 个线程还是多个?
  4. 请求的大小
  5. 优化吞吐量或请求延迟?

3
投票

有一个优秀的程序可以在 Unix 上测试块存储 IO,称为 IORATE。您可以从 iorate.org 获取副本。

它可以生成复杂的混合IO,包括重用(命中)和用于分层存储测试的热区。


2
投票

看看 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

© www.soinside.com 2019 - 2024. All rights reserved.