Mksquashfs - это программа с высокой степенью параллелизации, которая использует все доступные ядра для максимизации производительности. Если вы видите очень большое время сборки, значит, у вас либо много дубликатов файлов, либо на машине недостаточно памяти и не работает.
Чтобы исследовать производительность, вы можете сначала
Использовать опцию -no-duplicates в Mkssquashfs i, e.
mksquashfs xxx xxx.sqsh -no-duplicates
Проверка дубликатов - это медленная операция, и она должна выполняться последовательно, а в наборах файлов с большим количеством дубликатов это становится узким местом в параллельной программе.
Проверка использования памяти / свободной памяти во время работы Mksquashfs. Если система перегружена, произойдет очень низкая производительность. Изучите параметры -read-queue, -write-queue и -fragment-queue, чтобы контролировать объем данных, кэшируемых Mksquashfs во время выполнения.
Tar и zip не распараллелены и используют только одно ядро, поэтому трудно поверить в вашу жалобу на производительность сжатия Mksquashfs.
Кроме того, я никогда не видел никаких других отчетов о том, что программы пользовательского пространства «плохие», Mksquashfs и Unsquashfs имеют расширенный набор параметров, которые позволяют очень точно контролировать процесс сжатия и позволяют пользователям выбирать, какие файлы сжимаются - и эти опции значительно опережают программы типа tar.
Если вы не можете привести конкретные примеры того, почему инструменты плохие, я объясню это обычным случаем, когда рабочий обвиняет инструменты, тогда как настоящая проблема в другом.
Как я сказал ранее, ваша система, вероятно, работает с перебоями и, следовательно, работает плохо. По умолчанию Mksquashfs использует все доступные ядра и не менее 600 МБ ОЗУ (увеличение до 2 ГБ или более в больших файловых системах). Это для производительности, поскольку кэширование данных в памяти уменьшает дисковый ввод-вывод. Такое поведение «из коробки» хорошо для обычных пользователей с большим объемом памяти и бездействующей системой. Это то, чего хочет большинство пользователей, Mksquashfs, который «максимально» использует систему для максимально быстрого создания файловой системы.
Это не хорошо для систем с небольшим объемом ОЗУ или для систем с активными процессами, использующими большой объем доступного ЦП и / или памяти. Вы просто получите конкуренцию за ресурсы, поскольку каждый процесс конкурирует за доступный процессор и оперативную память. Это не ошибка Mksquashfs, а пользователя.
Параметр Mksquashfs -processor предназначен для ограничения числа процессоров, используемых Mksquashfs, а параметры -read-queue, -write-queue и -fragment-queue позволяют контролировать объем оперативной памяти, используемый Mksquashfs.