我在4 GB RAM的计算机上使用bazel(编译tensorflow项目)。但是,Bazel没有考虑我的内存量,并且产生了太多的工作,导致我的机器交换并导致更长的构建时间。
我已尝试通过~/.bazelrc
build --ram_utilization_factor 30
test --ram_utilization_factor 30
但这没有帮助。这些因素如何被理解?我应该随便试一下其他人吗?
答案 0 :(得分:16)
其他一些可能有用的标志:
public class Node
{
public string Group { get; set; }
public int SequenceNumber { get; set; }
public override string ToString()
{
return string.Format("This is the Node.ToString() method!");
}
}
[TestMethod]
public void Test()
{
var unsortedNodes = new List<Node>()
{
new Node { Group = "A", SequenceNumber = 1 },
new Node { Group = "A", SequenceNumber = 2 },
new Node { Group = "A", SequenceNumber = 3 },
new Node { Group = "B", SequenceNumber = 11 },
new Node { Group = "B", SequenceNumber = 12 },
new Node { Group = "C", SequenceNumber = 20 },
};
var query = unsortedNodes.OrderBy(n => n.Group).GroupBy(n => n.Group).SelectMany(g => g.OrderBy(n => n.SequenceNumber));
var _nodes = query.ToList();
Assert.IsTrue(_nodes.ToList().All(n => n.ToString() == "This is the Node.ToString() method!"));
}
可用于通过设置--host_jvm_args
和/或-Xms
来设置JVM应使用的内存量,例如-Xmx
(docs) bazel --host_jvm_args=-Xmx4g --host_jvm_args=-Xms512m build //foo:bar
与--local_resources
标志(docs)一起使用。--ram_utilization_factor
(或其他一些低号,默认为200),例如--jobs=10
(docs)。请注意,bazel build --jobs=2 //foo:bar
是一个启动选项,所以它之前命令(--host_jvm_args
)和build
是“正常的“构建选项,以便命令后
答案 1 :(得分:2)
对我来说,来自@ kristina的答案的--jobs
论证有效:
bazel build --jobs=1 tensorflow:libtensorflow_all.so
注意: --jobs=1
必须遵循,而不是build
之前,否则bazel将无法识别它。如果您要键入bazel --jobs=1 build tensorflow:libtensorflow_all.so
,则会收到以下错误消息:
Unknown Bazel startup option: '--jobs=1'.
答案 2 :(得分:1)
只想在@ sashoalm的评论中说--jobs=1
标志是让bazel构建最终起作用的原因。
作为参考,我在Lubuntu 17.04上运行bazel,作为VirtualBox客户端运行,具有大约1.5 GB RAM和两个Intel i3核心(我运行Thinkpad T460)。我正在关注TensorFlow(https://www.oreilly.com/learning/dive-into-tensorflow-with-linux)上的O&#39; Reilly教程,并在以下步骤遇到麻烦:
$ bazel build tensorflow/examples/label_image:label_image
将此更改为bazel build --jobs=1 tensorflow/...
就可以了。
答案 3 :(得分: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