我为一个小型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应该给我带来额外的表现!
有什么想法吗?请帮助:=)
由于
答案 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。