Linux机器I/O分析
有时候业务突增,机器的性能是需要我们特别关注的,分享下关于查看linux的IO的工具
1、iostat
1 2 | centos安装方式 yum install sysstat |
例子1:
iostat常用的选项-x,该选项将用于显示和io相关的扩展数据。
iostat -x
1 2 3 4 5 6 7 8 9 10 11 12 13 | 关于 CPU 的指标,重点看%iowait 和 %idle 两个指标。 %iowait:CPU 等待输入输出完成时间的百分比; %idle:CPU 空闲时间百分比。 若%iowait 的值过高,则表示硬盘存在 I/O 瓶颈;若 %idle 值高,表示 CPU 较空闲。如果 %idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。 关于 Disk 指标,我们重点看 %utils、svctm、await 和 avgque-sz几个指标。 avgqu-sz: 平均 I/O 队列长度; await: 平均每次设备 I/O 操作的等待时间 (毫秒); svctm: 平均每次设备 I/O 操作的服务时间 (毫秒); %util: 一秒中有百分之多少的时间用于 I/O 操作,即被 I/O 消耗的 CPU 百分比 若 %util 接近 100%,说明产生的 I/O 请求太多,I/O 系统已经满负荷,该磁盘可能存在瓶颈;若 svctm 比较接近 await,说明 I/O 几乎不需要等待;若 await 远大于 svctm,说明 I/O 队列太长,I/O 响应太慢,则需要进行必要优化;若 avgqu-sz 比较大,也表示有大量 IO 在等待。 |
例子2:
1 2 3 4 | iostat -d -x -k 1 参数 -d 表示,显示设备(磁盘)使用状态; -k某些使用block为单位的列强制使用Kilobytes为单位; 1表示,数据显示每隔1秒刷新一次。 |
2、iotop
1 2 | centos安装 yum install iotop -y |
例子:
1 2 | 每隔十秒打印一次信息,设置单位为KB/s,仅打印有活跃I/O的进程和线程数据 iotop -d 10 -o -k |
3、dstat
1 2 | centos安装 yum insatll dstat |
选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | -c #显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息 -C #可按需分别显示cpu状态 -d #显示磁盘读写数据大小 -n #显示网络状态 -N #指定要显示的网卡 -l #显示系统负载情况 -m #显示内存使用情况 -g #显示页面使用情况 -p #显示进程状态 -s #显示交换分区使用情况 -S #类似D/N -r #I/O请求情况 -y #系统状态 -–disk-util #显示某一时间磁盘的忙碌状况 -–freespace #显示当前磁盘空间使用率 -–proc-count #显示正在运行的程序数量 -–top-bio #指出块I/O最大的进程 -–top-cpu #图形化显示CPU占用最大的进程 -–top-io #显示正常I/O最大的进程 -–top-mem #显示占用最多内存的进程 |
例子1:
显示io、内存、cpu状态
1 | dstat -l -m -r -c --top-io --top-mem --top-cpu |
例子2:
查看全部内存的状态
1 | dstat -g -l -m -s --top-mem |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~