首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initramfs的解压非常慢。

initramfs的解压非常慢。
EN

Unix & Linux用户
提问于 2015-04-23 13:01:58
回答 2查看 4.9K关注 0票数 4

我正在努力改善我的设备的内核启动时间,我想要一些帮助。我使用的是内核版本2.6.37的OMAPL138,它需要大约50秒的时间才能完成启动过程,而且我认为这是一个很长的时间。下面是引导过程的一些阶段的图像。正如您所看到的,在EMAC: MII配置的消息出现之前有19秒钟的延迟,我认为这是我的启动时间的主要问题。

经过一些测试后,我发现这个延迟是在initramfs.cpio.lzma的解压过程中发生的。我是通过在initramfs.c文件中打印一些消息来发现的,这种延迟发生在unpack_to_rootfs函数内的while循环中。initramfs.cpio.lzma有5.3MB,总内核映像(uImage)有7.3MB。

我的问题是:我是不是做错了什么,或者唯一的改进方法是减少内核的大小?也许你们中的一些人以前必须处理这个问题,所以我想就如何继续改进我的启动时间提出一些建议。非常感谢。

EN

回答 2

Unix & Linux用户

发布于 2015-05-01 13:11:16

可能不是CPU瓶颈,而是闪存媒体访问时间慢?下面在TI论坛上发现这个线程讨论闪存吞吐量限制在0.6MB/秒。OMAP-L 138 EVM SPI闪存读取性能和启动时间

对于测试(如Janus所建议的),看看是否可以使用gzip -0压缩内核映像和/或initramfs。或者更简单一些(在另一个工作站上),获取initramfs.cpio.lzma文件的副本,将其解压缩到initramfs.cpio,然后用lzma -0重新压缩。将新的重新压缩文件重写回闪存媒体。我希望文件应该稍微大一点。如果启动速度更快,那么CPU可能是一个瓶颈。如果启动速度较慢,则可能是IO的瓶颈。

使用lzma -9甚至可能重复测试,但是要小心,压缩和解压缩都需要大量的内存。

以下是lzma (v5.07)手册页的摘录:

On the same hardware, the decompression speed is approximately a constant number of bytes of compressed data per second. In other words, the better the compression, the faster the decom- pression will usually be. This also means that the amount of uncompressed output produced per second can vary a lot. The following table summarises the features of the presets: Preset DictSize CompCPU CompMem DecMem -0 256 KiB 0 3 MiB 1 MiB -1 1 MiB 1 9 MiB 2 MiB -2 2 MiB 2 17 MiB 3 MiB -3 4 MiB 3 32 MiB 5 MiB -4 4 MiB 4 48 MiB 5 MiB -5 8 MiB 5 94 MiB 9 MiB -6 8 MiB 6 94 MiB 9 MiB -7 16 MiB 6 186 MiB 17 MiB -8 32 MiB 6 370 MiB 33 MiB -9 64 MiB 6 674 MiB 65 MiB

票数 1
EN

Unix & Linux用户

发布于 2017-03-24 06:14:10

如果IO速度不是瓶颈,那么另一种选择是使用LZ4压缩,它使文件比gzip稍大,但解压缩非常快。

用它来压缩内核的内核配置选项是CONFIG_KERNEL_LZ4=y。

http://events.linuxfoundation.org/sites/events/files/lcjpcojp13_klee.pdf

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/198145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档