AWS EBS 中 IO 操作(IOP)的大小是多少?

AWS EBS 中 IO 操作(IOP)的大小是多少?

我的研究表明,现代文件系统(ext4、xfs)的标准块大小和最大块大小(内核限制)均为 4KB。然而,AWS 允许最大 256KB 的 IO 操作并说

对于 32 KB 或更小的 I/O 操作,您应该会看到已配置的 IOPS 数量,前提是您驱动的 I/O 足以使驱动器保持繁忙。对于较小的 I/O 操作,您甚至可能会看到高于已配置的 IOPS 值(在客户端测量时),这是因为客户端可能会将多个较小的 I/O 操作合并为较少数量的大块。

Linux 在哪里公开和/或允许配置“设备块大小?”当在 postgres 中进行全表扫描(8KB 块大小)时,您可以在哪里查看和/或配置操作系统发出的“IO 操作”的大小?

答案1

一次 I/O 操作的大小取决于很多因素。计算应用程序的平均值并不一定是坏主意。

亚马逊对它们的定义意味着他们的硬件支持 256KB 块。单个 I/O 操作是读取或写入一个块。对硬件的“未对齐”访问(操作跨越两个块)将导致两次 I/O 操作,即使软件和硬件块大小匹配也是如此。这就是为什么使用与硬件块大小相同的文件系统块大小对 I/O 性能非常有用的原因,尽管这会降低存储效率,因为文件系统块是分配量。

文件系统中的块大小主要由内存页面大小决定,因为读取操作会进入内存页面。通常,x86 Linux 中的内存页面为 4kB;尽管内核可以映射更大的页面,但普通 4kB 页面和巨大 4MB 页面之间没有中间大小。因此,您无法在现代系统和硬件上真正调整这一点。

但是,文件系统可以尝试使跨多个块的所有读取和写入操作连续进行,从而防止出现碎片。EXT4 通过在磁盘上稀疏地分配文件而不是在请求块时分配下一个空闲块来实现这一点;其他文件系统也有此策略。当这些块在物理上连续且不跨越物理块边界时,内核(文件系统和磁盘驱动程序)可以将跨多个块的单个读取操作聚合为单个读取操作。

磁盘驱动器会自动发现磁盘块大小;您无法调整它。您可以使用blockdev --getpbsz /dev/xvda或任何其他工具读取它。

相关内容