赞
踩
性能测试过程中,在定位和分析问题时通常都需要监控系统资源相关情况。本文主要介绍常用的监控命令和工具,主要包含磁盘IO、网络、CPU和内存,对文件系统和linux内核部分常用概念及分析方法有初步介绍。
在性能测试过程中,磁盘IO是重要分析指标项。比如在存储性能测试过程中需要测试不同类型磁盘IO的能力,主要指标是IOPS和OPS。在数据库性能测试过程,又需要尽量避免磁盘IO,使数据库的业务尽量在内存完成,提高性能。
使用率、IOPS、吞吐量、IOWAIT
工具或命令:dstat、sar、iostat、pidstat、iotop、iolatency、blktrace、fio、perf
模块 | 类型 | 度量方法 | 衡量标准 |
---|---|---|---|
IO | 使用情况 | 1.iostat –xz,”%util” 2.sar –d,”%util” 3.iotop利用率很高 4.cat /proc/pid/sched | 注意>=50% 告警>=70% 严重>=90% |
IO | 满载 | 1. iostat –xnz 1,”avgqu-sz”>1 2. iostat await > 70 | IO已经有满载嫌疑 |
IO | 错误 | 1. dmesg查看io错误 2. smartctl /dev/sda | 有信息 |
iostat -mtx 2 3 #每2秒打印一次共打印3次
字段 | 说明 | 备注 |
---|---|---|
rrqm/s | 每秒进行merge的读操作数目 | |
wrqm/s | 每秒进行merge的写操作数目 | |
r/s | 每秒完成的读I/O设备次数 | |
w/s | 每秒完成的写I/O设备次数 | |
rMB/s | 每秒读MB字节数 | |
wMB/s | 每秒写MB字节数 | |
avgrq-sz | 平均每次设备I/O操作数据大小 | 扇区 |
avgqu-sz | 平均I/O队列长度 | 扇区 |
await | 平均每次设备I/O操作的等待时间 | 毫秒 |
svctm | 平均每次设备I/O操作的服务时间 | 毫秒 |
%util | 每秒I/O操作百分比,IO使用率 |
说明:
iostat -txdk sda 2 3 #指定磁盘以kB为单位每2秒打印一次共打印3次
pidstat -d -l -U USER -p ALL 1 1 |egrep "USER|PID"
cat /sys/block/sda/queue/rotational
cat /sys/block/sdb/queue/scheduler
磁盘IO调度默认算法是cfq,linux有四种IO调度算法。在完全随机的访问环境下,CFQ、Deadline和NOOP性能差异很小,但是一旦有大的连续的IO,CFQ可能会造成小IO时延增加。
例如在数据库tpcc性能场景读写比例相当,随机写较多,使用deadline的IO调度算法比较合适,也比较稳定。
CFQ:适用于IO大小非常均匀的场景
Deadline:适用于小文件读写,跳跃式读写、零散读写,适合读较多业务,复杂OLTP应使用deadline
NOOP:适用于SAN场景,随机存取设备,IO性能不是瓶颈时也可以使用
Anticipatory:适用于大文件读写,整块式,重复读写(web server),文件服务器ftp/samba,不适合数据库场景
DD写读10GB文件:
写:dd if=/dev/zero of=/data/test/file22 bs=1G count=10 oflag=direct
读:dd of=/dev/null if=/data/test/file22 bs=1G count=10 oflag=direct
参数说明:
if:从何处读数据
of:写入何处
bs:数据块大小
oflag=direct:跳过缓存
系统调用、I/O资源控制、充分利用缓存、RAID(独立磁盘冗余阵列)、I/O隔离
以上是性能测试过程中磁盘监控常用命令和常用概念,后续会持续补充磁盘IO性能调优常用方法和案例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。