2016-04-27 4 views
-1

Ich bin auf der Suche nach einem schnellen und schmutzigen Weg, um zu analysieren, wie sich eine speicherintensive Drittanbieteranwendung unter reduzierten Speicherbedingungen verhält und einen Schwellenwert für "minimalen lebensfähigen freien Speicher" festlegt.Wie kann ich den freien Speicher in Linux absichtlich um einen bestimmten Betrag reduzieren?

[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 

In den oben genannten, was könnte ich für hogMem verwenden?

Ich hoffe, es mit vorhandenen Befehlen zu tun, ohne in ein kompliziertes Programmierproblem zu geraten. Das Googeln dieses Problems bringt mir 1000 Seiten dazu, wie man mehr freien Speicher bekommt, nicht weniger.

-Update 2016.04.28:

So fand ich einen super bequem Weg, dies zu tun, dank der Hinweis von @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 

So ist die hogMem Ich verwende ist in der Tat fallocate!

+0

Welche Distribution und welche Version verwenden Sie? – Cyrus

+2

Sie können versuchen http://people.seas.harvard.edu/~apw/stress/ –

+0

@Diego Torres Milano. Danke Leute. Das sind alles wirklich großartige Ideen. Ich schaue immer noch, was ich mitnehmen soll. –

Antwort

3

Die beste Möglichkeit, um zu sehen, "wie sich eine speicherintensive Drittanbieteranwendung unter reduzierten Speicherbedingungen verhält", besteht darin, sie unter reduzierten Speicherbedingungen auszuführen. Unter Linux ist dies problemlos mit prlimit möglich.

zum Beispiel zu sehen, wie date läuft mit seinem Adressraum auf 1.000.000 Byte begrenzt, laufen:

$ prlimit -v1000000 date 
Segmentation fault 

zu sehen, wie es mit seinem Adressraum auf 10.000.000 Bytes beschränkt läuft, laufen:

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

Es ist auch möglich, den Zugriff des Zielprogramms auf viele andere Ressourcen zu beschränken. Zum Beispiel kann die maximale Anzahl von geöffneten Dateien oder die maximale CPU-Zeit ebenfalls begrenzt werden.

prlimit ist im Paket util-linux enthalten. Weitere Informationen zu seiner Funktionsweise finden Sie unter man prlimit.

Verwandte Themen