[Linux] 磁盘IO性能查看和优化以及iostat命令

前端之家收集整理的这篇文章主要介绍了[Linux] 磁盘IO性能查看和优化以及iostat命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天听到看部门同事有遇到IO过高的问题,简单的查询了下

 

 iostat命令:

%user:cpu处在用户模式下的时间百分比。

%nice:cpu处在带NICE值的用户模式下的时间百分比。

%system:cpu处在系统模式下的时间百分比。

%iowait:cpu等待输入输出完成时间的百分比。

%steal:管理程序维护另一个虚拟处理器时,虚拟cpu的无意识等待时间百分比。

%idle:cpu空闲时间百分比。

 

如果%iowait的值过高,表示硬盘存在I/O瓶颈

如果%idle值高,表示cpu较空闲

如果%idle值高但系统响应慢时,可能是cpu等待分配内存,应加大内存容量。

如果%idle值持续低于10,表明cpu处理能力相对较低,系统中最需要解决的资源是cpu

 

工作机制

当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。
对于每个文件的第一个读请求,系统读入所请求的页面并读入紧随其后的少数几个页面(不少于一个页面,通常是三个页面),这时的预读称为同步预读。
如果应用程序接下来是顺序读取的话,那么文件 cache 命中,OS 会加大同步预读的范围,增强缓存效率,此时的预读被称为异步预读
如果接下来 cache 没命中,那么 OS 会继续使用同步预读。

 

因此基本思路就是:

尽量避免磁盘的随机IO,尽量利用磁盘预读缓存,利用局部性原理
尽可能地顺序读写一个文件
单进程读写硬盘
避免对大目录操作
把小文件的读写转换为大文件的写

猜你在找的Linux相关文章