Forking

prione

New Member
Hallo,

Ich häng seit längerem an einem Problem, das ich nicht gelöst bekomme. Wenn ich forke - über welche methodik auch immer - bekommt der Prozess vom Server offenbar ein Fixum an RAM zugewiesen, ganz egal, wie RAM intensiv der Prozess nun ist den ich im geforked habe.

Nun wäre meine Frage, wie kann ich das Fixum verstellen?

OS ist Debian Lenny Stable.
 
Wenn ich forke [...] bekommt der Prozess vom Server offenbar ein Fixum an RAM zugewiesen
Was veranlasst dich zu dieser Annahme?
Mit anderen Worten: Bitte poste die beobachtbaren Vorgänge (in Auszügen), die bei der Ausführung deines Programms auftreten.
 
Nun ich verfüge über 1GB RAM auf dem VPS.

Wenn ich nun per Loop ein Script, das erhebliche Prozesse am Server durchführt und per se schon 10KB groß ist, ausführe (und z.B. schlafen lasse um das Script aufrecht zu erhalten) dann kann ich genau 31 Instanzen zeitgleich starten bis der RAM aufgebraucht ist.

Wenn ich nun das gleiche mit einem Script mit grad mal ein Paar Byte lang ist und nichts anderes tut als zu schlafen mache, komme ich auch auf 31 Instanzen.

Sprich unerheblich davon welchen Prozess ich am Server ausführe per Fork, wird immer der gleiche Anteil an RAM belegt (32MB) für jeden Prozess...

Darum ging ich davon aus, daß das wohl irgendwo am Server definiert sein muß, nur ich weiß nicht wo.
 
Danke. Ist aber nicht das Problem, da ich dem memory zusehen kann via top oder htop wie er aufgebraucht wird... und es wir der komplette RAM des Servers herangezogen... was sich mir nur nicht erschließt ist warum ganze 32 MB für jede Instanz und das unabhängig davon welches Script ich auch starte.
 
Ein Script setzt i.d.R. einen Interpreter und eine Laufzeitumgebung voraus, in dem dieses ausgeführt wird. Der dadurch sowieso notwendige Speicherbedarf hat mit der Komplexität deines konkreten Scriptes erstmal wenig zu tun.

Das Kommando pmap (mit der Prozeß-ID als Argument) zeigt die Speichernutzung eines laufenden Prozesses an. Für fremde Prozesse muß man allerdings root sein. Da kann man je nach Programm auch schön die eingebundenen Shared Libraries sehen, die für einen größeren Anteil des verwendeten Speichers verantwortlich sein können, obwohl man die Funktionalität gar nicht benötigt.
 
Welche Virtualisierungsloesung wird verwendet?
Wenn Virtuozzo oder OpenVZ; bitte poste mal deine /proc/user_beancounters
 
Ein Script setzt i.d.R. einen Interpreter und eine Laufzeitumgebung voraus, in dem dieses ausgeführt wird. Der dadurch sowieso notwendige Speicherbedarf hat mit der Komplexität deines konkreten Scriptes erstmal wenig zu tun.
Das stimmt nicht ganz. Python und Perl z.B. unterstützen einen echten Fork. In PHP hingegen kann man dies nur über Umwege mit einem Execute-Befehl "simulieren".

Was ich an dieser Aussage aber wirklich bemängle: Da fehlt die Frage!
Daher hier als Zugabe:

@prione:
Welche Script-Sprache?
Und welche Fork-Methode?


Wobei bereits aus "welche methodik auch immer" der Verdacht auf PHP fällt und damit Cenic's Aussage zutrifft.

huschi.
 
Aus eigener Erfahrung möchte ich sagen, dass PHP als "Shell-Scripting-Sprache" weniger geeignet ist. Mit anderen Sprachen kam ich bei der Daemon-Programmierung erheblich schneller ans Ziel mit besserem Ergebnis, obwohl ich PHP als Programmiersprache für Web-Anwendungen bevorzuge.
 
Back
Top