Это полностью зависит от того, выполняете ли вы последовательный или случайный ввод-вывод, и как часто вы хотите / должны выполнять сброс на диск ...
И 20 КБ / с, и 100 КБ / с незначительны для современного оборудования. На скриншоте CrystalDiskMark и ваше беспокойство я подозреваю, что вы имеете дело с вращающимся диском ... почему бы не использовать SSD?
Максимальное число одновременных записей до того, как диск начнет дросселировать
Дело не в дросселировании двигателя, а в том, что физическое движение головы требует времени для завершения. При случайном вводе / выводе это усугубляется по мере уменьшения размера каждого записанного блока и увеличения времени поиска между записями.
давайте предположим, что ОС, файловая система или приложение не являются узким местом
Не зная состояния файловой системы с точки зрения фрагментации и свободного места, вы не можете предположить это, и вы, конечно, не можете принять это в течение срока службы продукта или установки.
Если вы страдаете от проблем с производительностью, то вам нужно использовать буферизованный ввод-вывод - т.е. запись в файл на самом деле собирает данные в буфер, прежде чем сразу записать больший блок на диск.
Запись 100 КБ / с в течение 10 секунд может быть представлена в хранилище как любое из следующего (или более широкого):
- блок 1 КБ каждые 10 мс
- блок 10 КБ каждые 100 мс
- блок 100 кбайт каждую 1 секунду
- блок 1000 кб каждые 10 секунд
Обсуждаем ли мы обычный (красный) или нечастый (зеленый)?
Каждый из цветов будет « записывать » одинаковое количество данных за один и тот же период времени.
Написание больших блоков сразу поможет с пропускной способностью и фрагментацией файловой системы, хотя есть и компромисс.
- Запись больших блоков, реже - улучшит пропускную способность, но потребует больше оперативной памяти, а в случае потери питания или сбоя большая часть данных будет потеряна
- Более частая запись меньших блоков снижает производительность, но требует меньше оперативной памяти и меньше данных хранится в энергозависимой памяти.
Файловая система или операционная система могут налагать правила относительно того, как часто файловый кэш записывается на диск, поэтому вам может потребоваться управлять этим кэшированием в приложении ... Начните с использования буферизованного ввода-вывода и, если это не поможет, рассмотрите ситуацию.
давайте представим, что 1000 пользователей загружают файл 1 ГБ со скоростью 20 КБ / с
Вам удобно, когда пользователи загружают файл размером 1 ГБ в течение ~ 14,5 часов? Со всеми проблемами, которые возникают сбои (то есть: повторная загрузка с самого начала).