iostat和linux的I/O过程

简介:

iostat可以查看linux系统的io数据,基本使用可以看《Linux iostat监测IO状态》,这里摘录一下参数和底层的对应。 iostat性能数据来自/proc/diskstats,磁盘列表数据来自/etc/mtab

 相关参数列表

 
完成的merge的操作数目 rrqm/s wrqm/s
完成的I/O操作数目 r/s w/s
每秒扇区操作 rsec/s wsec/s
每秒读/写K字节 rkB/s wkB/s
平均请求扇区的大小 avgrq-sz
平均I/O队列长度 avgqu-sz
平均每次设备I/O操作的等待时间(毫秒) await
平均每次设备I/O操作的服务时间(毫秒) svctm

I/O流程图

下图展示了应用的读写调用到写入磁盘的过程以及参数的检测位置: iostat

问题:

为什么在os buffer下来的io是r/s+rrqm和w/s+wrqm呢?

rrqm是在io调度层,当发现io和前面队列中io可以合并,就合并到队列中。因此,在os buffer时的io数量到io调度层后,io数量其实变少了。

r/s和w/s的值为什么比rsec和wsec小?

rs和ws是和物理设备交互(控制器)的次数,rsec和wsec是Linux的一种计数,也就是扇区。图上说,从块设备开始往下都是512字节大小。这个512字节就是扇区大小,这是Linux内核中写死的。到最下层,写物理设备时,每次io不一定就是512字节的,因为大部分物理存储设备都已经不是512字节一个物理块了。因此一个rs可能是多rsec。那么rs的值要小于rsec也就正常了。

avgrq就是(wsec+rsec)/(ws+rs)的值,可以反映出每次io读/写物理设备的sec大小。

总结:

  1. await和svctm的差很大时,注意操作系统I/O调度的性能。
  2. fread()是C标准函数,有用户级缓存,内部调用read()。read()是系统函数,有系统缓存。注意区别。
  3. merge操作位于系统I/O调度层,当操作系统发现不同的读取请求读取的是相同sector的数据,FIleSystem会将这个请求合并。
  4. 扇区(Sector)是驱动操作的最小单位,是磁盘级别的,可通过 fdisk -l 查看扇区大小。簇(Cluster)也称作块(Block),是文件系统的最小单位,由文件系统定义,可通过 blockdev –getbsz /dev/<dev> 查看。通常block大小是Sector的倍数
  5. I/O调度算法:CFQ(完全公平排队I/O调度程序)     NOOP(无操作调度程序)      Deadline(截止时间调度程序)     AS(预料I/O调度程序)。

以上部分内容摘自《磁盘IO满负荷性能分析 》

转载请注明:旅途@KryptosX » iostat和linux的I/O过程

目录
相关文章
|
5月前
|
缓存 网络协议 Unix
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux(UNIX)五种网络I/O模型与IO多路复用
115 0
|
7月前
|
存储 缓存 Linux
百度搜索:蓝易云【如何在Linux系统服务器中测试存储/磁盘I/O性能?】
这些工具可以帮助你测试磁盘的读取和写入性能,并提供各种性能指标和统计数据。请注意,在运行这些测试时,确保没有重要的数据存储在被测试的磁盘上,并谨慎操作以避免对系统和数据造成不必要的影响。
90 0
|
7月前
|
监控 网络协议 Java
I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)(上)
I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)
114 0
|
2月前
|
缓存 Ubuntu 网络协议
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
27 1
|
19天前
|
存储 缓存 Linux
【linux基础I/O(二)】文件系统讲解以及文件缓冲区的概念
【linux基础I/O(二)】文件系统讲解以及文件缓冲区的概念
|
2月前
|
监控 网络协议 Linux
Linux I/O多路复用深入解析:从select到epoll的演进之路
Linux I/O多路复用深入解析:从select到epoll的演进之路
74 0
|
6月前
|
存储 缓存 数据管理
深入理解Linux内核I/O机制:探索文件系统与设备驱动(上)
深入理解Linux内核I/O机制:探索文件系统与设备驱动
|
3月前
|
缓存 监控 Unix
性能监控之 Linux 命令 top、vmstat、iostat、free、iftop 基础
【2月更文挑战第9天】性能监控之 Linux 命令 top、vmstat、iostat、free、iftop 基础
71 5
性能监控之 Linux 命令 top、vmstat、iostat、free、iftop 基础
|
4月前
|
Java Unix Linux
Linux 系统-网络I/O模型
网络 I/O操作过程中会涉及到两个系统对象,一个是用户空间I/O操作的进程或者线程,另一个是内核 空间的内核系统,比如发生 I/O read操作时,它会经历两个阶段
30 0
|
4月前
|
存储 Java Linux
Linux之基础I/O
Linux之基础I/O
31 0