PHP 7.2 mit OPcache Support (experimentell)

IP-Symcon 5.0 enthält OPcache Support. Was ist OPcache?

OPcache ist ein sogenannter Bytecode-Cache, der vorkompilierten Code im Arbeitsspeicher ablegt. So wird vermieden, dass PHP-Scripte bei jedem Aufruf komplett neu verarbeitet werden müssen (Zitat: OPcache macht PHP-Scripts doppelt so schnell)

Dies bedeutet, dass viele Skripte nach der ersten Ausführung in einem Cache gehalten werden und nicht neu übersetzt werden müssen. Zur Zeit erreichen wir bei ersten Tests eine Hit-Rate von >90% und die Prozessorauslastung sinkt bei Ausführung von vielen Skripten (z.B. über PHP Module) enorm.

Jetzt die Warnhinweise: Dieses Feature experimentell und muss in den Spezialschaltern aktiviert werden. Erste Tests sind sehr vielversprechend und bisher haben wir keine Abstürze oder Nebenwirkungen berichtet bekommen. Wer also mitmachen will: Herzlich Willkommen beim Performance-Boost :slight_smile:

Wie installiere ich das nun?
-> OPcache in den Spezialschaltern aktivieren und dann den Dienst neu starten.

Ich habe es aktiviert. Funktioniert es überhaupt? Wo kann ich was gucken? Gibts ne coole Grafik?
-> Nall-Chan hat da was cooles vorbereitet: IP-Symcon Community Forum

paresy

PS: Alles über IPS_RunScriptText* ausgeführt wird, wird zur Zeit nicht gecached. Dazu gehören auch Ereignisse, welche direkt „SkriptText“ enthalten. Includes, welche innerhalb von diesem Kontext laufen, werden wiederum gecached :wink:

PPS: Ich freue mich besonders über vorher/nachher Vergleiche :slight_smile:

Nabend :smiley:

der neustart hat erstmal geklappt scheinbar auch der weitere Betrieb.

Ich werde mal weiter testen aber bisher macht das ganze einen guten Eindruck.

Grüße
Jens

Hallo paresy,

coole Feature! Wie lange bleibt der Cache erhalten? Bis zum IPS Neustart?

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Ja. Bis zum Neustart. Oder wenn er voll ist werden Sachen mit wenig Hits aussortiert.

paresy

Voll hatte ich noch nicht.
Aber wenn man im Hintergrund eine Datei ändert, kann es sein dass PHP das nicht sofort mitbekommt.
So war eine Debug-Ausgabe im Modul erst nach wenigen Sekunden aktiv.
Aber das kann man verschmerzen :smiley:
Neuer Rekord, nachdem ich gestern ab 20:30 nichts mehr geändert habe; eine Hitrate von 92,85% :wink:


Michael

Standardmäßig werden die Dateien alle 2 Sekunden geprüft. (PHP: Laufzeit-Konfiguration - Manual)

paresy

Du willst mir unterstellen, ich war zu schnell :wink:
Das laß mal nicht meinen Chef lesen :smiley:
Michael

Hallo paresy,

du sagtest ja die Timer etc. sind noch nicht aktiv.
Wenn dieses dann irgendwann auch mal im Cache landen, wirkt sich das positiv auf Polling aus?
Also wenn ich ein Gerät zum Beispiel alle x Sekunden polle um Informationen zu erhalten?

Grüße,
Kai

Mit PHP Modulen und Timern hat das nur indirekt was zu tun. Der PHP Modul Quellcode wird ja gecached, somit sollte das von der Performance her schon was bringen. Wenn du natürlich alle 100ms pollen willst, wird es trotzdem auf die Performance gehen, da der Code ja auch ausgeführt wird. Da hilft der beste Cache nichts :wink:

paresy

Das ist mir bewusst. :smiley:
Aber bin gespannt, wie sich das verhält. :slight_smile:

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

habe das mal aktiviert, werde berichten ob es was an der Stabilität ändert. Wie macht man denn vorher nachher Messungen fest an der CPU Last von einem Raspberry z.B. ?

Ja, CPU Last ist ein guter Messwert

paresy

Alter Schwede, leck mich am Arsch :eek:

Von 50 - 80 % CPU last auf nur noch 8-20 :eek: das ist ja mal mega Geil :cool:

Mal sehen ob es Probleme gibt die Tage :loveips:

Der erste Eindruck ist gut. Auslastung sinkt bei mir von 20% auf 10%.

Aber eine Nebenwirkung habe ich gefunden:

Wenn man im Skripteditor ein Programm verändert und es - ohne zu speichern - direkt ausführt, dann werden die Änderungen nicht berücksichtigt. Wenn man es dann erneut ausführt, dann sind die Änderungen wirksam.

Gruß

Burkhard

Wie paresy schreibt,

Prüft der Cash nur alle 2 sec ob es eine Änderung dess Scriptes gibt und aktualisiert dann dementsprechenden.

Also ein normales verhalten, finde ich aber auch nicht tragisch wenn man sich erstmal dran gewöhnt hat. Was sind schon 2 sec :smiley:

Bist jetzt absolut Stabil :smiley:

Also Momentan habe ich eine Trefferquote von 99,66%
Wer hat mehr zu bieten?

LG
Sven

@Bumaas: Ich denke ich werde die 2 Sek auf 0 reduzieren um eben diesen Effekt zu eliminieren. Das dürfe sich auch nur minimal auf die Performance auswirken…

paresy

Ne, da komme ich nicht rann.
Dafür ändere ich aktuell zu viel am System.
Aber an die 94% krazt es schon :slight_smile:
Michael

Nein, hier liegt der Fall anders. Wenn ich direkt ausführen anwähle, dann speichert ja IPS und führt dann direkt aus. Als Anwender habe ich da keine Chance …

Hi,
habe dies jetzt auf verschiedenen Systemen installiert und keine Probleme bisher feststellen können. :smiley:

Ciao
HerbertF