Mksquashfs 是一个高度并行化的程序,它利用所有可用的内核来最大限度地提高性能。如果您发现构建时间非常长,那么您可能有很多重复文件,或者机器内存不足并出现抖动。
要调查性能,你可以先
在 Mkssquashfs 上使用 -no-duplicates 选项,例如
mksquashfs xxx xxx.sqsh -no-duplicates
重复检查是一项缓慢的操作,必须按顺序进行,并且在具有大量重复项的文件集上,这会成为其他并行程序的瓶颈。
在 Mksquashfs 运行时检查内存使用/空闲内存,如果系统正在垃圾,将出现非常低的性能。研究 -read-queue、-write-queue 和 -fragment-queue 选项以控制 Mksquashfs 在运行时缓存多少数据。
Tar 和 zip 没有并行化并且只使用一个内核,因此很难相信您对 Mksquashfs 压缩性能的抱怨。
此外,我从未见过任何其他关于用户空间程序“差”的报告,Mksquashfs 和 Unsquashfs 具有一组高级选项,可以非常精细地控制压缩过程,并允许用户选择压缩哪些文件 -而且这些选项比 tar 之类的程序要早很多。
除非你能给出具体的例子说明为什么工具不好,否则我会把它归结为工人指责工具的常见情况,而真正的问题在别处。
正如我之前所说,您的系统可能正在抖动,因此性能很差。默认情况下,Mksquashfs 使用所有可用的内核,以及至少 600 MB 的 RAM(在大型文件系统上增加到 2 GB 或更多)。这是为了提高性能,因为在内存中缓存数据会减少磁盘 I/O。这种“开箱即用”的行为对于具有大量内存和空闲系统的典型用户来说是好的。这是大多数用户想要的,一个 Mksquashfs,它“最大化”系统以实现尽可能快的文件系统创建。
它不适用于 RAM 低的系统,或具有消耗大量可用 CPU 和/或内存的活动进程的系统。当每个进程争用可用的 CPU 和 RAM 时,您只会发生资源争用。这不是 Mksquashfs 的错,而是用户的错。
Mksquashfs -processor 选项用于限制 Mksquashfs 使用的处理器数量,-read-queue、-write-queue 和 -fragment-queue 选项用于控制 Mksquashfs 使用多少 RAM。