Мои исследования показывают, что как стандартный, так и максимальный (ограничения ядра) размер блока для современных файловых систем (ext4, xfs) составляет 4 КБ. Тем не мение, AWS позволяет выполнять операции ввода-вывода размером до 256 КБ и говорит
Для операций ввода-вывода 32 КБ или меньше вы должны увидеть количество операций ввода-вывода в секунду, которые вы подготовили, при условии, что вы используете достаточно операций ввода-вывода, чтобы диски были заняты. Для небольших операций ввода-вывода вы можете даже увидеть значение IOPS, которое выше, чем то, что вы подготовили (при измерении на стороне клиента), и это связано с тем, что клиент может объединять несколько небольших операций ввода-вывода в меньшее число. больших кусков.
Где Linux предоставляет и / или разрешает настройку «размера блока устройства»? При выполнении, скажем, полного сканирования таблицы в postgres (размер блока 8 КБ), где вы можете увидеть и / или настроить размер «операций ввода-вывода», с которыми сталкивается ОС?
Размер одной операции ввода-вывода зависит от многих вещей. Расчет среднего значения для вашего приложения - не обязательно плохая идея.
Согласно определению Amazon, их оборудование поддерживает блоки размером 256 КБ. Отдельная операция ввода-вывода - это чтение или запись одного блока. «Невыровненный» доступ к оборудованию, когда операция охватывает два блока, приведет к двум операциям ввода-вывода, даже если размеры программного и аппаратного блоков совпадают. Вот почему для повышения производительности ввода-вывода так полезно использовать размер блока файловой системы того же размера, что и размер блока оборудования, хотя это может снизить эффективность хранения, поскольку блок файловой системы является квантом распределения.
Размеры блоков в файловых системах в значительной степени зависят от размера страницы памяти, поскольку операции чтения идут в страницы памяти. Обычно в x86 Linux размер страниц памяти составляет 4 КБ; хотя ядро может отображать более крупные страницы, нет промежуточного размера между обычной страницей 4 КБ и огромной страницей 4 МБ. Таким образом, вы не можете настроить это на современных системах и оборудовании.
Однако файловая система может попытаться сделать все операции чтения и записи в нескольких блоках последовательными, предотвращая фрагментацию. EXT4 делает это, распределяя файлы на диске редко, вместо выделения следующего свободного блока при запросе блока; в других файловых системах также есть стратегии для этого. Ядро (файловая система и драйверы диска) может объединить одну операцию чтения, охватывающую несколько блоков, в одну операцию чтения, когда эти блоки физически последовательны и не пересекают границу физического блока.
Драйвер диска автоматически определяет размер блока; вы не можете это отрегулировать. Вы можете прочитать это с помощью blockdev --getpbsz /dev/xvda
или что у тебя.