Linux性能优化实战 24-25:Linux 磁盘I/O是怎么工作的

Linux 磁盘 I/O 工作分三层: 设备层、通用块层 和 文件系统层

一、设备层

    也就是 磁盘。磁盘可以分为两类:机械磁盘固态磁盘

1. 机械磁盘:缩写为 HDD。 

    I/O 请求连续,就不需要磁道寻址,可以获得最佳性能。

    随机 I/O,需要不停地移动磁头,读写速度就会比较慢。

    最小读写单位是扇区,一般大小为 512 字节。

2. 固态磁盘:缩写为 SSD。 

    由固态电子元器件组成。不需要磁道寻址,所以,不管是连续 I/O,还是随机 I/O 的性能,都比机械磁盘要好得多。

    最小读写单位是页,通常大小是 4KB、8KB 等。

3. 磁盘架构:把磁盘接入后,按照不同的使用方式,又可以分为多种架构。

(1) 独立磁盘 /dev/sda

(2) 分成两个分区:/dev/sda1 和 /dev/sda2

(3) 多块磁盘组合成一个逻辑磁盘,也就是 RAID。

     根据容量、性能和可靠性需求的不同,RAID 一般可以划分为多个级别,如 RAID0、RAID1、RAID5、RAID10 等。

     RAID0 有最优的读写性能,但不提供数据冗余的功能。

4. Linux 中,磁盘实际上是作为一个块设备来管理的。也就是以块为单位读写数据,并且支持随机读写。

 

二、通用块层

    在文件系统和磁盘驱动中间的一个块设备抽象层  (减小不同块设备的差异带来的影响)。主要有两个功能:

1.  向上,为文件系统和应用程序,提供访问块设备的标准接口;

    向下,把各种异构的磁盘设备抽象为统一的块设备

2. 给文件系统和应用程序发来的 I/O 请求排队,并通过排序、合并等方式,提高效率。

 

三、文件系统层

    包括虚拟文件系统和其他各种文件系统的具体实现。

    它为上层的应用程序,提供标准的文件访问接口;对下会通过通用块层,来存储和管理磁盘数据。

 

四、磁盘性能指标

1. 使用率:处理 I/O 的时间百分比。过高的使用率,意味着磁盘 I/O 存在性能瓶颈。

2. 饱和度:处理 I/O 的繁忙程度。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。

3. IOPS:每秒的 I/O 请求数。

4. 吞吐量:每秒的 I/O 请求大小。

5. 响应时间: I/O 请求从发出到收到响应的间隔时间。

 

五、磁盘 I/O 观测

    iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率(%util)、IOPS(r/s+w/s)、吞吐量(rkB/s+wkB/s),响应时间(r_await+w_await)等各种常见的性能指标。

 

六、进程 I/O 观测

观察进程的 I/O 情况,你还可以使用 pidstatiotop 这两个工具。

1. pidstat

每秒读取的数据大小(kB_rd/s) ,单位是 KB

每秒发出的写请求数据大小(kB_wr/s) ,单位是 KB

2. iotop

前两行分别表示,进程的磁盘读写大小总数 和 磁盘真实的读写大小总数。

因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值