系统优化-IO-总结

IO的原理

磁盘

磁盘是块状设备,用来持久化数据,磁盘的性能明显劣于内存,系统用了缓存(cache)和缓冲(buffer)来弥补这部分的性能差异。

磁盘有许多类型有:IDE(hd),SATA(sd)还有网络存储等,序号一般从a-z。我们在这些设备上还可以进行分区,分区用0-9表示。

我们将磁盘分区挂载到文件系统的某个目录中使用

文件系统

linux通过文件系统操作磁盘中的数据。文件系统由目录项、索引块、超级块、逻辑块组成。

  • 逻辑块:数据的最小单位是扇出一般是512b,磁盘为了加速访问将8个相邻的扇区组成了一个逻辑块进行操作,一个逻辑块4kb。逻辑块用来存储文件数据
  • 索引块:存储索引节点(inode),索引节点存储了文件的原信息。比如大小、创建时间、权限、地址
  • 目录项:存储文件和目录项之间的关系。
  • 超级块:用来表示索引块、逻辑快使用情况。

    缓存:

    页缓存:加速磁盘IO访问
    索引节点缓存:加速索引节点的访问
    目录项缓存:加速目录项查找和访问

    vfs:隐藏各种磁盘的实现提供统一的接口
    通用区:在vfs下层隐藏多种磁盘系统的实现,对上提供统一接口;对下提供多种io请求合并优化的策略。

重点指标

如图

avator

工具

下面的表格是提供I/O的性能指标的工具:

avator

以指标的维度看:

avator

按照常用的排查思路我们看各工具:

avator