2016-04-27 65 views
-1

我正在寻找一种快速和肮脏的方式来分析内存密集型第三方应用程序在减少内存条件下的行为并确定“最小可用空闲内存”阈值。我该如何刻意减少Linux中的空闲内存量?

[email protected]:~$ free 
      total  used  free  shared buffers  cached 
Mem:   993M  879M  113M  1.1M  15M  116M 

[email protected]:~$ hogMem 100 & 
[email protected]:~$ free 
      total  used  free  shared buffers  cached 
Mem:   993M  979M  13M  1.1M  15M  116M 

[email protected]:~$ date; runTheThing; date; 
[email protected]:~$ fg 
[email protected]:~$ ^C 
[email protected]:~$ free 
      total  used  free  shared buffers  cached 
Mem:   993M  879M  113M  1.1M  15M  116M 

在上面,我可以使用什么hogMem

我希望用现有的命令来完成它,而不会陷入复杂的编程问题。谷歌搜索这个问题让我有关如何获得更多可用内存,而不是更少。

更新2016年4月28日:

所以,我发现了一个超级方便的方式来做到这一点,得益于提示通过@Cyrus

[email protected]:~$ sudo mkdir -p /media/temporary_ram_disk 
[email protected]:~$ sudo mount -t tmpfs -o size=2048M tmpfs /media/temporary_ram_disk/ 
[email protected]:~$ sudo chown you:you /media/temporary_ram_disk/ 

[email protected]:~$ cd /media/temporary_ram_disk/ 
[email protected]:/media/temporary_ram_disk$ free -h 
      total  used  free  shared buffers  cached 
Mem:   993M  879M  113M  1.1M  15M  116M 

[email protected]:/media/temporary_ram_disk$ fallocate -l 100M empty_file_100M 
[email protected]:/media/temporary_ram_disk$ ls -l 
total 5120 
-rw-r--r-- 1 you you 5242880 Apr 28 12:05 empty_file_100M 

[email protected]:/media/temporary_ram_disk$ free -h 
      total  used  free  shared buffers  cached 
Mem:   993M  879M  13M  1.1M  15M  116M 

所以hogMem我使用其实是fallocate

+0

您使用哪种发行版本和版本? – Cyrus

+2

您可以尝试http://people.seas.harvard.edu/~apw/stress/ –

+0

@Diego Torres Milano。感谢人们。这些都是非常好的想法。我仍在寻找与之相关的东西。 –

回答

3

也许最好的方法是在内存减少的情况下运行它,看看“内存密集型第三方应用程序如何在内存减少的情况下运行”。在linux上,这很容易通过prlimit完成。

例如,看到date运行其地址空间限制为1,000,000字节如何运行:

$ prlimit -v1000000 date 
Segmentation fault 

要看到它如何与限制为10,000,000字节的地址空间中运行,运行:

$ prlimit -v10000000 date 
Wed Apr 27 12:00:13 PDT 2016 

也可以限制目标程序对许多其他资源的访问。例如,打开文件的最大数量或最大CPU时间也可能受到限制。

prlimit包含在util-linux包中。有关其操作的更多详细信息,请参阅man prlimit