Многопоточный xz, с gzip, pv, и трубы - это самое эффективное, что я могу получить?

Если у вас есть автоматическое резервное копирование метаданных группы томов по умолчанию в /etc/lvm/archive/, вы можете использовать это руководство для восстановления поврежденных метаданных в PV. Тогда вы сможете увидеть lvsи смонтировать их, если они целы.

0
24.10.2019, 02:25
1 ответ

С опцией многопоточности -T0вы сообщаете xz две вещи одновременно. Использование MT также означает:ожидание , пока все входные (данные )не будут считаны в память, а затем начать сжатие «параллельно».

После включения pigzв мои тесты я анализирую производительность шаг за шагом; У меня есть файл 100M f100.

$  time xz -c  f100 >/dev/null

real  0m2.658s
user  0m2.573s
sys   0m0.083s

99% времени тратится на сжатие одного ядра. Со всеми четырьмя ядрами, активированными с помощью-T4(или -T0)

.
$  time xz -c -T4 f100 >/dev/null

real  0m0.825s
user  0m2.714s
sys   0m0.284s

Общий результат :На 300 % быстрее, почти линейно для каждого ядра. Значение «пользователь» должно быть разделено на 4 в соответствии с тем, как оно сообщается/определяется. «sys» теперь показывает некоторые накладные расходы --real — это сумма 1/4 user плюс sys.

$  time gzip     -dc f100.gz >/dev/null
$  time pigz -p4 -dc f100.gz >/dev/null

Это 0,5 против 0,2 секунды; когда я соберу все вместе:

$  time pigz -dc -p4 f100.gz | xz -c -T4 >out.xz

real  0m0.902s
user  0m3.237s
sys   0m0.363s

...уменьшает 0,8 + 0,2 = 0,9.

С несколькими файлами , но не слишком много, вы можете получить максимальный общий параллелизм с 4 фоновыми процессами оболочки. Вместо этого я использую четыре файла размером 25M :

.

for f in f25-?.gz; do time pigz -p4 -dc "$f" | xz -c -T0 >"$f".xz & done

Это кажется даже немного быстрее с 0,7 с. И даже без многопоточности, даже дляxz:

for f in f25-?.gz; do time gzip -dc "$f" | xz -c >"$f".xz & done

Просто настроив четыре простых четвертных конвейера с &, вы получите 0,8 с, как и для 100-мегабайтного файла с xz -T4.

В моем сценарии активировать многопоточность в xzтак же важно, как и распараллелить весь конвейер; если вы можете комбинировать это с pigz и/или несколькими файлами,вы даже можете быть немного быстрее, чем четверть суммы отдельных шагов.

2
28.01.2020, 03:10

Теги

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