2017-06-13 40 views

回答

0

發佈,因爲我認爲它回答了完美的問題在這裏提交信息:

TLDR:(例如:「CPU:4」的四個核心):您可以通過添加一個「CPU」增加CPU預留測試在BUILD文件中標記其規則。如果測試否則會壓倒你的系統,如果有太多的並行性,就可以使用它。

這讓用戶指定他們的測試需要最少的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) > \"[email protected]\"", 
    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 
    }, 
) 
+0

好的。我希望現在可以將此添加到任何操作中。例如。我有一個行動,我知道使用三個線程的進程。因此,我可以真正使用這個超越單純的測試/規則。 – abergmeier

+0

所以它看起來這些標籤也應該與genrules和雲雀自定義規則一起工作。如果他們不這樣做,那麼這是一個值得報告的bug :) – mhlopko

+0

那麼語義是如此,那麼cpu預留會被添加到該規則的所有操作中? – abergmeier