转载:

make -j4是什么意思
看书上说
1) make(1)只衍生一个作业//作业是什么意思?make(1) 是不是就是make的意思?
2) 在双处理器上make -j4,难道是让每个处理器跑两个作业?那和make -j2效率相比 难道不是一样的?

新手提问 多多关照

------解决方案--------------------
make(1)表示在unix手册(man)的第一章,可以用 man 1 make 来查看。

两个处理器的话,一般 -j2 能达到最高效率。
不过也有些进程会花时间在IO上,并不能利用完单个cpu的时间。这样 -j4 可以更快。 
------解决方案--------------------
jobs=4
同时最多跑4个作业
make自己会协调,如果CPU等资源不够可能小于4个。不过一般瓶颈都在硬盘,所以一般能看到4个进程一起跑。 
------解决方案--------------------
启用4个cpu去编译。提高编译速度。 
------解决方案--------------------

感觉指的是逻辑线程数,和CPU无关,逻辑线程具体跑在哪个逻辑CPU上应该是由内核决定的。make说白了也只是个程序而已。

========================================

make(gmake,gnumake)的-j参数,优化多核、多线程的编译过程

一直以为,现在主流的程序,比如apache2.2,编译过程自动会对多核优化 结果发现不是这样的

测试环境:默认./configure无参数后的apache2.2.14源码根目录

测试方法:使用以下命令,粗略记录编译过程时间。 $ date >> /qshen/time && make && date >> /qshen/time

对比与加了-j参数的make的编译时间

查阅资料,网上很多人用双路INTEL XEON E5404测试时使用参数-j16,使用单路E5405测试使用参数-j8。这个不太理解。因为E5405是四核心,每核心1线程,不知为何要使用二倍的jobs。在此也实际测试

我的测试环境CPU是INTEL XEON E5405,单路。8G内存。 首先,不带-j的命令执行2次

然后,使用-j4执行二次

再然后,使用-j8执行二次

最后使用-j16执行一次作为参考数据

结果:共计执行

$ cat /qshen/time Mon Feb 1 12:51:17 CST 2010 Mon Feb 1 12:52:55 CST 2010
Mon Feb 1 12:53:29 CST 2010 Mon Feb 1 12:55:07 CST 2010
Mon Feb 1 12:55:34 CST 2010 Mon Feb 1 12:56:14 CST 2010
Mon Feb 1 12:56:37 CST 2010 Mon Feb 1 12:57:16 CST 2010
Mon Feb 1 12:57:38 CST 2010 Mon Feb 1 12:58:16 CST 2010
Mon Feb 1 12:58:36 CST 2010 Mon Feb 1 12:59:13 CST 2010
Mon Feb 1 12:59:48 CST 2010 Mon Feb 1 13:00:26 CST 2010 结果发现,确实默认的make不加-j参数效率比较低。加上-j参数,-j4和-j8性能差距不大,-j16性能就比较差了。准备进一步翻阅资料看看到底应该取值多少。

最新文章

  1. 【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】
  2. 用scikit-learn学习K-Means聚类
  3. jquery事件核心源码分析
  4. AC日记——苹果树 codevs 1228
  5. WIN10 新建ORACLE实例
  6. 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
  7. eCos驱动分析 之 ISR是如何与硬件中断联系起来的?
  8. hdoj 1898 Sempr == The Best Problem Solver?
  9. 聊聊 iOS 中的网络加密
  10. Linux服务器的远程IP限制
  11. Spring之AOP一
  12. nginx 配置 rewrite 跳转
  13. linux磁盘空间满?
  14. 原生js标识当前导航位置(给当前导航一个className=active)
  15. 自动化测试 selenium 环境搭建
  16. sql server误删数据恢复delete(低效版)
  17. 11: python中的轻量级定时任务调度库:schedule
  18. Sorting Algorithms
  19. 回文树&后缀自动机&后缀数组
  20. POJ 2696

热门文章

  1. yii框架学习(安装)
  2. 『ZJOI2019 D2T2』语言
  3. Python GDAL
  4. canvas基础知识点(一)
  5. scrapy_redis的使用
  6. C++之多继承与虚继承
  7. ActiveXObject常用方法
  8. ElementTree 无法处理中文
  9. Java计算器的图形界面应用程序
  10. linux 基础 配置静态IP