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
# 需要输入一些基本信息