Re: [PATCH] init: bzip2 or lzma -compressed kernels and initrds

From: Steven Noonan
Date: Mon Sep 15 2008 - 13:28:20 EST


On Mon, Sep 15, 2008 at 10:13 AM, Bill Davidsen <davidsen@xxxxxxx> wrote:
> Frans Meulenbroeks wrote:
>>
>> 2008/9/15 Rob Landley <rob@xxxxxxxxxxx>:
>>>
>>> On Sunday 07 September 2008 00:48:31 Willy Tarreau wrote:
>>>>
>>>> Hi Alain,
>>>>>
>>>>> +config KERNEL_LZMA
>>>>> + bool "LZMA"
>>>>> + help
>>>>> + The most recent compression algorithm.
>>>>> + Its ratio is best, decompression speed is between the other
>>>>> + 2. Compression is slowest.
>>>>> + The kernel size is about 33 per cent smaller with lzma,
>>>>> + in comparison to gzip.
>>>>
>>>> isn't memory usage in the same range as bzip2 ?
>>>
>>> Last I checked it was more. (I very vaguely recall somebody saying 16
>>> megs
>>> working space back when this was first submitted to busybox, but that was
>>> a
>>> few years ago...)
>>>
>>> A quick Google found a page that benchmarks them. Apparently it depends
>>> heavily on which compression option you use:
>>>
>>> http://tukaani.org/lzma/benchmarks
>>>
>>
>> [...]
>>
>> Apologies if I'm sidetracking the discussion, but I'd like to coin a
>> remark.
>>
>> For kernel/ramfsimage etc the best choice is the one that has the
>> fastest decompression (info on tukaani.org says gzip).
>> Rationale: as it uncompresses faster the system will boot faster.
>>
>> Of course this only holds if the background memory can hold that
>> image. For disk based systems, I assume this is not a problem at all,
>> but for embedded systems with all software in flash a higher
>> compression ration (e.g. lzma) can just make the difference between
>> fit and not fit (so in those cases lzma could just make your day).
>>
> Given the larger memory needed to decompress, it becomes a very interesting
> calculation in really small memory machines.
>

It all really depends on what you're prioritizing. If your priority is
speed and low RAM usage, you'd want to go with gzip. If your priority
is low disk usage (for instance, if you're a kernel developer with
dozens of kernels on /boot) and speed/RAM usage are less important,
LZMA is a good choice. It's just a matter of priority in non-embedded
machines. And in embedded machines, you just need to be -really-
careful about the RAM usage. LZMA is pretty flexible, though, so you
can customize the settings to get it to fit whatever memory profile
you need to.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/