笔记-linux系统磁盘分析

基本概念

IOPS

每秒的读写次数

磁盘io响应时间

是从io请求到结束的时间,包括等待时间和服务时间

服务时间和等待时间

服务时间:io得到主动处理的时间,不包括在队列等待的时间;
等待时间:io在队列等待服务的时间。

延时离群点

非同寻常的高延时磁盘io

非数据磁盘传输命令

除了读写io命令,其他的非数据传输命令,如有缓存的磁盘把缓存写入磁盘。

磁盘使用率和饱和度

使用率:某段时间内磁盘运行工作的时间的比例。
饱和度:度量了因超出资源服务能力而排队的工作,可以通过操作系统的磁盘等待队列的长度计算。

随机io和连续io之间的性能差异

随机io带来磁头寻道和io之间盘片旋转导致额外的延迟。

缓存在读写io中的角色

磁盘缓存通过命中缓存数据提高读io的效率;在数据写到缓存后,磁盘就通知写入结束,之后再把数据写入到较慢的永久磁盘介质中,提高写效率。

分析工具

iostat

iostat汇总了单个磁盘的统计信息。
iostat常用选项:

  • -c显示CPU报告
  • -d显示磁盘报告
  • -k显示单位为KB
  • -m显示单位为MB
  • -p包括单个分区的统计信息
  • -t时间戳输出
  • -x扩展信息
  • -z不显示空活动汇总
$ iostat -d
Linux 3.10.0-957.1.3.el7.x86_64 (k8snode-4) 	02/25/2019 	_x86_64_	(8 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.12         0.07         7.82     216320   22925740
sda              12.10         1.32        88.95    3859601  260661282
scd0              0.00         0.00         0.00       1028          0
dm-0              3.04         0.93        37.86    2722603  110937878
dm-1              0.00         0.02         0.00      70424          0
dm-2              0.37         0.03         7.82      76600   22925740
dm-3              9.15         0.29        51.06     851475  149634503

默认行为显示-d和-c选项报告。
tps:每秒事务数;
kB_read/s kB_wrtn/s:每秒读取、写入数;
kB_read kB_wrtn:总共读取和写入数。

-x显示有用的附加列

$ iostat -xkdz 1
Linux 3.10.0-957.1.3.el7.x86_64 (k8snode-4) 	02/25/2019 	_x86_64_	(8 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.25    0.00    0.12     0.07     7.82   129.48     0.01   49.65    8.63   49.91   0.70   0.01
sda               0.00     0.08    0.02   12.08     1.32    88.95    14.91     0.01    0.91   12.90    0.88   0.23   0.28
scd0              0.00     0.00    0.00    0.00     0.00     0.00   114.22     0.00    4.83    4.83    0.00   4.61   0.00
dm-0              0.00     0.00    0.02    3.02     0.93    37.85    25.52     0.01    2.89   11.49    2.83   0.24   0.07
dm-1              0.00     0.00    0.00    0.00     0.02     0.00   227.17     0.00    6.90    6.90    0.00   5.16   0.00
dm-2              0.00     0.00    0.00    0.37     0.03     7.82    41.87     0.09  246.19    8.81  246.41   0.22   0.01
dm-3              0.00     0.00    0.00    9.14     0.29    51.08    11.23     0.02    1.78   23.93    1.77   0.23   0.21

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.00     0.00    0.00   12.00     0.00    64.00    10.67     0.00    0.25    0.00    0.25   0.08   0.10
dm-3              0.00     0.00    0.00   12.00     0.00    64.00    10.67     0.00    0.25    0.00    0.25   0.08   0.10

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.00     0.00    0.00   14.85     0.00    81.68    11.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-3              0.00     0.00    0.00   14.85     0.00    81.68    11.00     0.00    0.00    0.00    0.00   0.00   0.00

rrqm/s:每秒合并放入驱动请求队列的读请求数;
wrqm/s:每秒合并放入驱动请求队列的写请求数;
r/s:每秒发给磁盘设备的读请求数;
w/s:每秒发给磁盘设备的写请求数;
rkB/s :每秒从磁盘设备读取的KB数;
wkB/s :每秒向磁盘设备写入的KB数;
avgrq-sz:平均请求大小,单位为扇区(512B)
avgqu-sz:在驱动请求队列和在设备中活跃的平均请求数;
await:平均io响应时间,包括在驱动请求队列里等待和设备的io响应时间(ms)
r_await:跟await一样,只针对读取的统计;
w_await:跟await一样,只针对写入的统计;
svctm:推断磁盘设备的io平均响应时间(ms);
%util:设备忙处理io请求的百分比。
非零的rrqm/s和wrqm/s,说明为了提高性能,连续的请求在发往设备之前已经被合并。

sar

sar磁盘汇总通过-d输出

$ sar -d 1
Linux 3.10.0-957.1.3.el7.x86_64 (k8snode-4) 	02/25/2019 	_x86_64_	(8 CPU)

04:13:19 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:13:20 PM   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:20 PM    dev8-0     32.00      0.00    310.00      9.69      0.00      0.06      0.06      0.20
04:13:20 PM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:20 PM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:20 PM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:20 PM  dev253-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:20 PM  dev253-3     32.00      0.00    310.00      9.69      0.00      0.09      0.09      0.30

与iostat输出差不多,但有些区别:
tps:设备每秒数据传输量;
rd_sec/s wr_sec/s:每秒读取和写入扇区数(512B)

pidstat

pidstat默认输出CPU的统计信息,使用-d选项输出磁盘io统计信息。

# pidstat -d 1
Linux 3.10.0-229.el7.x86_64 (ecs-801b-0009.novalocal) 	02/25/2019 	_x86_64_	(8 CPU)

04:36:42 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
04:36:43 PM     0     11466      0.00      7.92      0.00  java

04:36:43 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
04:36:44 PM     0      7745      0.00      8.00      0.00  java
04:36:44 PM     0     11466      0.00     24.00      0.00  java

kB_rd/s:每秒读取;
kB_wr/s:每秒写入;
kB_ccwr/s:每秒取消的写入数(如写回前的覆盖写)

perf

perf提供了块跟踪点,可以跟踪一些基本信息;
perf list | grep block:

iotop

iotop是包含磁盘io版的top
iotop的批量模式

iotop -bod5
Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
Total DISK READ :       0.00 B/s | Total DISK WRITE :      19.07 K/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:      20.66 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
  326 be/3 root        0.00 B/s  813.59 B/s  0.00 %  0.06 % [jbd2/vda1-8]
  514 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.04 % [jbd2/vdb1-8]
12914 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % java -... org.apache.catalina.startup.Bootstrap start
12294 be/4 root        0.00 B/s  813.59 B/s  0.00 %  0.00 % java -.... org.apache.catalina.startup.Bootstrap start

-d批量模式,不清理屏幕,-o仅显示io进程,-d5每5秒输出一次

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值