dmucs与distcc
之前配置distcc没有考虑负载均衡这一项,现在考虑使用dmucs实现distcc的负载均衡
官方手册
使用官方手册编译会报错,等解决问题后再来总结
=================================================================================
update by 2013-11-08
使用apt安装dmucs
apt-get install dmucs
安装文件:
/.
/usr
/usr/bin
/usr/bin/gethost
/usr/bin/loadavg
/usr/bin/monitor
/usr/bin/remhost
/usr/bin/addhost
/usr/sbin
/usr/sbin/dmucs
/usr/sbin/loadavg
/usr/share
/usr/share/doc
/usr/share/doc/dmucs
/usr/share/doc/dmucs/copyright
/usr/share/doc/dmucs/changelog.Debian.gz
/etc
/etc/default
/etc/default/dmucs
/etc/init.d
/etc/init.d/dmucs
/etc/dmucs.conf
其中用的到的gethost, loadavg, dmucs , 配置文件/etc/default/dmucs && /etc/dmucs.conf
部署结构:
一台机器上启动dmucs进程(host-server),相当于整个体系的大脑,进行后续的任务分配,它可以安装在任意一台机器上,不参与实际的编译过程;
在参与distcc编译的机器上启动loadavg进程,向启动dmucs进程的机器发送本机负载情况;
将要编译的软件包放在安装了distcc和dmucs的某一台机器上,进行编译;
实际的配置:
前提,distcc能够正常运行,能进行分布式编译
dmucs (host-server)的配置:
- 修改/etc/default/dmucs文件,将SERVER=no改为SERVER=yes
- 修改/etc/dmucs.conf文件,其中添加实际参与编译的机器信息,具体格式为:
# Configuration file for dmucs server.
#
# Format: machine number-of-cpus power-indexInnerServer1 2 2
InnerServer2 4 3
InnerServer3 4 3其中第一列为主机地址(或者主机名),第二列为主机拥有的CPU核数(?),第三列为主机性能的权重,最差的机器赋值最小(大于等于1的某个整数),然后性能好的机器赋予更高的权值。
- 启动dmucs,可以以服务方式启动:/etc/init.d/dmucs start , 或者可以直接在命令行输入dumcs,如果在实际参与编译的机器上启动了loadavg,则会看到类似下面的输出:
root@InnerServer1:/home# dmucs
New host available: InnerServer3/4, tier 3, type
New host available: InnerServer1/2, tier 2, type
New host available: InnerServer2/4, tier 3, type
实际参与编译的机器的配置:
- 修改/etc/default/dmucs文件,将USE_SERVER=修改为USE_SERVER=<ip>,ip为(host-server)的地址;
- 启动distcc服务,启动loadavg进程,命令:loadavg -s <ip> -D & , 其中-s 后面指定使用的server,-D代表debug, & 代表后台运行
编译包所在服务器上的配置:
除了按照上面要启动distcc和loadavg,还要做如下配置:
- export DISTCC_HOSTS="<ip1> <ip2> <ip3>...",输出参与实际编译的服务器的地址(这属于distcc 的配置)
- export PATH=/usr/lib/distcc:$APTH,这一步的作用是使用distcc代替gcc,g++等等,因为使用apt-get安装的distcc默认生成目录/usr/lib/distcc,在该目录里面有包括cc/c++/g++/gcc等软链接文件,这些文件全部指向/usr/bin/distcc,也就是说,现在的编译环境全部由distcc提供,因为/usr/lib/distcc目录的文件最先被找到,这一句话可以放在.bashrc文件中,它的作用也等同于其他文档中所说的CC=“distcc gcc” CXX='distcc g++'这一句
- 在configure时执行CC='gethost -s <ip> distcc' CXX='gethost -s <ip> distcc' ./configure,这样在下面make的时候,会先到<ip>所指的server去查询各个机器的性能,然后由该dmucs server统一分配编译任务。注:在其他文档中都没有提到gethost -s <ip>,因为其他以源码包安装的dmucs在安装的时候指定了server,但我是用apt安装,所以在这儿被阻拦了一段时间。 其他文档有按照apt安装的,它所中给出的make -j8 CC=gethost distcc,这条命令肯定无法执行。
- make -j$(distcc -j),如果只用make的话,会看到只有单线程运行,违背了分布式编译的初衷
- 一些工具:distccmon-text 2,显示任务分配,2代表每隔2秒刷新一次,或者watch distccmon-text具有相同的作用。
一些参考:
http://www.ibm.com/developerworks/cn/aix/library/0905_yangyi_distcc/
http://blog.chinaunix.net/uid-28190171-id-3379699.html
dmucs与distcc的更多相关文章
- distcc加速内核编译
Linux内核编译实在是费时间的事,搞内核移植的时候总要编译,生命有一部分就浪费在等内核编译完成上,有心想买个HP的工作站,看了下Z840的价格,想想还是算了.distcc早就听说过,一直没有去试试, ...
- distcc (dcc_execvp) ERROR: failed to exec XX: Permission denied
首先先确保一下是不是能执行下面语句: # sudo -u nobody XX --version 如果能看见版本信息,则可以不用往下看. 再检查一下distccd.service # sudo cat ...
- (转)Android分布式编译学习(一)distcc实现分布式编译 —— Ubuntu12.04上部署distcc分布式编译
转自:http://blog.csdn.net/eqiang8271/article/details/17144411 版权声明:本文为博主原创文章,未经博主允许不得转载. Android代码庞大 ...
- distcc配置
原理图: OS: ubuntu Server 12.04 1.安装 apt-get install distcc 2.配置 将文件/etc/default/distcc修改为如下格式 STARTDIS ...
- cmake工程使用distcc
distcc可以加速编译,但是遇到cmake可能就需要处理下. 问题 distcc在 /usr/lib/distcc 中放了各编译器的soft link(如cc/gcc等等),如果 /usr/lib/ ...
- distcc 的使用
在项目的开发过程中,经常出现多个开发人员集中在某个 linux 内网开发机上统一开发的情况,随着开发人员越来越多.项目编译得越来越频繁,开发机的压力越来越大,所以考虑用代码交叉编译的方式来缓解开发机的 ...
- metasploit--exploit模块信息
Name Disclosure Date Rank Description ---- ...
- Jenkins+Gitlab搭建持续集成(CI)环境
利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...
- ccache高速编译工具
ccache的主页:http://ccache.samba.org distcc的主页:http://distcc.samba.org 1.背景: 在处理一些规模相对较大的工程时,编译花费的时间可能会 ...
随机推荐
- CentOS6.5下安装配置MySQL
CentOS6.5下安装配置MySQL,配置方法如下: 安装mysql数据库:# yum install -y mysql-server mysql mysql-deve 查看mysql-server ...
- js设计模式(11)---命令模式
0.前言 早上好,早晨的时光总是美好的,坐在空调屋里,看着外边的蓝天白云,不停地敲击着键盘,多么美好地享受,也许屌丝就是如此容易满足. 1.什么是命令模式? 用于将一个请求封装为一个对象,从而可用不同 ...
- Linux文件和目录管理常用重要命令
一.目录与路径 1.相对路径与绝对路径 因为我们在Linux系统中,常常要涉及到目录的切换,所以我们必须要了解 "路径" 以及 "相对路径" 与 "绝 ...
- 设置trace SQL
Select PeopleTools, Utilities, Debug, Trace SQL to access the Trace SQL page. You use this page to c ...
- winform中嵌入Ppt、Word、Excel
1.下载DsoFramer_KB311765_x86.exe 2.安装,默认路径安装C:\DsoFramer. 3.注册:开始菜单——>运行 输入:regsvr32 C:\DsoFramer\d ...
- Excel导入数据(97--2003版本)的ExcelHelper
首先确定excel的版本为97~2003版本 其次创建一个帮助类——ExcelHelper //单个sheet public static DataTable AnalysisExcel(string ...
- 线程池(C#)
转自:http://blog.sina.com.cn/s/blog_494305f30100ryw7.html 在这里你可以学到Microsoft研究CLR实现线程池的原理机制,从而更灵活的处理CLR ...
- setTimeOut(),和setInterVal()调用函数加不加括号!!!
直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...
- php网页,想弹出对话框, 消息框 简单代码
php网页,想弹出对话框, 消息框 简单代码 <?php echo "<script language=\"JavaScript\">alert(\&q ...
- 第一章 管理程序流(In .net4.5) 之 实现多线程和异步处理
1. 概述 本章主要讲解.net4.5如何实现多线程和异步处理的相关内容. 2. 主要内容 2.1 理解线程 ① 使用Thread类 public static class Program { ...