Потоки для обработки миллиона файлов

Ладно, наконец-то я решил проблемы. Это произошло из-за ошибок файловой системы, из-за которых lsотображалось неправильно, а другие утилиты работали со сбоями.
Мне жаль, что заголовок вопроса вводит в заблуждение (, несмотря на то, что внутри u/действительно много файлов, каталог не очень большой).

Я решил проблему, используя живой USB, так как повреждена файловая система /. Исправление заключалось в простом применении sudo fsck -cfk /dev/sda2, где dev/sda2— поврежденный диск.

1
21.06.2020, 22:34
1 ответ

Обычно ввод-вывод является пределом. Не имеет смысла иметь так много потоков, которые ждут ввода-вывода.

Вы можете определить оптимальное соотношение, чтобы n ядер ЦП работали постоянно, а ввод-вывод был на 100%. Затем оптимальное количество потоков определяется отношением времени, необходимого для обработки файла, ко времени, необходимому для чтения ввода и записи вывода.

Примеры:

  • Если чтение и запись файла занимает больше времени, чем его обработка, то одного потока будет достаточно. Может иметь смысл иметь второй поток/процесс, чтобы всегда были доступны запросы ввода-вывода. Однако этот второй поток должен работать с приоритетом ввода-вывода в режиме ожидания.
  • Если обработка файла занимает в десять раз больше времени, чем ввод-вывод для этого файла, оптимальным будет десять потоков.
2
18.03.2021, 23:25

Теги

Похожие вопросы