позволяет сказать, у меня есть 64-ядерный сервер, и мне нужно вычислить md5sum
все файлы в /mnt/data
и сохранить результаты в текстовом файле:Bash: распараллеливание md5sum контрольной суммы многих файлов
find /mnt/data -type f -exec md5sum {} \; > md5.txt
Проблема с приведенной выше командой заключается в том, что в любой момент времени выполняется только один процесс. Я хотел бы использовать всю мощь своих 64-ядер. В идеале я хотел бы убедиться, что в любой момент времени выполняется 64 параллельных процесса md5
(но не более 64).
Также. Мне понадобится вывод из всех процессов, которые нужно сохранить в один файл.
ПРИМЕЧАНИЕ: Я не ищу способ вычисления md5sum
одного файла параллельно. Я ищу способ вычислить 64 md5sums из 64 различных файлов параллельно, если есть файлы, поступающие от find
.
Я не уверен, что это будет хорошо. Я мог представить, что материал скоро будет привязан к IO, и что использование 64 процессов приведет к slooow IO, хотя многие ядра остаются бездействующими. – glglgl
Но, с другой стороны, современные файловые системы много кэшируются в ОЗУ, поэтому использование более чем одного за раз имеет смысл. – Alfe
@Alfe: ядро все равно придется извлекать данные * в * ОЗУ, поэтому узкое место остается. –