Я пытаюсь установить максимальное количество потоков записи, которое может обрабатывать жесткий диск, например, если требуемая скорость составляет 20 КБ / с на поток, как я могу проверить максимальное число одновременных записей до того, как диск начнет дросселировать и станет медленнее, и давайте предположим, что ОС, файловая система или приложение не являются частью узкого места.

Каждый записываемый файл отличается для каждого пользователя.

Я прочитал « Достичь максимальной скорости записи на жесткий диск, размещенный другим пользователем», но где этот вопрос отличается, другой вопрос, основанный на том, сколько файлов в секунду, а у меня, сколько на основе X КБ / сек.

Я запустил тест с использованием HD Tune и CrystalDiskMark, но, к сожалению, я думаю, что он охватывает только однопоточные передачи, или я не знаю, как прочитать результаты и рассчитать их.

Вот результат CrystalDiskMark, я не уверен, полезно это или нет.

Вопросы)

  • Как я могу протестировать жесткий диск и определить, сколько одновременно записываемых дисков может обрабатывать диск, основываясь на минимальной скорости 100 КБ / с?

1 ответ1

1

Это полностью зависит от того, выполняете ли вы последовательный или случайный ввод-вывод, и как часто вы хотите / должны выполнять сброс на диск ...

И 20 КБ / с, и 100 КБ / с незначительны для современного оборудования. На скриншоте CrystalDiskMark и ваше беспокойство я подозреваю, что вы имеете дело с вращающимся диском ... почему бы не использовать SSD?


Максимальное число одновременных записей до того, как диск начнет дросселировать

Дело не в дросселировании двигателя, а в том, что физическое движение головы требует времени для завершения. При случайном вводе / выводе это усугубляется по мере уменьшения размера каждого записанного блока и увеличения времени поиска между записями.

давайте предположим, что ОС, файловая система или приложение не являются узким местом

Не зная состояния файловой системы с точки зрения фрагментации и свободного места, вы не можете предположить это, и вы, конечно, не можете принять это в течение срока службы продукта или установки.


Если вы страдаете от проблем с производительностью, то вам нужно использовать буферизованный ввод-вывод - т.е. запись в файл на самом деле собирает данные в буфер, прежде чем сразу записать больший блок на диск.

Запись 100 КБ / с в течение 10 секунд может быть представлена в хранилище как любое из следующего (или более широкого):

  • блок 1 КБ каждые 10 мс
  • блок 10 КБ каждые 100 мс
  • блок 100 кбайт каждую 1 секунду
  • блок 1000 кб каждые 10 секунд

Обсуждаем ли мы обычный (красный) или нечастый (зеленый)? Каждый из цветов будет « записывать » одинаковое количество данных за один и тот же период времени.

написать пропускную способность в разных размерах блока

Написание больших блоков сразу поможет с пропускной способностью и фрагментацией файловой системы, хотя есть и компромисс.

  • Запись больших блоков, реже - улучшит пропускную способность, но потребует больше оперативной памяти, а в случае потери питания или сбоя большая часть данных будет потеряна
  • Более частая запись меньших блоков снижает производительность, но требует меньше оперативной памяти и меньше данных хранится в энергозависимой памяти.

Файловая система или операционная система могут налагать правила относительно того, как часто файловый кэш записывается на диск, поэтому вам может потребоваться управлять этим кэшированием в приложении ... Начните с использования буферизованного ввода-вывода и, если это не поможет, рассмотрите ситуацию.


давайте представим, что 1000 пользователей загружают файл 1 ГБ со скоростью 20 КБ / с

Вам удобно, когда пользователи загружают файл размером 1 ГБ в течение ~ 14,5 часов? Со всеми проблемами, которые возникают сбои (то есть: повторная загрузка с самого начала).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .