linux - 如何故意将 Linux 中的可用内存减少给定量?

标签 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的提示,我找到了一个 super 方便的方法来做到这一点

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 !

最佳答案

了解“内存密集型第三方应用程序在内存减少的情况下如何表现”的最佳方法可能是在内存减少的情况下运行它。在 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

关于linux - 如何故意将 Linux 中的可用内存减少给定量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36898226/

相关文章:

linux - 如何获取程序的内存消耗峰值?

python - 没有名为 _testcapi 的模块

c++ - 如何使用不同的指针算术语义

python - 如何在 python 中对 Linux 上具有多个分隔符的行使用 split 和 strip

bash - 为什么仅在其中一种情况下,别名内的变量扩展有效 "as intended"?

用于生成 Google Font css PostCSS 工件的 Bash 脚本?

linux - 从 lsof(Linux 命令行)中提取字段/属性

c - 初级内存分配

linux - 遍历文件,搜索 nan 的

linux - Basic auth + suexec 以 linux 用户身份验证