=====================================================================
iostat命令是Linux系统上查看I/O性能最基本的工具,其全称为 I/O statistics。iostat能统计磁盘活动情况,也能统计CPU使用情况。
iostat属于sysstat软件包,可以通过命令进行安装:
yum install sysstat
iostat数据的来源是Linux操作系统的/proc/diskstats:
# cat /proc/diskstats
8 0 sda 239219 1806 37281259 2513275 904326 88832 50268824 26816609 0 4753060 29329105
8 1 sda1 338 0 53241 6959 154 0 5496 3724 0 6337 10683
8 2 sda2 238695 1797 37226458 2504489 620322 88832 50263328 25266599 0 3297988 27770221
8 16 sdb 1009117 481 1011773 127319 0 0 0 0 0 126604 126604
8 17 sdb1 1008792 480 1010929 127078 0 0 0 0 0 126363 126363
253 0 dm-0 1005 0 8040 15137 30146 0 241168 2490230 0 30911 2505369
253 1 dm-1 192791 0 35500457 2376087 359162 0 44095600 22949466 0 2312433 25325563
253 2 dm-2 47132 0 1717329 183565 496207 0 5926560 7348763 0 2517753 7532688
注意,procfs中的前三个字段:主设备号、从设备号、设备名。
从第四个字段开始,介绍的是该设备的相关统计:
-
rd_ios:读操作的次数
-
rd_merges:合并读操作的次数。如果两个读操作读取相邻的数据块,那么可以被合并成1个。
-
rd_sectors:读取的扇区数量
-
rd_ticks:读操作消耗的时间(以毫秒为单位)。每个读操作从__make_request()开始计时,到end_that_request_last()为止,包括了在队列中等待的时间。
-
wr_ios:写操作的次数
-
wr_merges:合并写操作的次数
-
wr_sectors:写入的扇区数量
-
wr_ticks:写操作消耗的时间(以毫秒为单位)
-
in_flight:当前未完成的I/O数量。在I/O请求进入队列时该值加1,在I/O结束时该值减1。 注意:是I/O请求进入队列时,而不是提交给硬盘设备时。
-
io_ticks:该设备用于处理I/O的自然时间(wall-clock time)
-
time_in_queue:对字段#10(io_ticks)的加权值
iostat有以下缺陷:
-
iostat的输出结果大多数是一段时间内的平均值,因此难以反映峰值情况
-
iostat仅能对系统整体情况进行分析汇报,却不能针对某个进程进行深入分析。
-
iostat未单独统计IO处理信息,而是将IO处理时间和IO等待时间合并统计,因此包括await在内的指标并不能非常准确地衡量磁盘性能表现。
===================================================================
iostat[参数][时间][次数]
例如,iostat -d -x -k 1 3:每1s采集一次数据,显示3次,以kb为单位显示磁盘使用情况详细信息。
-
-x 显示详细信息
-
-C 显示CPU使用情况,与-d选项互斥
-
-d 显示磁盘使用情况,与-C选项互斥
-
-k 以 KB 为单位显示
-
-m 以 M 为单位显示
-
-N 显示磁盘阵列(LVM) 信息
-
-n 显示NFS 使用情况
-
-p[磁盘] 显示磁盘和分区的情况
-
-t 显示终端和CPU的信息
-
-V 显示版本信息
===================================================================
使用iostat后,结果面板如下:
avg-cpu: %user %nice %system %iowait %steal %idle
1.44 0.00 0.39 0.00 0.00 98.17
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.37 0.47 30.30 3561197 229837730
dm-0 0.44 0.33 29.97 2518272 227313194
dm-1 0.12 0.13 0.33 1013276 2520308
dm-2 0.00 0.00 0.00 502 2068
iostat结果面板 avg-cpu 描述的是系统cpu使用情况:
-
%user:CPU处在用户模式下的时间百分比。
-
%nice:CPU处在带NICE值的用户模式下的时间百分比。
-
%system:CPU处在系统模式下的时间百分比。
-
%iowait:CPU等待输入输出完成时间的百分比。
-
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
-
%idle:CPU空闲时间百分比。
iostat结果面板 Device 项描述的是系统磁盘使用情况:
-
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
-
kB_read/s:每秒从设备(drive expressed)读取的数据量;
-
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
-
kB_read:读取的总数据量;
-
kB_wrtn:写入的总数量数据量;
=================================================================
命令:
iostat -d -x -k 1 1
输出结果:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.03 0.16 0.01 0.36 0.47 30.30 165.95 0.02 55.32 9.22 56.77 13.56 0.50
dm-0 0.00 0.00 0.01 0.44 0.33 29.97 136.71 0.02 54.07 12.12 54.68 11.28 0.50
dm-1 0.00 0.00 0.03 0.08 0.13 0.33 8.00 0.12 1015.22 5.91 1420.78 0.41 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 48.96 0.00 1.27 0.37 9.80 1.27 0.00
**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**


**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK