QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1040|回复: 7

distcc2.16 分布式编译器 rpm

[复制链接]
发表于 2004-7-28 16:35:20 | 显示全部楼层 |阅读模式
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下观察多机编译情况的一个例子:
          5366  Preprocess  serve.c                       flim[0]
          5338  Compile     minilzo.c                     flim[1]
          5363  Preprocess  prefork.c                     flim[2]
          5360  Compile     ncpus.c                jabberwocky[0]
          5352  Compile     dparent.c              jabberwocky[1]
          5356  Compile     dsignal.c              jabberwocky[2]
          5349  Compile     dopt.c                   mymachine[0]
          5279  Compile     trace.c                  mymachine[1]
          5375  Preprocess  srvnet.c                 mymachine[2]
          5342  Compile     access.c                      flam[0]
          5346  Compile     daemon.c                      flam[1]
          5371  Preprocess  setuid.c                      flam[2]

        看,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,那就算了。。。。
发表于 2004-7-28 16:51:41 | 显示全部楼层
建议用来编译 KDE 、 OO 等超大型软件…………
可是偶不是在局域网里啊~~ :-(
回复

使用道具 举报

发表于 2004-7-28 18:32:57 | 显示全部楼层
分布式计算?

哈哈~

很好的东西嘛 ~   
回复

使用道具 举报

发表于 2004-7-28 19:13:50 | 显示全部楼层
100M网卡和1000M网卡对于分布编译影响有多大?
回复

使用道具 举报

 楼主| 发表于 2004-7-28 19:19:22 | 显示全部楼层
hehe,100M网,瓶颈在网络
1000M网,哦瓶颈 在硬盘
回复

使用道具 举报

发表于 2004-7-29 18:12:31 | 显示全部楼层
瓶颈都在cpu吧
回复

使用道具 举报

发表于 2004-7-29 21:19:27 | 显示全部楼层
9494,哪能那么快啊?瓶颈还是在CPU。
回复

使用道具 举报

发表于 2004-7-31 12:35:08 | 显示全部楼层
呵呵,网卡速度不同对编译速度的影响应该比对OPENMOSIX集群运行速度的影响小吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 09:51 , Processed in 0.044236 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表