2017-06-13 41 views

回答

0

发布,因为我认为它回答了完美的问题在这里提交信息:

TLDR:(例如:“CPU:4”的四个核心):您可以通过添加一个“CPU”增加CPU预留测试在BUILD文件中标记其规则。如果测试否则会压倒你的系统,如果有太多的并行性,就可以使用它。

这让用户指定他们的测试需要最少的CPU内核 运行,而不是片状。实施例为4个CPU的预约:

sh_test(
    name = "test", 
    size = "large", 
    srcs = ["test.sh"], 
    tags = ["cpu:4"], 
) 

这也可以通过远程执行策略来调整他们的 资源调整使用。


由于2017年6月21日以下交替选项是可能的:

genrule:设置tags相同sh_test。 例子:

genrule(
    name = "foo", 
    srcs = [], 
    outs = ["foo.h"], 
    cmd = "./$(location create_foo.pl) > \"[email protected]\"", 
    tools = ["create_foo.pl"], 
    tags = ["cpu:4"], 
) 

云雀规则只要您不要使用该工人可以工作。 See 对于Skylark规则cpu可以手动设置为任何单独创建的操作。这通过设置execution_requirements来完成。 实施例:

ctx.action(
    execution_requirements = { 
     "cpu:4": "", # This is no mistake - you really encode the value in the dict key and an empty string in dict value 
    }, 
) 
+0

好的。我希望现在可以将此添加到任何操作中。例如。我有一个行动,我知道使用三个线程的进程。因此,我可以真正使用这个超越单纯的测试/规则。 – abergmeier

+0

所以它看起来这些标签也应该与genrules和云雀自定义规则一起工作。如果他们不这样做,那么这是一个值得报告的bug :) – mhlopko

+0

那么语义是如此,那么cpu预留会被添加到该规则的所有操作中? – abergmeier