Runtime System

Schnellere Mutexe

Auslastungs-Zeit-Diagramm. Mit steigender Auslastung bleibt die Verarbeitungszeit konstant, die Wartezeit steigt jedoch stark an.

Betriebssystem-Kernel, die selbst nicht nebenläufig arbeiten können (wie etwa QNX® Neutrino® bis zur Version 7.1), können Multi-Core-Systeme erheblich einschränken. Das Ergebnis ist ein Warteschlangenproblem wie es im Buche steht, mit stark eskalierenden Wartezeiten sobald die OS-Ker­nel-Nutz­ung ca. 50% überschreitet. Das stellt unter anderem ein Problem für Prozesse und Threads die sich oft synchronisieren müssen dar. Wir haben unserem Kunden eine schnellere Mutex-Implementierung als std::mutex und pthread_mutex_t aus der Standardbibliothek, die unser Kunde nutzte, geschrieben. Diese war doppelt so schnell in dem Fall, in dem der Mutex frei ist. Wegen des Staffelungseffektes des genannten Warteschlangenproblems, sparte dies unserem Kunden ca. 20 bis 30% Laufzeit in einem kritischen Prozess.

Ein paar schnelle Fakten

Hardware:

  • SoC: Qualcomm® Snapdragon®
  • CPU: Arm® Cortex®-A78

Betriebssystem:

  • Blackberry® QNX

Compiler:

  • Blackberry QNX Compiler (GCC-basiert)

Zusammenfassung der von uns erzielten Ergebnisse:

  • Mutexe um den Faktor 2 beschleunigt, was in weniger OS-Kernel-Wartezeit resultierte
Alle genannten Produkte oder Dienstleistungsnamen und Handelsmarken sind das Eigentum ihrer respektiven Eigentümer.