有没有办法限制Bazel使用的CPU核心数量?

Guy*_*der 14 cpu-cores bazel

有没有办法告诉Bazel什么时候可以使用多少CPU内核?

TL; DR

我在VMware Workstation上构建TensorFlow并且作为虚拟机我可以调整虚拟机的处理器和核心数量.

在构建TensorFlow的过程中,我发现只使用一个核心工作.当我给Workstation提供四个内核并构建TensorFlow时,它最终将系统停止到我必须重启的程度.

如果我等了几个小时(不管它一夜之间),它有时会返回以下错误:

gcc:内部编译器错误:已杀死(程序cc1plus)

虽然我可以使用虚拟机配置选项更改内核数量,但我更愿意这样做,而无需关闭并重新启动虚拟机.

Guy*_*der 14

来自Bazel用户手册

--local_resources availableRAM,availableCPU,availableIO

此选项采用三个以逗号分隔的浮点参数,指定Bazel在调度构建和测试活动时可以考虑的本地资源量.Option期望可用RAM的数量(以MB为单位),CPU核心数(1.0表示单个完整核心)和工作站I/O能力(1.0表示平均工作站).默认情况下,Bazel将直接从系统配置中估计RAM的数量和CPU内核的数量,并假定为1.0 I/O资源.

如果使用此选项,Bazel将忽略--ram_utilization_factor.

  • 这确实可以减少使用的资源,但不像我期望的那样.在努力理解之后,我关闭了其他应用程序并使用不同的设置进行测试.看起来Bazel消耗的核心数量大约是我设置的核心数量的两倍,有时会耗费所有内核几秒钟.即使使用`bazel test -c opt --local_resources 20000,1,0.25`,我的系统也会看到很大的负担. (2认同)

man*_*ni0 14

.bazelrc 的一些示例

build --local_ram_resources=HOST_RAM*.5 --local_cpu_resources=HOST_CPUS-1 (leave one core free)
Run Code Online (Sandbox Code Playgroud)

或者

build --local_cpu_resources=1 (use a single core)
Run Code Online (Sandbox Code Playgroud)

https://docs.bazel.build/versions/master/command-line-reference.html#flag--local_cpu_resources

当前接受的答案已弃用。