查看磁盘类型
当前磁盘中速度最快的应该是SSD了。
查看命令:
> yum install lsscsi
> lsscsi # 列出 SCSI 设备(或主机)及其属性
[0:2:0:0] disk DELL PERC H330 Adp 4.30 /dev/sda
[14:0:0:0] cd/dvd HL-DT-ST DVD+-RW GU90N A3C3 /dev/sr0
显然,我的电脑上没有SSD,只是普通的磁盘。
如果有SSD,第5列会显示SSD字样。
查看磁盘使用情况
使用top命令,可以看到机器总体概况。
其中,wa为io操作wait的情况,其值越大,说明io操作阻塞情况越严重。
更加详细的磁盘状况可以使用sar分析。
安装:
yum install sysstat
然后就可以使用iostat、mpstat、sar命令了。
其中:
- iostat: 监控系统IO设备的负载,能够显示平均读写速率,可根据监测结果调整系统配置以平衡物理磁盘和IO负载
- mpstat: 打印cpu状态
- sar:可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据
这里主要介绍一下sar的使用。基本操作:
sar [options] [-o filename] interval [count]
- -o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中
- interval:表示采样间隔时间,该参数必须手动设置
- count:表示采样次数,是可选参数,其默认值为 1
- options:为命令行选项,可通过man sar查看
举例说明如下:
# 查看cpu状态,第秒统计一次,共统计10次
sar -u 1 10
Linux 3.10.0-1160.el7.x86_64 (centos7) 11/01/2021 _x86_64_ (8 CPU)
01:37:30 PM CPU %user %nice %system %iowait %steal %idle
01:37:31 PM all 14.68 0.09 6.02 0.99 0.00 78.22
...
含义:
- %user:用于表示用户模式下消耗的 CPU 时间的比例
- %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例
- %system:系统模式下消耗的 CPU 时间的比例
- %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例
- %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例
- %idle:CPU 空闲时间比例
# 查看磁盘状态,第秒统计一次,共统计10次
sar -d 1 10
Linux 3.10.0-1160.el7.x86_64 (centos7) 11/01/2021 _x86_64_ (8 CPU)
01:40:31 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
01:40:32 PM dev8-0 26.00 0.00 355.00 13.65 0.56 21.69 2.46 6.40
01:40:32 PM dev253-0 26.00 0.00 355.00 13.65 0.56 21.65 2.46 6.40
01:40:32 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...
含义:
- tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的
- rd_sec/s:每秒读扇区的次数
- wr_sec/s:每秒写扇区的次数
- avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区)
- avgqu-sz:磁盘请求队列的平均长度
- await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒
- svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间
- %util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和
通过’iostat -dxk 1 10’ 也可以得到类似的输出,具体使用可参考manpage。
小结
如果磁盘性能不足以应对应用程序的请求,可通过调整系统参数来达到平衡。
如果磁盘一直处于较高的使用状态,可能会对其他进程产生影响,导致不易调试的bug。