У меня RAID 6 с 18 дисками. Используется как хранилище небольших изображений (5-500Кб). Это около 6 ТБ данных. У меня есть утилита, которая считывает эти изображения в память, а затем отправляет их по сети. Я заметил, что при вводе-выводе около 10 Мбит / с у меня около 100% активного времени. qlen составляет около 18-25, iops - около 500-700. это из-за большого количества мелких запросов? Могу я это улучшить? Я заметил, что это может повлиять на другие приложения, которые используют это хранилище для своих нужд. Также время отклика для некоторых файлов может увеличиваться до 700-1000 мс.
Не могу напрямую ответить на ваш вопрос, потому что производительность привода зависит от многих факторов. Это во многом зависит от типов ввода-вывода, размера ввода-вывода, кеша, контроллеров и т. Д.
В частности, вам необходимо понимать разницу в «стоимости» операций ввода-вывода для чтения и записи.
Операции ввода-вывода записи на RAID 6 обходятся дорого - каждый ввод-вывод требует 6 дисковых операций. Это означает, что вы можете просто разделить количество шпинделей на 6 для непрерывного перемещения. Есть несколько уловок, которые вы можете сделать, чтобы скрыть эту проблему - вы можете агрессивно кэшировать, потому что, если вы можете объединить полосы, вы значительно уменьшите эту проблему. Если вы напишете один блок, нужно проделать по 6 операций. Однако, если вы можете записать полную полосу, вам нужно просто написать еще 2 блока, что сделает его более эффективным, чем было бы RAID 1. Вы также можете отложить запись и просто отправить ее на диск позже, в результате чего запись будет завершена со «скоростью кеширования», пока вы не заполните кеш.
С другой стороны, чтение ввода-вывода - обслуживает одну операцию, но должен делаться в реальном времени - вы не можете откладывать это, как вы можете писать. Это означает, что чтение обычно происходит медленнее - но, опять же, вы можете частично смягчить это с помощью кеширования - но вам все же придется использовать вероятные шаблоны чтения (например, большие последовательности, повторное чтение общих файлов).
Это означает, что практически существует очень большая разница между теоретической и оптимальной производительностью в зависимости от рабочей нагрузки, поэтому на этот вопрос так сложно ответить.
В вашем случае - вы говорите, что у вас небольшие ВГД. 500–700 операций ввода-вывода в секунду для скорости 10 МБ / с означает, что у вас небольшие операции ввода-вывода. Таким образом, вы можете довольно легко - если это случайный образец - работать на худшей скорости ваших дисков. Либо из-за того, что ваши операции ввода-вывода для чтения являются случайными и не могут быть кэшированы, либо операции ввода-вывода для записи случайны и, следовательно, не могут быть объединены и полностью разделены на диск - как только ваш кеш записи заполнится, вы замедлитесь до 'диска скорость, а она может быть ужасно медленной. (18 дисков дают вам 3 эффективных шпинделя в этом сценарии - хотя вы получаете больше)
я считать Вы будете наверное быть в порядке с соотношением контроллера к диску, но это сложно сказать. Это обычно Дело в том, что ограничивающим фактором является вращающаяся ржавчина, поскольку это обычно самая медленная часть системы. Но мы получаем искаженные ожидания из-за огромных кешей и эффективного алгоритма кеширования.
Поэтому я бы посоветовал вам проверить, какое соотношение ввода-вывода вы получите. (Не обращайте внимания на МБ / сек, ясно, что вы даже не приближаетесь к теоретическим уровням). Проверьте коэффициенты попадания в кеш и размер кеша - если можете, посмотрите, насколько заполнены ваши кеши и какую скорость записи с полной полосой вы получаете (если вы выполняете много операций ввода-вывода записи).
Также проверьте скорость поиска диска - посмотрите, как часто ваши головы перемещаются по дискам - опять же, одним из недостатков интенсивных шаблонов случайного чтения является то, что ваши диски будут перегружаться.