distcc2.16 分布式编译器 rpm
yourfeng/distcc-2.16下包括 distcc和distcc-server两个包
转一篇文章:
http://www.blogbus.com/blogbus/blog/diary.php?diaryid=254940
developerWorks 的 Linux 节有篇文章Reduce compile time with distcc,介绍了distcc,分布式编译工具,这玩意儿不错,在公司企业环境里适当部署的话能产生很好的效益。
distcc是挂在gcc上的小应用,允许编译过程在多台安装了distcc的机器上同时进行--正所谓集合大家的力量,大大加快了构建过程。
下载源码并配置编译后(都是标准过程,不过configure的时候可以加上--with-gtk),distcc daemon (distccd)会出现在/etc/init.d/distccd 下。可以如此启动:sudo /etc/init.d/distccd start,当然,不需要root权限也可以运行这个守护进程的。
只在自己机器上安装distcc没什么意义,在自己所处的局域网内找到用Linux的哥们,让他们也装上distcc--别忘了告诉他们,每个安装了distcc的用户都可以从这个pool中受益;)
要说一句的是,除了gcc的版本要一样这一个要求必须满足外,这些机器不需要共享文件系统,头文件或者库,它们甚至可以运行不同的Linux内核或者发行版,非常灵活。
在多台机器上安装distcc后,要告诉本机的distcc哪些机器可以协同使用,假设庑└呱胁斡胝叩拿?质莊lim,flam和jabberwocky:
export DISTCC_HOSTS="mymachine flim flam jabberwocky"
如果flim和jabberwocky的速度更快,那么可以调整为:
export DISTCC_HOSTS="flim jabberwocky mymachine flam"
相信大家是聪明人,看出不同了吧。
distcc可以监视正在进行的工作(比如正在编译哪些文件),所以可以设置监视更新时间,如果配置distcc时使用了--use-gtk ,那么有distccmon-text 和 distccmon-gnome可选,一个console的,一个是gui的:
distccmon-text 2
2表示更新时间间隔是两秒
都完成了,现在可以试试多台机器为咱服务了,重新配置,编译你的应用:
CC=distcc ./configure
make -j 12
注意configure时的不同,make后面的 -j 12是可选的,数值表示可以同时进行的任务的数量。
在console下观察多机编译情况的一个例子:
5366Preprocessserve.c flim
5338Compile minilzo.c flim
5363Preprocessprefork.c flim
5360Compile ncpus.c jabberwocky
5352Compile dparent.c jabberwocky
5356Compile dsignal.c jabberwocky
5349Compile dopt.c mymachine
5279Compile trace.c mymachine
5375Preprocesssrvnet.c mymachine
5342Compile access.c flam
5346Compile daemon.c flam
5371Preprocesssetuid.c flam
看,4台机器上每台都有0,1,2,4机并行编译,怎一个爽字了得。。。
如果调整为make -j 4,自然就是每台1个任务了。
显然,不是-j数字越大越好,机器的性能,网络负载都必须考虑,根据自己的实际情况设置才好。
其实,按我的想法,公司里完全可以有一台或多台编译服务器,这些机器专职编译,就不用把自己的机器加到distcc的编译机列表里了,让人家那几台快速机器做compiler farm吧哈哈--正好,作者Laurence Bonney的经验也是,把自己慢速的工作站加到列表里反而可能降低编译速度,因为本机本来就要完成委托送出源文件和接受他机编译的目标文件的工作,没有更多的处理器能力好好干分给自己的编译的活了。
最后重复强调的是,gcc版本,至少要保证次版本号一样,如果一台机器是3.3.1,另外一台是3.2.2,那就有可能出现莫名其妙的问题;不过3.3.4和3.3.1这样的配置是没问题的。
SuSE,Gentoo和Debian都可以很方便的安装distcc,FreeBSD版本也有。
脑子里早有个大致如何用Ant,Subversion和distcc,甚至加上bochs,winrunner等工具更新配置管理系统的思路了,可惜偶要走了,不一定有人对我可能提出的意见有反应,sign,那就算了。。。。 建议用来编译 KDE 、 OO 等超大型软件…………
可是偶不是在局域网里啊~~ :-( 分布式计算?
哈哈~
很好的东西嘛 ~ :lol::mrgreen: 100M网卡和1000M网卡对于分布编译影响有多大? hehe,100M网,瓶颈在网络
1000M网,哦瓶颈 在硬盘 瓶颈都在cpu吧 9494,哪能那么快啊?瓶颈还是在CPU。 呵呵,网卡速度不同对编译速度的影响应该比对OPENMOSIX集群运行速度的影响小吧?
页:
[1]