16

我在具有 4 GB RAM 的计算机上使用 bazel(编译 tensorflow 项目)。然而,Bazel 没有考虑到我拥有的内存量,并且产生了太多的作业,导致我的机器交换并导致更长的构建时间。

我已经尝试通过我的以下几行设置ram_utilization_factor 标志~/.bazelrc

build --ram_utilization_factor 30
test --ram_utilization_factor 30

但这并没有帮助。无论如何要如何理解这些因素?我应该随机尝试其他一些吗?

4

4 回答 4

19

其他一些可能有帮助的标志:

  • --host_jvm_args可用于设置 JVM 应使用的内存量,方法是设置-Xms和/或-Xmx,例如bazel --host_jvm_args=-Xmx4g --host_jvm_args=-Xms512m build //foo:bar( docs )。
  • --local_resources--ram_utilization_factor标志(docs)一起使用。
  • --jobs=10(或其他一些较低的数字,默认为 200),例如bazel build --jobs=2 //foo:bardocs)。

请注意,这--host_jvm_args是一个启动选项,因此它位于命令 ( )之前,并且是一个“正常”构建选项,因此它位于命令之后。build--jobs

于 2015-12-21T15:31:44.097 回答
4

对我来说,--jobs@kristina 回答的论点有效:

bazel build --jobs=1 tensorflow:libtensorflow_all.so

注意: --jobs=1必须跟在后面,不能在前面build,否则 bazel 将无法识别。如果您要键入bazel --jobs=1 build tensorflow:libtensorflow_all.so,您将收到以下错误消息:

未知的 Bazel 启动选项:'--jobs=1'。
于 2016-08-22T05:35:39.090 回答
3

只是想支持@sashoalm 的评论,即--jobs=1标志是使 bazel build 最终起作用的原因。

作为参考,我在 Lubuntu 17.04 上运行 bazel,作为 VirtualBox 来宾运行,具有大约 1.5 GB RAM 和两个 Intel i3 内核(我正在运行 Thinkpad T460)。我正在关注 TensorFlow 上的 O'Reilly 教程(https://www.oreilly.com/learning/dive-into-tensorflow-with-linux),但在以下步骤中遇到了麻烦:

$ bazel build tensorflow/examples/label_image:label_image

改变这个就可以bazel build --jobs=1 tensorflow/...了。

于 2017-06-11T09:16:40.717 回答
0

我在我的 k8s 集群中遇到了很多 bazel 构建失败的不稳定问题。

此外--jobs=1,试试这个: https: //docs.bazel.build/versions/master/command-line-reference.html#flag--local_resources--local_resources=4096,2.0,1.0

于 2020-01-09T07:17:35.560 回答