Skalierende Musikprojekte dank Multithreading: Sonar 8

veröffentlicht von Michael Hülskötter am 17. März 2009

Der Name Cakewalk ist wohl hauptsächlich eingefleischten Audio-Freaks ein Begriff. So entwickelt das in Boston, Massachusetts beheimatete Unternehmen Software für Musiker und ähnliche Menschen. Eines der wichtigsten Software-Titel von Cakewalk ist Sonar, ein professioneller Audio-Sequenzer, mit dem sich sowohl Audio- als auch MIDI-Tracks parallel mischen, arrangieren und aufnehmen lassen. Ach ja: Sonar hieß irgendwann mal Cakewalk Pro resp. Cakewalk Pro Audio. Aber das nur so am Rande.

Warum ich das alles erzähle? Nun, ich hatte gestern die exklusive Gelegenheit, mit Noel Borthwick ein ausführliches Telefonat zu führen. Noel ist CTO von Cakewalk, also der führende technische Kopf des Unternehmens. So gesehen hat Noel eine ganze Menge über Sonar und dessen Multithread-Fähigkeiten zu erzählen.

Zunächst einmal gab es ein wenig Geschichtliches. So erfuhr ich, dass Cakewalk Pro Audio etwa 1993/94 entstanden ist und damals schon multithread-fähig war. Ok, natürlich nur auf einer Multisocket-Plattform mit zwei parallel geschalteten Prozessoren, mit deren Hilfe es möglich war, die komplette Bedieneroberfläche auf einen separaten Thread auszulagern und die Audio Engine auf die zweite CPU. Das war sicherlich nicht sonderlich effektiv, zeigt aber, das sich Cakewalk schon seit mehr als 15 Jahren mit dem Thema Multithreading beschäftigt – und das sehr erfolgreich, wie die Firmenhistorie zeigt.

Im Jahr 2001 vollzog Cakewalk dann den Namenswechsel: Aus Cakewalk Pro Audio wurde Sonar und damit ein skalierendes Produkt, das auf Basis einer komplett neu entwickelten Audio Engine die Möglichkeiten des damals aufkommenden Software-Multithreadings erheblich besser ausnutzen konnte als sein Vorgänger. Hierfür war neben dem Redesign der Software auch ein eigener Task Scheduler notwendig, der in Sachen Funktionsumfang dem Task Scheduler der Intel TBB ähnelt. Für eine optimale Skalierung werden also die vorhandenen Ressourcen (Kerne) ermittelt und anhand dessen die anstehenden Aufgaben (Tasks) intern in Threads umgewandelt und zur Laufzeit dynamisch auf die vorhandenen Prozessorkerne verteilt.

Um diese Software-Skalierung zu perfektionieren, arbeitet Cakewalk kontinuierlich an Sonar. So kommt beispielsweise permanent der VTune Performance Analyzer zum Einsatz, um ausgeglichene Kernel Workloads zu erzielen. Aber auch Treiberprobleme lassen sich auf diesem Weg ermitteln und beheben. Dies führt insgesamt zu geringeren Ladezeiten, was sich vor allem bei großen Musikprojekten positiv bemerkbar macht, die sich aus einer Vielzahl von Tracks, Plugins und anderen Objekten zusammensetzen. Zudem lassen sich mit VTune recht einfach Cache Misses und andere unschöne Dinge ausfindig machen.

Der Thread Checker ist für Cakewalk immer wieder von Vorteil, wenn es zum Beispiel um das Aufspüren von Synchronisationsproblemen von Threads geht, die ja meist erst zur Laufzeit auftauchen. So half Thread Checker Cakewalk beim Eliminieren eines Priority Inversion-Problems, das sich eines Tages in Sonar 8 bemerkbar machte: Aufgrund einer falschen Thread-Priorisierung verhielt sich das Tool an manchen Stellen völlig anders als erwartet, was natürlich mit unzufriedenen Kunden endete. Dank Thread Checker konnte das Laufzeitproblem behoben werden und alle waren wieder glücklich.

Surftipp: Wenn ihr mal sehen wollt, wie sich Multithreading in Sonar 8 bemerkbar macht, solltet ihr unbedingt diese Webseite ansurfen. Dort gibt es sehr aufschlussreiche Benchmarks, die Sonar 8 mit dessen Vorgänger Sonar 7 vergleichen. Vor allem beim Sonar-eigenen Benchmark kamen Steigerungsraten von bis zu 240 Prozent heraus. Ich sag mal, da haben die Cakewalk-Entwickler multithreading-seitig ganze Arbeit geleistet!


Share/Bookmark
Kategorien : Multicore Tags : , ,

Kommentare
Beitrag kommentieren.

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

(erforderlich)

(erforderlich)