jffs zlib tuning
NoiseEHC at freemail.hu
Mon Jan 7 12:15:26 EST 2008
This message is primarily written for Bernardo Innocenti but everybody
with relevant knowledge is welcomed to give some insight.
I have decided two months ago that will write an asm implementation for
zlib inflate (decompression) since Mitch Bradley said that the read
speed is 3MB/sec which is dominated by the decompression code.
Since then I went through the pain of installing linux in VirtualPC,
compiling the code in linux and ended up with a kernel module which can
test zlib code finally (took a month of my spare time, if I would have
known this in advance I would not have started...). Now I understand the
zlib code but need some info before acting on wrong assumptions:
1. Did anybody profile the kernel while reading files? Last thing I red
on this list is that the profiler does not work on the XO in kernel
mode. Did anybody fix that?
2. How does the file reading work? As I imagine the flash is read by DMA
and the resulting data is uncompressed to a buffer. Is it correct?. Is
the decompressed data gets copied to the target location or does it gets
decompressed to their final place? If it is copied, did somebody profile
how much time it takes? These questions are important to know how much
L2 cache is trashed in the process and which data needs prefetching.
3. How long is the average data length which jffs2 uses for calling inflate?
4. What is the average size of the length/distance code table?
4. Bernardo, as I imagine you are compiling kernels every day. If I send
you a "patch" (normally a rewritten inffast.c), would you test it on a
real XO machine, please?
More information about the Devel