Ich habe Probleme mit Prozessen, bei denen Speicher verloren geht. Sie führen dazu, dass meine Festplatte mit Auslagerungsdateien gefüllt wird /private/var/vm
.
Ich möchte, dass undichte Prozesse vom Betriebssystem auf Sicht getötet werden . Ich bin nicht an einem Dialog interessiert, der nach 20 Minuten angezeigt wird, Anwendungen zum Beenden vorschlägt und nicht einmal die zeigt, die undicht ist.
Ich habe versucht, die rss
und data
-Limits festzulegen, /etc/launchd.conf
aber es schien keine Wirkung zu haben.
Das ist mein /etc/launchd.conf
:
limit data 8589934592 8589934592
limit rss 8589934592 8589934592
Hier ist die launchctl limit
Ausgabe:
% launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data 8589934592 8589934592
stack 8388608 67104768
core 0 unlimited
rss 8589934592 8589934592
memlock unlimited unlimited
maxproc 709 1064
maxfiles 256 unlimited
Das ist mein .zshrc
:
ulimit -t 600
ulimit -d 512000
ulimit -v 1024000
Und die ulimit -a
Ausgabe (in ZSH):
% ulimit -a
-t: cpu time (seconds) 600
-f: file size (blocks) unlimited
-d: data seg size (kbytes) 512000
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kb) 1000
-l: locked-in-memory size (kb) unlimited
-u: processes 709
-n: file descriptors 256
Doch hier ist, was top
mir über den Prozess sagt:
PID COMMAND %CPU TIME #TH #WQ #POR #MRE RPRVT RSHRD RSIZE VPRVT VSIZE PGRP PPID
886 process 30.8 01:16.40 1/1 0 17 332 2259M+ 184K 2072M- 19G+ 38G 882 885
Es scheint nur, dass keine der dokumentierten Methoden zur Speicherbeschränkung tatsächlich funktioniert. Gibt es einen zusätzlichen Mechanismus, den ich möglicherweise übersehen habe?