Linux常用指标性能测试

最近工作遇到一个问题,怀疑虚拟机磁盘性能有问题,因为之前用过几次Phoronix Test Suite(以下简称PTS),不过运行一个iozone的测试居然要4、5个小时,便果断放弃了。

最后选用号称IO测试界的瑞士军刀fio,并成功排除问题。

Benchmark即基准测试,俗称“跑个分”,通常用于多个环境或多次测试结果的比较,最初会建立一个基线/Baseline作为参考。

常用工具

关于Linux常用指标的性能测试工具介绍。

IO简单测试

  • dd: 监控写性能(简单的顺序写)
    • oflag=dsync: 同步,等同于sync命令
    • conv=fdatasync: 等价于上面选项
  • hdparm: 测试写和缓存性能
  • iotop: top类型

dd使用

# 各参数说明
dd if=/dev/input.file  of=/path/to/output.file  bs=block-size  count=number-of-blocks  conv=fdatasync
# 示例
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 conv=fdatasync
dd if=/dev/zero of=/tmp/testfile bs=128k count=1k conv=fdatasync

hdparm使用

# Buffered disk reads
hdparm -t /dev/sda1

# Cache reads
hdparm -T /dev/sda1

IO专项测试

常用指标:

  • IOPS: Input/Output Operations per Second,即每秒的读写(处理的I/O请求)次数,是衡量磁盘性能的主要指标之一

  • OLTP(Online Transation Processing): IOPS的关键衡量指标,适用于随机读写频繁的应用

  • Throughput/吞吐量: 单部时间内成功传输的数据量,适用于大量顺序读写的应用,如视频点播

  • fio:随机读写的IOPS

  • ioping:IO延迟,通常应在ms级

fio

主要关注iops指标,普通磁盘在几千左右,SSD应在几万左右。

安装和使用:

cd /root
yum install -y make gcc libaio-devel || ( apt-get update && apt-get install -y make gcc libaio-dev  </dev/null )
wget https://github.com/axboe/fio/archive/fio-3.17.tar.gz ; tar xf fio*
cd fio-fio*
make

# 执行测试
# 随机读写,读占75%
./fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

综合类

  • atop
  • sysbench:支持CPU、内存、MySQL数据库等
  • Phoronix Test Suite: 比较重量级一些,测试时间较长

Phoronix Test Suite

通过这里查看具体测试定义。

PTS安装和使用

wget https://phoronix-test-suite.com/releases/phoronix-test-suite-9.2.1.tar.gz
yum install php-cli  php-xml 
tar xfz phoronix-test-suite-9.2.1.tar.gz 
cd phoronix-test-suite
# 查看系统软硬件信息
./phoronix-test-suite system-info
# 已安装测试集的位置:  /var/lib/phoronix-test-suite/test-suites/pts
# 可以生成本地自定义测试集: /var/lib/phoronix-test-suite/test-suites/local


# 开始测试
./phoronix-test-suite benchmark pts/iozone
# 需要输入一些基本信息

参考