Debian的make-kpkg实用程序可以同时构建许多内核片段。设置CONCURRENCY_LEVEL=cores+1是获得最佳性能的一般经验法则。这是个不错的猜测。
我为不同的整数编写了脚本。以下是8核Xeon上的内核编译时间。内核配置是Debian的内核3.12包的默认配置。
CONCURRENCY_LEVEL=1 real 57m17.953s
CONCURRENCY_LEVEL=2 real 30m26.084s
CONCURRENCY_LEVEL=3 real 21m39.387s
CONCURRENCY_LEVEL=4 real 17m13.022s
CONCURRENCY_LEVEL=5 real 14m41.180s
CONCURRENCY_LEVEL=6 real 13m8.875s
CONCURRENCY_LEVEL=7 real 12m8.646s
CONCURRENCY_LEVEL=8 real 11m55.420s
CONCURRENCY_LEVEL=9 real 13m27.034s
CONCURRENCY_LEVEL=10 real 14m17.753s
CONCURRENCY_LEVEL=11 real 14m45.664s
CONCURRENCY_LEVEL=12 real 15m1.784s
CONCURRENCY_LEVEL=13 real 15m10.595s
CONCURRENCY_LEVEL=14 real 15m19.862s
CONCURRENCY_LEVEL=15 real 15m24.915smake-kpkg还会生成一个deb包文件,该文件可以很容易地安装。相比之下,至少有一个官方的Fedora文档会经历大量的手工构建RPM的过程,我认为这是为了实现相同的目标--自动依赖关系解析。这是痛苦的。我怀疑Gentoo会被剥夺对包的任何关注。
所以我有几个问题要问那些有经验的内核开发者。并发内核构建是一个很大的胜利吗?有没有其他发行版提供它?考虑到包管理的编译是一大胜利吗?
提前谢谢。
发布于 2014-04-10 11:33:05
CONCURRENCY_LEVEL的值只是传递给make的-j选项。Debian的内核构建过程在这里没有什么特别之处;上游内核源代码多年来一直支持这一点。
https://stackoverflow.com/questions/21001588
复制相似问题