System-Tracing-Tools für die Parallelverarbeitung erleichtern den Wechsel zu Multicore-Plattformen und liefern Applikationen das Plus an Durchsatz und Performance, das diese Architekturen versprechen.
Ressourcenkonflikte entdecken und reduzieren
Wird eine Software auf eine Multicore- Umgebung portiert, dann verbessert sich die Performance meist nicht so stark wie erwartet. Ursachen dafür sind in aller Regel Ressourcenkonflikte. Da die Prozesse im Multicore-Betrieb parallel verarbeitet werden, kann es, anders als bei Uniprozessorsystemen, zu Ressourcenkonflikten kommen. Teilen sich zwei oder mehr Threads eine Datenstruktur, die durch eine Sperre, auch Mutex genannt, mit gegenseitigem Ausschluss geschützt ist, kommt es zu einem auf SMP-Systemen typischen Engpass. Die Mutex verhindert, dass verschiedene Threads simultan dieselbe Ressource nutzen. Greifen zwei Threads verschiedener Cores auf die durch eine Mutex geschützte Ressource zu, muss einer der Prozesse warten, bis der andere Prozess die Ressource freigegeben hat: Anstatt parallel zu laufen, und damit den Hauptvorteil von Multicore zu nutzen, müssen sich die Threads bei der Ausführung abwechseln. Die Routingtabelle in einer Netzwerkapplikation ist ein typisches Beispiel für Ressourcenkonflikte. In einer Uniprozessorumgebung hat nur jeweils ein Prozess darauf Zugriff. In einer Multicore- Umgebung hingegen können Threads verschiedener Cores gleichzeitig auf die Tabelle zugreifen und konkurrieren miteinander.