并行make¶
我在为 SUSE 12环境编译glusterfs 11 做 在SuSE 12 SP5中升级gcc ,发现一个麻烦的事情,编译 GCC 实在太耗时了。同事提醒可以修改configure参数,增加多核并行。
我想起来当时编译时确实发现只有一个 cc1plus
进程运行,完全浪费了多cpu core的高性能服务器资源。当时因为只处理一台编译,也就没有再尝试优化。
没有启用 -j XX
参数 升级CentOS 7 GCC 耗时:
real 283m7.795s
user 270m45.706s
sys 11m37.685s
由于服务器有128个cpu core( Hygon C86 7291 32-core Processor
AMD Zen微架构 ),所以执行以下命令配置 make
并行度 96
(保留了部分cpu core):
alias make="/usr/bin/make -j 96"
使用 -j 96
:
real 30m0.101s
user 351m19.893s
sys 11m25.813s
备注
使用 -j
参数并发在多处理器服务器上运行编译,可以看到 real
时间远小于 system
和 user
累加的时间。这是因为 system
和 user
消耗时间是在多个处理器上累加起来的,多个并发实际完成时间大大缩短 ( real
时间 )。详见 time
异常排查¶
我在生产环境启用了并行make,遇到一个困难 并行make触发OOM排查