Intel TBB im PHP- und WordPress-Einsatz

veröffentlicht von am 12. Mai 2011

Manchmal sind es die unscheinbaren, kleineren Blogeinträge, die eine Menge Potenzial in sich bergen. So wie der aktuelle Beitrag des werten James Reinders, der unter der Überschrift “CPAN tbb.pod: Parallel Perl using TBB, Kiwi Style” darauf hinweist, dass es in Neuseeland eine Softwareschmiede names Open Parallel gibt, die sich auf das Thema Multicore- und Manycore-Programmierung spezialisiert hat.

Diese Tatsache alleine ist noch keine Sensation, aber die Produkte von Open Parallel durchaus schon. Das Team um Lenz Gschwendtner setzt nämlich bei seinen Produkten wie OPHpHp auf ein “Übersetzertool”, das Facebook entwickelt und zur kostenlosen Nutzung freigegeben hat: HipHop.

Was zunächst nach Rhythmus klingt, entpuppt sich bei näherem Hinsehen als ziemlich pfiffiger Einfall der zuständigen Facebook-Entwickler, wie man lahmen und ineffizienten PHP-Code in schnellen und höchst performanten C++-Code umwandelt. Dass dies funktioniert, hat Facebook schon selbst bewiesen, indem sämtliche PHP-Seiten, die auf facebook.com zum Einsatz kommen, in HipHop-basierten Code umgewandelt wurden. Ergebnis: Der notwendige Sourcecode konnte einerseits um rund 50 Prozent reduziert werden, und zum anderen läuft Facebook dank HipHop viel schneller.

Was aber hat das mit den Intel Threading Building Blocks zu tun? Nun, die Jungs bei Open Parallel wussten sofort, dass Intel TBB mit seiner hochoptimierten und thread-sicheren Software-Bibliothek prima zu HipHop passen würde, da ja dieses PHP-Framework C++-Code generiert, was wiederum gut zu Intel TBB passt. Also mussten sie einen effizienten Weg finden, wie sich die Intel-TBB-Funktionen in HipHip sinnvoll integrieren lassen.

Die erste Idee bestand darin, den HipHop-Optimizer dazu zu bringen, eine automatische Umwandlung von HipHop- in TBB-Code vorzunehmen, was sich aber als zu kompliziert und nicht machbar herausstellte. Also versuchte sich Open Parallel daran, TBB-Funktionen in HipHop zu implementieren und dafür PHP-äquivalente Funktionen zu schreiben. Die ersten Gehversuche in diese Richtung unternahm Open Parallel mit dem TBB-Konstrukt parallel_for(), da viele PHP-basierte Anwendungen wie WordPress auf einer Reihe von for-Schleifen basieren, was die Implemtierung solch eines parallelisierten Schleifenkonstrukts sinnvoll erscheinen lässt.

Im Falle von WordPress schien es so, dass sich vor allem der Plugin-Code als sehr schleifenlastig herausstellte, und somit war der erste HipHop-TBB-Code geboren. Und das Ergebnis dieser angepassten WordPress-Implementierung konnte sich wohl sehen lassen: die Entwickler von Open Parallel verzeichneten einen deutlich geringen Speicherbedarf, und die Laufzeiten konnten dadurch ebenfalls erheblich verbessert werden. Und das mit einer einzigen parallel_for-Funktion. Respekt!

Mehr Infos rund um die WordPress-HipHop-TBB-Optimierungen finden Sie auf der Open-Parallel-Webseite im zugehörigen Artikel.


Keine ähnlichen Artikel.
Kategorien : Multicore Tags : , ,

Kommentare

Keine Kommentare vorhanden.


Beitrag kommentieren.

Sie müssen angemeldet sein um diesen Beitrag zu kommentieren. [Login | Registrieren]

(erforderlich)

(erforderlich)