Я вижу такое же поведение с примененным флагом -mx9
.
С этим флажком я вижу, что все ядра используются полностью.
Алгоритм "ультра" сжатия (mx9
) выполняет более исчерпывающий и требовательный к памяти поиск и поэтому ограничен пропускной способностью памяти.
Использование -mx5
или -mx7
увеличивает нагрузку на процессор.
Действительно, из этой страницы видно, что настройки Ultra (9) и High (7) приводят к значительному увеличению словарей и других настроек данных для проверки на сжатие. Это значительно замедлит сжатие, и, поскольку данные находятся в памяти, ограничением является пропускная способность памяти.
Использование словарей большего размера значительно повлияет на скорость сжатия, поскольку для каждого набора байтов в файле, который нужно сжать, теперь приходится искать в словаре в 2 или 4 раза больше, используя алгоритмы, которые могут заканчиваться поиском в наборе данных несколько раз. по-разному. Это может привести к экспоненциальному замедлению при увеличении требований к памяти.
Ultra также изменяет алгоритм поиска по словарю, предположительно на более эффективный с точки зрения сжатия, если не скорость - если бы он был быстрее, то он был бы по умолчанию. Это замедлит это еще дальше.
Алгоритмы сжатия часто пишутся как серия компромиссов, основанных на состоянии современного оборудования. Настройки уменьшаются от их теоретической пиковой степени сжатия, чтобы они достигли некоторого разумного сжатия за разумное время. Когда все настроено на максимальное сжатие, вы получаете огромные требования к памяти, а также пропускную способность памяти и время процессора. Также может потребоваться значительно больше ресурсов для распаковки.
Использование "ультра" настроек целесообразно только для данных, которые вы хотите максимально сжать без временных ограничений, и результаты, которые вы видите, отражают это. В результате вы попали в одно из ограничений вашей системы.
Если вы просто отправляете файл другу и можете переносить файл на несколько процентов больше, скорее всего, "нормальных" настроек будет достаточно.