distcc问题:它真的加快了编译速度吗?

时间:2014-04-11 15:34:30

标签: c++ cmake distcc

我为一个小型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 

即使在本地主机上,每个执行的作业的延迟也大约为200毫秒。

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

有没有人有过distcc这样的问题,知道我应该在哪里看,或者我应该在哪里调查?我真的坚持这一点,并相信distcc应该给我带来额外的表现!

有什么想法吗?请帮助:=)

由于

3 个答案:

答案 0 :(得分:2)

您总共拥有多少个核心?

请注意,运行make -j4将在总计中使用4个核心:如果本地计算机上有4个核心,服务器上有4个核心,则必须使用make -j8或者你在本地编译方面没有任何进步。

答案 1 :(得分:0)

分发构建的一个问题是make文件的构造有多好。

如果你的makefile没有以实际上可以并行运行的方式构建,那么使用distcc可能不会产生很大的不同。

如果不将构建版本分发给另一台机器,那么在没有-j选项的情况下使用-j 4加速吗?  如果没有,你可能不会看到只是从卸载加速,除非你卸载到一台非常快的机器,因为它可能一次只卸载一个作业

答案 2 :(得分:0)

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

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

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