use*_*258 5 postgresql linux amazon-ebs iops amazon-web-services
我的研究表明,现代文件系统(ext4、xfs)的标准块大小和最大(内核限制)块大小均为 4KB。但是,AWS 允许最大 256KB 的 IO 操作并说
对于 32 KB 或更小的 I/O 操作,您应该会看到已配置的 IOPS 量,前提是您驱动的 I/O 足够使驱动器保持忙碌。对于较小的 I/O 操作,您甚至可能会看到 IOPS 值高于您提供的值(在客户端测量时),这是因为客户端可能将多个较小的 I/O 操作合并为一个较小的数字大块。
Linux 在哪里公开和/或允许配置“设备块大小”?在说,postgres 中的全表扫描(8KB 块大小)时,您可以在哪里查看和/或配置操作系统问题的“IO 操作”的大小?
一次 I/O 操作的大小取决于很多因素。计算应用程序的平均值不一定是一个坏主意。
Amazon 对它们的定义意味着它们的硬件支持 256KB 块。单个 I/O 操作是对一个块的读取或写入。即使软件和硬件块大小匹配,对跨越两个块的操作的硬件的“未对齐”访问也将导致两个 I/O 操作。这就是为什么使用与硬件块大小相同的文件系统块大小对于 I/O 性能非常有用,尽管这会降低存储效率,因为文件系统块是分配量子。
文件系统中的块大小很大程度上取决于内存页大小,因为读取会进入内存页。通常,x86 Linux 中的内存页为 4kB;尽管内核可以映射更大的页面,但普通 4kB 页面和巨大的 4MB 页面之间没有中间大小。因此,您无法在现代系统和硬件上真正对此进行调整。
但是,文件系统可以尝试通过防止碎片来使多个块上的所有读取和写入顺序进行。EXT4 通过在磁盘上稀疏地分配文件而不是在请求块时分配下一个空闲块来实现此目的;其他文件系统也有这方面的策略。当这些块物理上连续并且不跨越物理块边界时,内核(文件系统和磁盘驱动程序)可以将跨越多个块的单个读取操作聚合为单个读取操作。
磁盘驱动程序自动发现磁盘块大小;你无法调整它。blockdev --getpbsz /dev/xvda你可以用或者你有的东西来阅读它。