linux查看IO

怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式:

TOP

  第一种:用 top 命令 中的cpu 信息观察

  Top可以看到的cpu信息有:

具体的解释如下:

进程

    Tasks:     237 total 进程总数

    2     running 正在运行的进程数

    161    sleeping 睡眠的进程数

 0     stopped 停止的进程数

 0     zombie 僵尸进程数

Cpu(s):

  2.2% us 用户空间占用CPU百分比

  1.7% sy 内核空间占用CPU百分比

  0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比

  95.7% id 空闲CPU百分比

  0.0% wa 等待输入输出的CPU时间百分比

  0.0% hi

  0.3% si

       0.0% wa 的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果 wa的数量比较大,说明等待输入输出的的io比较多。

 IOTOP




第二种:用vmstat

  vmstat 命令报告关于线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

  输入命令:

  vmstat 2 5

  如果发现等待的进程和处在非中断睡眠状态的进程数非常多,并且发送到块设备的块数和从块设备接收到的块数非常大,那就说明磁盘io比较多。

  vmstat参数解释:

  Procs

  r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。此数由 linux 计算得出,但 linux 并不耗尽交换空间

  Memory

  swpd: 虚拟内存使用情况,单位:KB

  free: 空闲的内存,单位KB

  buff: 被用来做为缓存的内存数,单位:KB

  Swap

  si: 从磁盘交换到内存的交换页数量,单位:KB/秒

  so: 从内存交换到磁盘的交换页数量,单位:KB/秒

  IO

  bi: 发送到块设备的块数,单位:块/秒

  bo: 从块设备接收到的块数,单位:块/秒

  System

  in: 每秒的中断数,包括时钟中断

  cs: 每秒的环境(上下文)切换次数

  CPU

  按 CPU 的总使用百分比来显示

  us: CPU 使用时间

  sy: CPU 系统使用时间

  id: 闲置时间


第三种:用iostat

  安装:

  Iostat 是 sysstat 工具集的一个工具,需要安装。

  Centos的安装方式是:

  yum install sysstat

  Ubuntu的安装方式是:

  aptitude install sysstat

  使用:

  iostat -dx 显示磁盘扩展信息

  root@fileapp:~# iostat -dx


%user     显示在用户级(应用程序)执行时发生的CPU利用率的百分比

%nice     显示在用户级别执行时发生的CPU利用率的百分比,并具有良好的优先级

%system    显示在系统级(内核)执行时发生的CPU利用率的百分比。

%iowait    显示CPU或CPU空闲的时间百分比,在此期间系统有一个未完成的磁盘输入/输出请求。

%steal    显示虚拟CPU或CPU在非自愿等待中花费的时间百分比,而虚拟机监控程序正在为另一个虚拟处理器提供服务。

%idle    显示CPU或CPU空闲的时间百分比,系统没有一个未完成的磁盘输入/输出请求

r/s 和 w/s 分别是每秒的读操作和写操作,而rKB/s 和wKB/s 列以每秒千字节为单位显示了读和写的数据量如果这两对数据值都很高的话说明磁盘io操作是很频繁。

%util         代表磁盘繁忙程度。100% 表示磁盘繁忙, 0%表示磁盘空闲。但是注意,磁盘繁忙不代表磁盘(带宽)利用率高  

argrq-sz    提交给驱动层的IO请求大小,一般不小于4K,不大于max(readahead_kb, max_sectors_kb)

                可用于判断当前的IO模式,一般情况下,尤其是磁盘繁忙时, 越大代表顺序,越小代表随机

svctm        一次IO请求的服务时间,对于单块盘,完全随机读时,基本在7ms左右,既寻道+旋转延迟时间

你可能感兴趣的:(linux查看IO)