考虑了cpu标签的位置

时间:2017-06-13 15:35:10

标签: bazel

https://bazel.googlesource.com/bazel/+show/master/CHANGELOG.md提到,有cpu个标签。当然,现在我的问题是这些标签被考虑在哪里。

1 个答案:

答案 0 :(得分:0)

在此发布提交消息,因为我认为它完美地回答了问题:

TLDR:您可以通过在BUILD文件中为其规则添加“cpu:”(例如,针对四个核的“cpu:4”)标记来增加测试的CPU预留。如果存在太多的并行性,如果测试会压倒您的系统,则可以使用此方法。

这使用户可以指定他们的测试需要最少的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) > \"$@\"",
    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
    },
)