This page has notes about faster kernel decompression.

Description

Currently, the method used to compress the kernel is gzip. However, other compression and decompression methods exist which may allow improvements in kernel decompression (and hence startup) performance.

This page documents Sony's investigation of UCL compression/decompression performance, for possible use in speeding up bootup time on an embedded device. In our testing UCL decompressed a sample file system image 43% faster than gunzip, and a sample kernel image 28% faster than gunzip.

From the UCL web page, it states:

Another method of speeding up the kernel load phase of bootup is to use DmaCopyOfKernelOnStartup

How to implement or use

Get UCL from following URL and use sample command "uclpack"

untar the file, build , and use the sample command "uclpack", located at: ucl-1.03/examples/uclpack in the untar'ed source tree.

Expected Improvement

The case study below is intended to show a performance improvement in decompressing a sample file system and sample kernel.

Resources

Projects

[Are there other compressors with better decompression performance than gzip??

Case Studies

Case 1

For this use case, we compiled both uclpack and gzip for the PowerPC platform. Then we ran the programs on the target platform, compressing and decompressing two different file images - an initrd filesystem image, and a linux kernel image (originally uncompressed).

The size and performance results from running these commands are in the tables below.

Image file:||||||initrd-2.6.5-1.358

method

UCL

GZIP

improved %

parameter

-b4194304

-8

.

source file size

819200

819200

.

compressed size

187853

189447

.

compression rate

77.1%

76.9%

0.3%

compression time: user (sec)

5.13

2.03

-152.5%

sys (sec)

0.09

0.06

-36.5%

total (sec)

5.22

2.09

-149.0%

decompression time: user (sec)

0.12

0.3

59.7%

sys (sec)

0.1

0.08

-16.9%

total (sec)

0.22

0.39

43.0%

Image file:||||||vmlinux-2.4.20 for ibm-440gp

method

UCL

GZIP

improved %

parameter

-b4194304

-8

.

source file size

1810351

1810351

.

compressed size

790250

776807

.

compression rate

56.3%

57.1%

-1.3%

compression time: user (sec)

17.29

6.07

-185.0%

sys (sec)

0.04

0.02

-92.4%

total (sec)

17.33

6.09

-184.6%

decompression time: user (sec)

0.12

0.16

26.1%

sys (sec)

0.03

0.04

35.8%

total (sec)

0.15

0.2

28.2%

Hardware
PPC440GP - 300 MHZ
Kernel Version
Linux kernel running on target was 2.6.11, kernel which was compressed with Linux 2.4.20
Configuration
See above tables for parameters to gzip and ucl
Time without change
[put that here]
Time with change
[put that here]

Case 2

Case 3

FastKernelDecompression (last edited 2008-05-07 18:22:25 by localhost)