cpu 标记在哪里被考虑在内
Where are cpu tags taken into account
https://bazel.googlesource.com/bazel/+show/master/CHANGELOG.md 提到,有 cpu
标签。当然,现在我的问题是这些标签还被考虑到了什么地方。
在这里发布提交消息,因为我认为它完美地回答了问题:
TLDR:您可以通过在 BUILD 文件中的规则中添加 "cpu:"(例如 "cpu:4" 用于四核)标记来增加测试的 CPU 预留。如果并行性过多,测试会使您的系统不堪重负,则可以使用此方法。
这让用户可以指定他们的测试至少需要 CPU 个内核
到 运行 而不是片状。预订 4 CPUs 的示例:
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"],
)
Skylark 规则:只要您不使用 Workers,这就可以工作。 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
},
)
https://bazel.googlesource.com/bazel/+show/master/CHANGELOG.md 提到,有 cpu
标签。当然,现在我的问题是这些标签还被考虑到了什么地方。
在这里发布提交消息,因为我认为它完美地回答了问题:
TLDR:您可以通过在 BUILD 文件中的规则中添加 "cpu:"(例如 "cpu:4" 用于四核)标记来增加测试的 CPU 预留。如果并行性过多,测试会使您的系统不堪重负,则可以使用此方法。
这让用户可以指定他们的测试至少需要 CPU 个内核 到 运行 而不是片状。预订 4 CPUs 的示例:
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"],
)
Skylark 规则:只要您不使用 Workers,这就可以工作。 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
},
)