Hallo Dennis,
Deshalb überlege ich mir, ob ich das irgendwie optimieren kann. Zuerst habe ich folgendes ausprobiert: Ein PHP Script erstellt, welches nur in einer Endlosschleife sleep(10) verwendet hat, und siehe da - alleine das sind schon 2,9% des RAMs.
Tja, dann kommt der Overhead von PHP. Du könntest Dir ein PHP-Binary kompilieren, das ausschließlich die Extensions enthält, die Du wirklich brauchst, dann wäre der Overhead natürlich geringer. Oder Du könntest die Extensions als Shared Libraries kompilieren (gibt irgend so eine configure-Option bei PHP, unter Gentoo kannst Du, falls Du dev-lang/php als Ebuild verwendest, das USE-Flag »sharedext« setzen), dann würden sie nur einmal geladen werden, auch wenn multiple PHP-Prozesse laufen.
Und dann wäre noch die Frage zu klären, wie viel denn 2,9% tatsächlich sind. Wenn Du 128 MiB RAM hast, dann sind 2,9% 3.71 MiB - was IMHO noch vertretbar wäre. Bei 1 GiB RAM wären es dagegen schon 29,7 MiB - was dann doch etwas viel wäre.
Also scheint PHP soviel Overhead mitzubringen. Kann ich das irgendwie optimieren, indem ich einen Kern-PHP-Prozess mache, der sich dann dreimal forked? Wie auch immer? Oder bringt das nichts/kann das nichts bringen?
Wenn Du das PHP-Script dreimal fork()st, dann ist das von der Speicherbelastung her genauso, als ob Du drei separate Prozesse starten würdest. Bei fork() wird der komplette Speicher des Prozesses einfach kopiert (naja, genaugenommen wird er das aus Performancegründen erst beim erste Schreibzugriff des Kindprozesses auf den Speicher, sog. »copy-on-write«, aber da Du ja den Prozess nicht sofort mit exec() überschreibst nach dem fork(), wird der Speicher bei Dir auf jeden Fall kopiert werden).
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup