1 sar 系统活动报告

-v:输出inode、文件和其他内核表的统计信息
- dentunusd: 目录高速缓存中未被使用的条目数量
- file-nr : 使用中的文件描述符个数
- inode-nr : 使用中的inode个数
-d:输出每一个块设备的活动信息

- DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
- tps:每秒I/O的传输总数
- rd_sec/s 每秒读取的扇区的总数
- wr_sec/s 每秒写入的扇区的总数
- avgrq-sz 平均每次次磁盘I/O操作的数量(扇区)
- avgqu-sz 磁盘请求队列的平均长度
- await await : 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
- svctm平均每次IO请求的处理时间(毫秒为单位)
- %util I/O请求占用的CPU百分比,值越高,说明I/O越慢
-b 查看I/O和传递速率的统计信息

- tps 磁盘每秒钟的IO总数,等于iostat中的tps
- rtps 每秒钟从磁盘读取的IO总数
- wtps 每秒钟从写入到磁盘的IO总数
- bread/s 每秒钟从磁盘读取的块总数
- bwrtn/s 每秒钟此写入到磁盘的块总数
2 slabtop打印出有关内核slab缓存信息,其中有些用于文件系统缓存

-o 选项 只显示一次结果 如果不加-o选项将会不断的刷新屏幕
- ext4_inode_cache ext4 :的inode缓存
- dentry : 目录缓存
- inode_cache: inode缓存
3 iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况
- -c:只显示系统CPU统计信息,即单独输出CPU结果,不包括磁盘结果
- -d:单独输出磁盘结果,不包括CPU结果
- -k/-m:输出结果以kB/mB为单位,而不是以扇区数为单位
- -x:输出更详细的io设备统计信息
- -t: 时间戳输出
- -z : 不显示空活动汇总
- -p ALL : 引入每个分区的统计信息
用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]]

输出含义:
- avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。
- Device: 各磁盘设备的IO统计信息。各列含义如下:
- tps: 每秒向磁盘设备请求数据的次数,包括读、写请求
- BLK_read/s: 每秒从驱动器读入的数据量,单位为K。
- BLK_wrtn/s: 每秒从驱动器写入的数据量,单位为K。
- BLK_read: 读入数据总量,单位为K。
- BLK_wrtn: 写入数据总量,单位为K。

输出含义:
- rrqm/s : 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
- wrqm/s : 每秒对该设备的写请求被合并次数
- r/s : 每秒完成的读次数
- w/s : 每秒完成的写次数
- rkB/s : 每秒读数据量(kB为单位)
- wkB/s : 每秒写数据量(kB为单位)
- avgrq-sz : 平均每次IO操作的数据量(扇区数为单位 512B)
- avgqu-sz : 平均等待处理的IO请求队列长度
- await : 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
- r_await : 每个读操作的平均耗时
- w_await: 每个写操作的平均耗时
- svctm: 平均每次IO请求的处理时间(毫秒为单位)
- %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率 设备忙处理I/O请求百分比
4 iotop 是一个用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息
选项:

- -o,--only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
- -b, --batch非交互模式,一般用来记录日志。
- -n NUM, --iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。
- -d SEC, --delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。
- -p PID, --pid=PID指定监测的进程/线程。
- -u USER, --user=USER指定监测某个用户产生的I/O。
- -P, --processes仅显示进程,默认iotop显示所有线程。
- -a, --accumulated显示累积的I/O,而不是带宽。
- -k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。
- -t, --time 加上时间戳,非交互非模式。
- -q, --quiet 禁止头几行,非交互模式。有三种指定方式。

- TID : 进程ID
- PRIO: 优先级
- USER:进程用户
- DISK_READ : 磁盘每秒读速度
- DISK_WRITE : 磁盘每秒写速度
- SWAPIN : 减缓分区换入百分比
- IO : IO占用半分比
- COMMAND : 进程
可以在运行当中按o 只显示正在产生I/O的进程或线程

非交互模式把输出信息保存到文件当中,一遍统计分析
iotop -botq > iotest.txt &

非交互模式输出 进程号14966进程信息

5 dd命令测试硬盘读写速度
iflag=FLAGS 指定读的方式FLAGS,参见“FLAGS参数说明”
oflag=FLAGS 指定写的方式FLAGS,参见“FLAGS参数说明”
FLAGS 参数说明
direct 读写数据采用直接IO方式;
sync 读写数据采用同步IO,但是针对是元数据
测试纯写性能
time dd if=/dev/zero of=/test.txt bs=1M count=10000 oflag=direct oflag=sync

测试纯读性能
首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的
sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
time dd if=/test.txt of=/dev/null bs=1M count=10000 iflag=direct iflag=sync

6 pidstat 默认输出CPU使用情况,还可以使用-d输出磁盘I/O统计信息
d输出磁盘I/O统计信息

- kB_rd/s:每秒读取KB数
- kB_wr/s:每秒写入KB数
- kB_ccwr/s:每秒取消的写入KB数
-t 打印每个线程的统计信息

- TGID:主线程的表示
- TID: 线程id
-p PID 打印指定PID统计信息

7 fio 第三方IO测试工具
安装
wget http://brick.kernel.dk/snaps/fio-2.1.10.tar.gz
tar -xf fio-2.1.10.tar.gz
cd fio-2.1.10
./configure
make && make install
参数说明:
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30 本次的测试线程为30.
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
此外
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
nrfiles=8 每个进程生成文件的数量。
磁盘读写常用测试点:
1. Read=100% Ramdon=100% rw=randread (100%随机读)
2. Read=100% Sequence=100% rw=read (100%顺序读)
3. Write=100% Sequence=100% rw=write (100%顺序写)
4. Write=100% Ramdon=100% rw=randwrite (100%随机写)
5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30(70%顺序读,30%顺序写)
6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30(70%随机读,30%随机写)
随机读测试
fio --bs=4k --iodepth=1 --direct=1 --rw=read --time_based --runtime=600 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-read --size=50G --filename=/dev/vda1


本文详细介绍了一系列磁盘性能监控和测试工具,如sar、slabtop、iostat、iotop、dd命令、pidstat及fio,涵盖内核活动报告、文件系统缓存、磁盘操作活动监视、磁盘I/O使用状况、硬盘读写速度测试等方面,适用于系统管理员和技术人员深入理解并优化存储性能。
2939

被折叠的 条评论
为什么被折叠?



