关于IO的各项指标,基本上从文件/proc/diskstats文件获取就可以了,所以首先简单介绍下该文件的各个域。
8 0 sda 404401 41618 43058034 767156 76322193 498634263 4599837328 2847411684 0 340610149 2848016085
这是从我用的服务器上的/proc/diskstats中选择的一条,从前往后,各个域为:
major:设备的主ID号
minor:设备的辅ID号
dev_name:设备名
rd_ios:读完成的次数
rd_merges:读取合并的次数,为了效率可能会合并相邻的读和写
rd_sectors:读取的扇区数
rd_ticks:读花费的毫秒数
wr_ios:写完成的次数
wr_merges:写合并的次数,为了效率可能会合并相邻的读和写
wr_sectors:写的扇区数,写成功的总得扇区数
wr_ticks:写花费的毫秒数
ios_pgr:正在处理的IO数
tot_ticks:输入/输出操作花费的毫秒数
rq_ticks:与ios_pgr相关,表示加权的毫秒数,就是说当前队列中的io请求数乘以经过的毫秒数,所以想要获取平均队列长度,只需要该值除以经过的毫秒数,举个例子:在超市排队买东西,后面10个人等待第一个人付钱,第一个人花了1分钟付钱,那么这10个人总花费的时间是1*10=10分钟。也就是说它计算的是时