在哪里考虑 cpu 标签

  • 本文关键字:标签 cpu 在哪里 bazel
  • 更新时间 :
  • 英文 :


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

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

TLDR:您可以通过在 BUILD 文件中的规则中添加"cpu:"(例如,"cpu:4"表示四个内核(标签来增加测试的 CPU 预留。如果并行性过多,测试会使系统不堪重负,则可以使用此方法。

这使用户可以指定其测试需要最少的 CPU 内核奔跑,不要片状。预留 4 个 CPU 的示例:

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

远程执行策略也可以使用它来调整其资源调整。


自 2017 年 6 月 21 日起,可以使用以下交替选项:

根规则:设置tagssh_test相同。例:

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

云雀规则:只要你不使用工人,这就可以工作。看。对于 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
    },
)