gpt4 book ai didi

makefile - GNU make : should the number of jobs equal the number of CPU cores in a system?

转载 作者:行者123 更新时间:2023-12-03 05:13:26 25 4
gpt4 key购买 nike

关于 GNU make 中的作业数量是否应该等于核心数量,或者是否可以通过添加一个可以在其他作业排队时排队的额外作业来优化构建时间,似乎存在一些争议“工作”。

在四核系统上使用-j4-j5哪个更好?

您是否见过(或做过)任何支持其中之一的基准测试?

最佳答案

我在我的 4 核超线程笔记本电脑上运行了我的家庭项目并记录了结果。这是一个需要大量编译器的项目,但最后包含 17.7 秒的单元测试。编译并不是非常 IO 密集型;有很多可用内存,如果没有,其余的都在快速 SSD 上。

1 job        real   2m27.929s    user   2m11.352s    sys    0m11.964s    
2 jobs real 1m22.901s user 2m13.800s sys 0m9.532s
3 jobs real 1m6.434s user 2m29.024s sys 0m10.532s
4 jobs real 0m59.847s user 2m50.336s sys 0m12.656s
5 jobs real 0m58.657s user 3m24.384s sys 0m14.112s
6 jobs real 0m57.100s user 3m51.776s sys 0m16.128s
7 jobs real 0m56.304s user 4m15.500s sys 0m16.992s
8 jobs real 0m53.513s user 4m38.456s sys 0m17.724s
9 jobs real 0m53.371s user 4m37.344s sys 0m17.676s
10 jobs real 0m53.350s user 4m37.384s sys 0m17.752s
11 jobs real 0m53.834s user 4m43.644s sys 0m18.568s
12 jobs real 0m52.187s user 4m32.400s sys 0m17.476s
13 jobs real 0m53.834s user 4m40.900s sys 0m17.660s
14 jobs real 0m53.901s user 4m37.076s sys 0m17.408s
15 jobs real 0m55.975s user 4m43.588s sys 0m18.504s
16 jobs real 0m53.764s user 4m40.856s sys 0m18.244s
inf jobs real 0m51.812s user 4m21.200s sys 0m16.812s

基本结果:

  • 扩展到核心数量可以近乎线性地提高性能。实际时间从 2.5 分钟下降到 1.0 分钟(快了 2.5 倍),但编译所需的时间从 2.11 分钟上升到 2.50 分钟。系统几乎没有注意到这个位有任何额外的负载。
  • 从核心计数扩展到线程计数极大地增加了用户负载,从 2.50 分钟增加到 4.38 分钟。这种接近加倍的情况很可能是因为其他编译器实例想要同时使用相同的 CPU 资源。系统的请求和任务切换负载增加,导致其使用时间达到 17.7 秒。编译时间为 53.5 秒,优势约为 6.5 秒,加速了 12%。
  • 从线程数扩展到双线程数并没有显着加快速度。 12 点和 15 点的时间很可能是统计异常,您可以忽略。所花费的总时间略有增加,系统时间也是如此。两者都很有可能是由于任务切换增加所致。这样做没有任何好处。

我现在的猜测是:如果您在计算机上执行其他操作,请使用核心数。如果不这样做,请使用线程数。超过它没有任何好处。在某些时候,它们会受到内存限制并因此崩溃,从而使编译速度变慢。 “inf”行是在很晚的时候添加的,让我怀疑 8 个以上的作业存在一些热节流。这确实表明对于这个项目大小,没有有效的内存或吞吐量限制。不过,这是一个小项目,需要 8GB 内存进行编译。

关于makefile - GNU make : should the number of jobs equal the number of CPU cores in a system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com