Linux 环境下磁盘io统计命令工具

[toc]

实验背景

上数据库课,老师出了一个作业:比较两个数据系统处理数据对io的要求,分别使用Hadoop伪分布式和mysql环境。让两个大文件,做简单jion操作,观察磁盘io情况。分为两种小情况,共要做4次实验。

  1. 文件超出内存的情况下统计io
  2. 文件不超出内存的情况下统计io

这个文章的主体内容:如何在linux环境下,查看统计磁盘io情况

使用环境

cpu :AMD FX(tm)-6100 Six-Core Processor
memory :16G
disk1 :500G机械硬盘(sda)
disk2 :240G Kingston SSD(sdb)

iostat

安装

iostat属于sysstat中的一部分。所以必须先安装sysstat工具

sudo apt-get install sysstat -y

之后才能正常使用iostat

linux下查看命令帮助说明

man iostat

使用

单个使用 iostat 命令。信息从开机起累计io

iostat

命令来查看


Linux 环境下磁盘io统计命令工具_第1张图片
累计io,默认k为单位

组合使用

linux强大的功能是,各种命令组合使用,比如用grep筛选出我们感兴趣的内容,比如说下面的图片。我的linux安装在ssd上,由于还有windows系统,我的Ubuntu安装在sdb6分区通过筛选我只看sda6的情况加上 -m 以M为单位输出。加上 -pm sdb 1 表示输出报告(p),以(m)为单位,在我的Ubuntu系统上(sdb) 以1秒为间隔,输出。


Linux 环境下磁盘io统计命令工具_第2张图片
组合效果

实验过程及结果

  1. 用python,生成了一个5G大小的文件,存放在sda(磁盘)上备用
  2. 复制这个文件到 Ubuntu系统中。运行命令查看io情况
    得到的io统计信息如下!
Linux 环境下磁盘io统计命令工具_第3张图片
复制文件过程的io消耗

问题来了:
为什么,资源管理器显示,写入速度为约为120M/s实际的iostat命令会有这种波浪状。刚开始为0,之后为120M/s再接着240M/s 之后又为0。接着又循环!
可能几种的答案选择:

  1. 设置的监控粒度太小。 比如应该设置为0.5秒观测一次,再取平均
  2. 写磁盘,有内存缓存区。先把缓存区写满。再进一步写磁盘。所以有这种波浪现象。

进阶玩法

运用管道命令,和后台命令。同时执行监控。和拷贝大文件。把磁盘IO结果写入文件。

iostat -pm sdb 1 50|grep sdb6 >> ~/rs.txt & cp test3--5GB.txt ~/

这个bash命令的意思为:每秒刷新一次,共刷新50次(5G的文件,50秒应该写的完),把结果筛选出sdb6的信息(Ubuntu分区)写入文件
具体执行效果如下图,为方便看效果,我把所有窗口平铺整个屏幕


Linux 环境下磁盘io统计命令工具_第4张图片

下一步使用

  1. 跟python,或者ruby等语言结合起来,即可以在程序中得到io情况返回,进行io情况统计分析

查考文章网址

iostat博客
命令分隔符

你可能感兴趣的:(Linux 环境下磁盘io统计命令工具)