Размер ввода-вывода против размера блока?

#performance #io #storage #latency #throughput

#Производительность #io #Хранение #задержка #пропускная способность

Вопрос:

Меня всегда смущало, совпадает ли размер ввода-вывода с размером блока. Люди использовали его взаимозаменяемо, когда говорили о производительности хранилища. Может кто-нибудь помочь мне определить различия?

Ответ №1:

Это не одно и то же, но они должны быть выровнены для оптимальной производительности. Размер ввода-вывода — это размер страницы, который использует ваше приложение, например, 16 КБ для InnoDB, 8 КБ для PostgreSQL и т.д.

Размер блока настраивается на вашем уровне хранения и может относиться к нескольким вещам. Например, это может относиться к размеру блока, используемого вашим RAID-массивом, который представляет собой объем данных, размещенных на каждом диске в stripe перед перемещением на следующий диск. Это может относиться к размеру блока вашей файловой системы (не регулируется в большинстве файловых систем).

Вот статья, которую я написал на тему выравнивания хранилища, которая охватывает все это.

Комментарии:

1. Насколько я понял, размер блока — это то, сколько информации вы принимаете за раз. Тем не менее, я все еще не понимаю, каким будет размер ввода-вывода. Я часто вижу эту взаимосвязь и не понимаю, как ее интерпретировать: пропускная способность = iops * Размер ввода-вывода

2. Это уравнение применимо только к spinning rust, где последовательный доступ быстрый, но произвольный доступ медленный. Вы можете перемещать головки только около 120 раз в секунду на диске с частотой 7200 оборотов в минуту, поэтому у вас есть не более 120 операций ввода-вывода. Итак, если каждый ввод-вывод равен 1 МБ, это 120 МБ / с. Если каждый ввод-вывод равен 1 КБ, то это 120 КБ / с. Это не относится так же к твердотельным накопителям.