1

У меня есть процесс, который должен делать много записей на диск, но не читать. Я могу либо написать много маленьких файлов (~ 1 000 000 000 файлов, чем я сейчас занимаюсь), либо написать несколько больших файлов.

Небольшие файлы занимают в среднем ~ 2 КБ, но, поскольку у меня размер блока 4096 Б, я теряю примерно половину моего дискового пространства.

Однако, поскольку многие потоки должны писать одновременно, не будут ли большие файлы узким местом, поскольку каждый поток должен будет открыть файл, записать, а затем закрыть его?

Подводя итог, что лучше для ввода-вывода и оптимизации пространства между:

  • Много маленьких файлов
  • Несколько больших файлов

1 ответ1

2

Самый простой может быть , чтобы позволить кэширование записи определить , как часто фактический HDD (или SSD) записи сделаны. Вы можете включить или выключить кэширование записи на уровне операционной системы или поэкспериментировать с различными настройками hdparam. Это позволяет настроить без изменения вашего приложения. Смотрите Unix StackExchange по настройке.

Другой возможностью является запись на RAM-диск и периодическое перемещение данных на жесткий диск.

Предостережение: увеличение задержки записи увеличивает вероятность потери данных, хотя, если вы используете ноутбук или ПК с ИБП, это может не быть проблемой.

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