GNU Parallel имеет накладные расходы на работу порядка 5 мс.Таким образом, если ваши задания недолговечны, то эти издержки будут ограничивающим фактором.
xsltproc
может принимать несколько файлов в качестве аргументов, поэтому это может помочь:
find /path/to/xml -type f -iname '*.xml' -print0 |
parallel -X -0 xsltproc transform.xsl > out.txt
Редактировать
Если это правильно:
find /path/to/xml -type f -iname '*.xml' -print0 |
xargs -0 -P8 xsltproc transform.xsl > out.txt
(за исключением смешанного вывода), то решение -X
также должно работать правильно.Решение xargs -P8
поместит много имен файлов после transform.xsl
.То же самое относится и к -X
.Вы уверены, что вывод xargs -P8
является полным (хотя и смешанным) выводом?
Если xlstproc
работает надежно только с одним именем файла, попробуйте следующее:
find /path/to/xml -type f -iname '*.xml' |
parallel --pipe -N100 --round-robin parallel xsltproc transform.xsl > out.txt
Этопорождает parallel
на ядро процессора.Таким образом, вы должны увидеть 100% загрузки ЦП всех процессоров или 100% дискового ввода-вывода.Если файлы кэшируются, то вы должны увидеть 100% загрузку ЦП - но, в основном, из GNU Parallel.