4

我为一个小型 C++ 项目安装了 distcc 和 Cmake。我有两台机器:所以有一台在本地完成编译的客户端和一台在“远程”完成编译的服务器。

我已按照说明安装和配置 distcc,但使用以下简单步骤编译项目时没有发现任何改进:

CXX="distcc g++" cmake my_project && make -j4

我检查了客户端和服务器机器上的所有内容,并没有看到任何特殊行为。日志中的所有返回代码均为 0(OK),并且没有错误消息。这就像一切都在工作,但没有时间增益。我还安装了 distccmon-gui 工具并检查了两台机器在编译期间是否都在使用。

最后我确实用4台机器试了一下,得到了同样的结果,也就是0提升。

唯一看起来很奇怪的是通信时间:

COMPILE_OK exit:0 sig:0 core:0 ret:0 time:151ms 
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:156ms 
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:182ms 
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:201ms 
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:163ms 
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:202ms 

即使在 localhost 机器上,每个执行的作业的延迟也约为 200 毫秒。

最后,当我使用 distcc 时会有一点时间开销,我将其归因于服务器和客户端之间的通信。

有没有人已经对 distcc 有过这样的问题并且知道我应该去哪里看,或者我应该去哪里调查?我真的坚持这一点,并相信 distcc 应该给我带来额外的性能!

有任何想法吗 ?请帮助:=)

谢谢

4

3 回答 3

3

你总共有多少个核心?

请记住,运行make -j4总共使用 4 个内核:如果本地计算机上有 4 个内核,服务器上有 4 个内核,则必须使用,make -j8否则与仅在本地编译相比没有任何改进。

于 2014-10-26T12:08:32.953 回答
2

不要忘记设置允许客户端向任何给定服务器发送多少作业。

Server/x # where server is the ip and x is the # of jobs

如果您不这样做,则默认为 4。

于 2016-03-25T11:27:48.503 回答
0

分发构建的一个问题是生成文件的构建程度如何。

如果您的 makefile 不是以实际上可以并行运行的方式构建的,那么使用 distcc 可能不会有太大的不同。

在不将构建分发到另一台机器的情况下,使用 -j 4 是否比没有 -j 选项更快?如果没有,您可能不会看到仅从卸载中加快速度,除非您正在卸载到一台非常快的机器,因为它可能一次只卸载一个作业

于 2014-04-11T15:41:56.920 回答