Linux机器I/O分析
有时候业务突增,机器的性能是需要我们特别关注的,分享下关于查看linux的IO的工具
1、iostat
centos安装方式 yum install sysstat
例子1:
iostat常用的选项-x,该选项将用于显示和io相关的扩展数据。
iostat -x
关于 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:
iostat -d -x -k 1 参数 -d 表示,显示设备(磁盘)使用状态; -k某些使用block为单位的列强制使用Kilobytes为单位; 1表示,数据显示每隔1秒刷新一次。
2、iotop
centos安装 yum install iotop -y
例子:
每隔十秒打印一次信息,设置单位为KB/s,仅打印有活跃I/O的进程和线程数据 iotop -d 10 -o -k
3、dstat
centos安装 yum insatll dstat
选项
-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状态
dstat -l -m -r -c --top-io --top-mem --top-cpu
例子2:
查看全部内存的状态
dstat -g -l -m -s --top-mem