ixCMF im Umfeld einer Simulation von Supply Netzwerken II

In einem früheren Beitrag hatten wir über den anstehenden Einsatz von PHP5 sowie ixCMF in einer "Supply Chain"- oder besser "Supply Netzwerk"-Simulation berichtet. Siehe:

ixCMF im Umfeld einer Simulation von Supply Netzwerken I

In der letzten Woche hatten wir eine interessante Testrunde mit unserem Auftraggeber für das Core-Programm der beauftragten "Supply Netzwerk Simulation". Als Testaufgabe wurde gestellt, für ein Netzwerk mit folgenden charakteristischen Merkmalen eine zeitabhängige Propagationsrechnung durchzuführen:

  • 60 Zeitschritte,
  • ca. 2 * 65 Haupt-Knoten,
  • ca. 2 * 250 unterschiedliche logische Pfadsegmente zwischen den Haupt-Knoten,
  • ca. 19000 individuelle logische Pfade durch das Netz,
  • logische Tiefe der Knotenstruktur > 9,
  • 3 zu propagierende Größen,
  • ca. 80 Zeitschritte

Auf einem Laptop mit Opensuse 12.3, Apache2 mit PHP 5.4, MariaDB und einer Hardware mit I7 3632 Quad Mobile Prozessor, 16 GB RAM und einer schnellen SSD haben wir

  • die logische Struktur-Analyse des Netzwerks samt einer Analyse aller möglichen Pfade in 15 Sekunden
  • und den eigentlichen Simulationslauf auf dem 3-dimensionalen Netz-Zeit-Gitter in unter 3 Sekunden

fehlerfrei bewältigt.

Dabei wurden im Schnitt nur zwei Prozessorcores belastet. Der Speicherbedarf des PHP-Programms betrug ca. 60 MB. Bzgl. der Datenbanktransaktionen, die zur Abspeicherung der berechneten Daten erforderlich sind, konnten wir zeigen, dass die SSD auf einem Laptop bereits eine Peak-Performance im Bereich von mehreren Tausend (einfachen) Transaktionen per Sek. ermöglicht. Auf einer anderen über den zugehörigen Linux Host gut gepufferten virtuellen LAMP-Maschine mit nur einem einzigen CPU Core (Quad 9950 auf dem Host / Raid-System mit virtio-Zugriff der KVM-Guests) haben wir entsprechend ebenfalls Insert-Raten im Bereich von über 20K Inserts pro Sekunde bei kleinen Datengrößen pro Record gemessen.

supp_chain_2_600

Dies alles hat uns und unserem Auftraggeber gezeigt, dass wir auf dem richtigen Weg sind. Bereits ein nur ansatzweise optimiertes PHP-Programm bietet auf aktueller Hardware genügend Perfomance-Reserven nicht nur für einzelne sondern ganze Ketten von vielen sukzessiven Simulationsläufen. Zwischenzeitliche Kritik, das ganze System sei allein aus Performance-Gründen in Java zu entwickeln, konnten wir dadurch weitgehend entkräften. Die eigentlich zu stellende Frage wäre aus unserer Sicht zudem eher die gewesen, ob man bestimmte Komponenten des Core-Systems nicht besser hätte in C (mit embedded SQL) darstellen sollen.

Nächste Schritte bestehen nun in einer Erweiterung der im Simulationslauf zu lösenden Aufgaben und einer Erweiterung des Transportes der zu verfolgenden Größen. Für das zu entwickelnde User-Interface zur Kontrolle einer Sequenz von Simulationsläufen wird ixCMF in wachsendem Umfang zum Einsatz kommen.