https://bazel.googlesource.com/bazel/+show/master/CHANGELOG.md提到,有cpu
个标签。当然,现在我的问题是这些标签被考虑在哪里。
答案 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
},
)