Sehen Sie, wie viel virtueller Speicher einer Prozess-Bash zugewiesen ist - Linux, Bash, Speicher, Ubuntu-12.04, Ulimit

Ich habe ein Skript geschrieben, das virtuell oder"simulierte" Speicher zu einem Prozess, den ich erstellt habe. Was ich wissen möchte, ist, wie kann ich dann auflisten, wie viel Speicher der Prozess hat? Ich möchte es "Prozess hat x mbs" zurückgeben, wenn ich etwas Speicher zugewiesen habe oder "Prozess hat derzeit keinen zugewiesenen Speicher", wenn ich keinen Speicher zugewiesen habe.

Wie kann ich das machen? Ich habe Code-Schnipsel eingefügt, weil es zu lang ist, um hier hinein zu kleben.

  1)
read -p "Enter Memory Value [MB]" p
$script/simulate assignmem oxygen $p
sleep 5
;;

function assign_mem()
{
stop_kill $1
ulimit -m $2
"$script_folder"/"$1">/dev/null&
echo "Process $1 Assigned $2MB Memory"
}

Antworten:

0 für die Antwort № 1

Von der Manpage für ubuntu proc - / proc Dateisystem

 /proc/[number]/maps
A file containing the currently mapped memory regions and  their
access permissions.
The format is:

address           perms offset  dev   inode      pathname
08048000-08056000 r-xp 00000000 03:0c 64593      /usr/sbin/gpm
08056000-08058000 rw-p 0000d000 03:0c 64593      /usr/sbin/gpm
08058000-0805b000 rwxp 00000000 00:00 0
40000000-40013000 r-xp 00000000 03:0c 4165       /lib/ld-2.2.4.so
40013000-40015000 rw-p 00012000 03:0c 4165       /lib/ld-2.2.4.so
4001f000-40135000 r-xp 00000000 03:0c 45494      /lib/libc-2.2.4.so
40135000-4013e000 rw-p 00115000 03:0c 45494      /lib/libc-2.2.4.so
4013e000-40142000 rw-p 00000000 00:00 0
bffff000-c0000000 rwxp 00000000 00:00 0

Allerdings - ulimit wird nicht automatisch zugewiesenvirtueller Speicher für einen Prozess. Es ermöglicht dem Prozess, Dinge zu tun, um Speicher zu erhalten: Erstellen Sie Shared Memory-Segmente, rufen Sie einen von mehreren Systemaufrufen auf, um Speicher zuzuordnen. Ihr Prozess muss dies tun.


0 für die Antwort № 2

Sie können herausfinden, wie viel virtueller Speicher einem Prozess zugewiesen ist ps Befehl:

 ps -ovsize= 9999

Dabei sollte 9999 durch die Prozess-ID ersetzt werden.

Der produzierte Wert wird in KiB sein; Um die tatsächliche Anzahl von Bytes zu erhalten, müssen Sie mit 1024 multiplizieren.

Das = unterdrückt das Drucken einer Kopfzeile, die das Ergebnis zu einer einfachen Zahl macht. Sie können mehr als ein Datenelement angeben, wenn dies sinnvoll ist. Versuchen Sie beispielsweise,

ps -e -opid,vsize,cmd

Es gibt viele andere nützliche Funktionen von ps. man ps für Details.


Unabhängig von der obigen Antwort ist es erwähnenswert, dass sich ändern ulimit -m tut nicht Zuweisen von Speicher (oder virtuellem Speicherraum) zu einem Prozess, und weiterhin geht es um residenten Speicher, nicht um virtuellen Speicher. Du könntest benutzen ulimit -v Um die maximale Menge an Speicherplatz zu begrenzen, die der Prozess anfordern kann, muss der Prozess den Speicherplatz jedoch anfordern, bevor er zugewiesen wird.


Am beliebtesten