我为一个小的C++项目安装了distcc和Cmake。我有两台机器:一台是本地编译的客户机,另一台是“远程”编译的服务器。
我已经按照说明安装和配置distcc,但使用以下简单的步骤编译我的项目时,我看不到任何改进:
CXX="distcc g++" cmake my_project && make -j4我已经检查了客户端和服务器机器上的所有内容,没有看到任何特定的行为。所有返回代码在日志中均为0(正常),并且没有错误消息。这就像是一切都在工作,但没有时间的增加。我还安装了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 即使在本地主机上,每个执行的作业的延迟也在200ms左右。
最后,当我使用distcc时,会有一些时间开销,我将其归因于服务器和客户端之间的通信。
有没有人已经遇到了这样的问题,并且知道我应该去哪里看,或者我应该去哪里调查?我真的坚持这一点,并相信distcc应该给我带来额外的性能!
有什么想法吗?请帮助:=)
谢谢
发布于 2014-10-26 20:08:33
您一共有多少核?
请记住,运行make -j4总共将使用4个核心:如果本地计算机上有4个核心,服务器上有4个核心,则必须使用make -j8,否则与仅在本地编译相比没有任何改进。
发布于 2016-03-25 19:27:49
不要忘记设置允许客户机向任何给定服务器发送多少个作业。
Server/x # where server is the ip and x is the # of jobs如果不这样做,则默认为4。
发布于 2014-04-11 23:41:57
分发构建的一个问题是make文件构造得有多好。
如果makefile的构造方式不是真正能够并行运行,那么使用distcc可能不会有太大的不同。
在不将构建分发到另一台计算机的情况下,您是否可以在没有-j选项的情况下使用-j 4进行加速?如果不是这样,您可能不会看到仅仅因为卸载而提高速度,除非您正在将负载卸载到真正快速的机器上,因为它一次可能只卸载一个作业
https://stackoverflow.com/questions/23016893
复制相似问题