代码之家  ›  专栏  ›  技术社区  ›  Mr Fooz

针对Linux的免费安全分布式make系统[关闭]

  •  7
  • Mr Fooz  · 技术社区  · 16 年前

    对于Linux,有没有什么好的语言不可知的分布式make系统是安全和免费的?

    背景信息:

    我运行的科学实验(计算机科学实验)有时有很大的依赖树,偶尔有数千或数万个树节点的顺序。此依赖树位于数据文件、数据处理可执行文件和结果文件之上。

    多年来,我一直在尝试各种技术,包括:

    1. 使用数据库滚动我自己的依赖关系跟踪器,并在每个工作机上运行脚本。这可能会有点麻烦,尤其是在尝试使用非脚本语言时。
    2. 将所有处理命令放在单个makefile中,使用可以在不同的工作机上手动“构建”的伪目标。这不需要特殊的工具,但是手动将工作分解成大小均匀的伪目标块并正确地调用每个工作者框上的“make”可能会很痛苦。
    3. distmake :自动分发单个makefile中的命令执行…

    我基本上在找一些类似distmake的东西,但更安全。据我所知,distmake实际上为每个工作节点留下了一个敞开的后门。

    如果一个替代品比distmake更坚固,那就更好了。如果中断了主distmake调用,它可以关闭后门服务器,但不能正确地终止工作节点上的执行进程。


    澄清:

    我使用makefile处理数据,而不是编译和链接GCC。根据我在文档中读到的内容,distcc是用于分发gcc的专用工具。我将在托管在共享文件系统上的非常大的数据文件上运行自己的可执行文件,而不是在源文件上运行gcc,因此distcc没有帮助。

    工作节点是外部可见的机器,因此我希望任何工作守护进程至少与ssh一样安全。据我所知,distmake工作进程在不读取源代码的情况下打开了一个端口,并将接受任何附加到该端口的人发出的命令。它们将以启动守护程序的用户的身份执行命令。

    6 回复  |  直到 13 年前
        1
  •  2
  •   James Cape    15 年前

    也有 distcc ,它声称能够通过ssh操作(除非distmake非常奇怪,否则您应该能够限制对本地主机的访问并构建ssh隧道以运行构建),并且 icecream .

    更新: 因为目标不是分布式编译,而是恰好使用的分布式计算 make 作为引导程序,使用为分布式计算而设计的工具(如 BOINC . 下面的评论指出 condor 作为选定的平台。

        2
  •  3
  •   James Thompson    15 年前

    依赖性很难管理,而且我不知道任何完美的系统在没有大量工作的情况下做你想要的事情。

    我最近使用的是以下设置: -管理集群中机器的秃鹰队列 -CondorDagman元调度程序提交相互依赖的作业。Dagman是有向无环图管理器的缩写,其中有向无环图用于表示作业之间的依赖关系。

    我们已经在实验室为一个迭代的科学协议成功地完成了这项工作,而且它工作得很好,尽管对于一个非常有天赋的博士后来说,它是一个学习经验,可以使最初的实现运行起来。它确实要求您设置和运行一个Condor集群,这是非常重要的,但是我假设您有Condor或者类似的东西来管理您的所有机器。它可能是太阳网格引擎有类似的东西,我不知道。

        3
  •  1
  •   Ketil    13 年前

    虽然透明地与“make”集成可能会很复杂,但GNU Parallel似乎提供了一个方便的选项,可以在服务器之间分发命令。

        4
  •  0
  •   Tim Post Samir J M Araujo    16 年前

    如果您对依赖性(即make-jxx在本地运行良好)很勤奋,那么distcc可能就是您想要的。它非常容易使用,并与几个流行的CC缓存愉快地工作。同样,正确的依赖性是关键,尤其是在使用缓存帮助加快重建过程时。

    如果使用gcc在makefile本身中生成超出模块依赖范围的依赖项,那么您可能会喜欢distcc。我在一个小型农场上使用它,取得了巨大的成功。但是我的设置/树远没有你描述的那么复杂。

        5
  •  0
  •   Norman Ramsey    16 年前

    你可以用 AT&T nmake coshell 程序。我不知道如何评估安全性,但是格伦·福勒的团队中充满了伟大的工程师,他们做了很多非常好的工作。我会用我的源代码相信他们:-)他们最著名的工具可能是 graphviz .

        6
  •  0
  •   Erik    13 年前

    MakeFlow似乎也是一个很好的解决方案: http://www.cse.nd.edu/~ccl/software/makeflow/

    推荐文章