2016-04-27 68 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