Я не готов предположить, что вы связаны с вводом / выводом, не увидев вывод top
во время работы. Как и в случае с depesz, я склонен полагать, что операции сжатия / распаковки (которые математически сложны) с большей вероятностью будут связаны с процессором.
Когда вы имеете дело с операцией, связанной с ЦП, использование большего количества потоков / процессов, чем у вас процессоров, почти никогда [1] не улучшит ситуацию - если загрузка ЦП уже на 100%, больше потоки / процессы не будут магически увеличивать свою емкость - и, скорее всего, ухудшат ситуацию, добавив дополнительные издержки на переключение контекста.
[1] Я слышал, что для сложных компиляций, таких как сборка нового ядра, полезно make
использовать вдвое больше процессов, чем у машины с процессорами, и мой личный опыт показывает, что это быть точным Объяснение, которое я слышал для этого, состоит в том, что это позволяет каждому ЦПУ быть занятым, компилируя в одном процессе, в то время как другой процесс ожидает выборки данных из основной памяти. Если вы рассматриваете компиляцию как процесс, связанный с процессором, это исключение из обычного правила. Если вы рассматриваете это как случай ввода-вывода (где ввод-вывод находится между процессором и основной памятью, а не дисковым / сетевым / пользовательским вводом-выводом), это не так.