如何限制缓存内存ubuntu?

时间:2013-08-09 12:19:48

标签: c++ linux ubuntu

我编写了一个C ++代码,我必须在许多低配置计算机上运行。现在,我的电脑配置非常高。我正在使用Ubuntu 10.04&我对某些资源设置了硬性限制,即对内存和放大器的限制。虚拟内存。现在我的问题是:

1)如何设置缓存大小和缓存行大小的限制? 2)我应该检查我的代码的其他限制是否可以?

我正在使用命令:

ulimit -H -m 1000000
ulimit -H -v 500000

2 个答案:

答案 0 :(得分:3)

您不能限制缓存大小,这是一个(主要是透明的)硬件功能。

好消息是,这应该不重要,因为你不能用完缓存 - 只是溢出而你的程序运行得更慢。

如果您的担忧是避免泄漏,您可以调查valgrind --tool=cachegrind - 可以检查目标硬件缓存上的可能行为。

答案 1 :(得分:1)

要正确模拟在低端计算机上运行(尽管没有低缓存限制),您可以在虚拟机而不是计算机的真实硬件中运行代码。这将显示在内存较少的计算机上发生的情况远远超过使用ulimit进行限制的情况,因为ulimit只会限制您的应用程序将获得的内容。因此,它表明在运行一组特定的测试时,您的应用程序不会耗尽内存。但是,当首先没有大量内存时,它没有显示应用程序和系统如何一起运行。

具有低物理内存量的机器在例如交换行为和文件系统缓存方面的行为会有很大不同,只是提到“大内存,但应用程序有限”与“首先是小记忆“。

我不确定Ubuntu是否带有任何虚拟机设置,但是例如VirtualBox很容易在任何Linux / Windows机器上进行配置和设置。只要您拥有足够现代的处理器来运行硬件虚拟化指令。

由于无用,完全无用,缓存内存不会“耗尽”或以任何其他方式导致失败。它运行速度会慢一些,但速度不是很大(对于任何给定的操作来说都是大约10倍,但在大多数情况下这将是大量其他指令的平均值,除非你真的在努力证明缓存有多重要,比如非常大的矩阵乘法)。

一个提示也可能是寻找一些旧硬件。通常有几年销售的计算机,在“电脑回收店”或类似的地方几乎没有。设置这样的系统,安装您选择的操作系统,看看会发生什么。

相关问题