磁盘 I/O(Input/Output)是指计算机系统中涉及到磁盘的数据读取和写入操作。
当计算机需要从磁盘读取数据时,它会发起一个读取请求,磁盘会寻道并将数据传输到计算机的内存中;当计算机需要将数据写入磁盘时,它会发起一个写入请求,将数据从内存写入到磁盘中。
基本概念
磁盘I/O类型
1、读写I/O
计算机与外部设备(如磁盘、网络等)进行数据交换的操作,如文件系统的读写操作、网络通信中的数据收发等。
2、大小I/O
取决于控制器指令中连续读取磁盘扇区的数目大小,64、128等被认为是大I/O,4、8等被认为是小I/O。
3、连续I/O与随机I/O
访问存储设备上的数据时,通过访问的位置是连续还是随机的区分。连续I/O适用于一次性写入大量数据的场景,数据备份、流媒体等。随机I/O则相反,如数据库的查询、文件系统的操作等。
4、顺序I/O与并发I/O
顺序I/O和连续I/O类似,并发I/O指的是同时处理多个I/O的能力,通过多线程、多进程、异步I/O实现。适用于WEB服务器、数据库服务器等。
性能指标
1、IOPS
I/O per second,即每秒钟可以处理的I/O个数。
r/s 每秒读次数
w/s 每秒写次数,
r/s + w/s, 就是磁盘IOPS
2、吞吐量
磁盘带宽,每秒磁盘I/O的流量,即磁盘写入和读出的数据总大小。
rkB/s 每秒读数据量(KB单位)
wkB/s 每秒写数据量(KB单位)
rkB/s + wkB/s,就是磁盘吞吐量
3、两者联系
每秒I/O吞吐量 = IOPS * 平均I/O的大小
磁盘I/O性能对服务器的影响
1、响应时间过长
数据读写速度慢,导致用户请求的响应时间增加。
2、系统整体性能
导致CPU和内存资源长时间等待I/O操作完成,从而降低整体的处理速度。
3、应用故障
因无法及时读写数据而出现故障或错误,影响业务的正常运行。
常用的性能测试工具
iostat
iostat命令用于监控系统的磁盘I/O活动情况,可以展示磁盘的读写速率、I/O等待时间、CPU使用率等信息。
# 每1秒 输出disk相关的详细信息
iostat -x -d 1
该命令的输出有很多,重点关注下面的输出。
avg-cpu段:
%usr:CPU在用户模式下的时间百分比
%system:CPU在系统模式下的时间百分比
%iowait:CPU等待输入输出完成时间的百分比
Device段:
r/s:每秒读次数
w/s:每秒写次数,r/s + w/s就是磁盘IOPS
rkB/s:每秒读数据量(KB单位)
wkB/s:每秒写数据量(KB单位),rkB/s + wkB/s就是磁盘吞吐量。
###############################################
_await:表示每一个IO请求的处理的平均时间(单位ms)
%util 表示磁盘在采样时间内的忙碌程度
pidstat & iotop
pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、设备IO等系统资源的占用情况。
# 每秒钟 显示每个进程的磁盘I/O统计信息
pidstat -d 1
总结
磁盘I/O问题的排查思路
1、查看各磁盘设备的I/O情况
iostat -m -x 1
2、详细定位是哪块磁盘的I/O繁忙
iostat -d /dev/sda -m -x 1
3、找出占用I/O高的应用程序
pidstat -d 1
pidstat -dt -p {PID} 1
4、进一步分析该进程及其线程在做什么?
perf或strace命令
5、查看文件句柄
lsof -p {PID/TID}
经过上述分析,基本可以定位到程序的哪段代码?做了什么操作?导致了I/O繁忙,进而优化。
DY2 天前
发表在:Infini & 五一小惊喜We're a group oof vo...
刀客6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@cnbobo:E5可以不止200开. ...
刀客6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@JK:现在Windows客户端有检测了...
cnbobo6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@cnbobo:我E5 机器 200开,...
JK6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!刀哥,现在用什么多开呀?
刀客6 天前
发表在:asu.edu 教育邮箱注册 [教育邮箱可以撸很多福利了]@野生奥特曼:感谢支持
野生奥特曼6 天前
发表在:asu.edu 教育邮箱注册 [教育邮箱可以撸很多福利了]按照教程申请成功
刀客8 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@cnbobo:你可以自己尝试一下~😄
cnbobo8 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!1K开? 你说错了吧100开吧,
刀客9 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@ayun:Google一下,有很多卖I...