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 日起,可以使用以下交替选项:
根规则:设置tags
与sh_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
},
)