我怎样才能故意减少linux中的可用内存?

时间:2016-04-27 18:38:04

标签: linux bash memory

我正在寻找一种快速而肮脏的方法来分析内存密集型第三方应用程序在减少内存条件下的行为,并确定最小可行空闲内存"阈值。

you@yours:~$ free
             total       used       free     shared    buffers     cached
Mem:          993M       879M       113M       1.1M        15M       116M

you@yours:~$ hogMem 100 &
you@yours:~$ free
             total       used       free     shared    buffers     cached
Mem:          993M       979M        13M       1.1M        15M       116M

you@yours:~$ date; runTheThing; date;
you@yours:~$ fg
you@yours:~$ ^C
you@yours:~$ free
             total       used       free     shared    buffers     cached
Mem:          993M       879M       113M       1.1M        15M       116M

在上文中,我可以使用hogMem

我希望用现有的命令来完成它,而不会遇到复杂的编程问题。谷歌搜索这个问题让我获得1,000页关于如何获得更多免费内存的页面,而不是更少。

更新2016/04/28:

所以,由于@Cyrus的提示

,我找到了一种非常方便的方法
you@yours:~$ sudo mkdir -p /media/temporary_ram_disk
you@yours:~$ sudo mount -t tmpfs -o size=2048M tmpfs /media/temporary_ram_disk/
you@yours:~$ sudo chown you:you /media/temporary_ram_disk/

you@yours:~$ cd /media/temporary_ram_disk/
you@yours:/media/temporary_ram_disk$ free -h
             total       used       free     shared    buffers     cached
Mem:          993M       879M       113M       1.1M        15M       116M

you@yours:/media/temporary_ram_disk$ fallocate -l 100M empty_file_100M
you@yours:/media/temporary_ram_disk$ ls -l
total 5120
-rw-r--r-- 1 you you 5242880 Apr 28 12:05 empty_file_100M

you@yours:/media/temporary_ram_disk$ free -h
             total       used       free     shared    buffers     cached
Mem:          993M       879M        13M       1.1M        15M       116M

所以我使用的hogMem实际上是fallocate

1 个答案:

答案 0 :(得分: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