Übung 1.3: Thread-Engpass feststellen

Bevor Sie mit dieser Übung beginnen, sollten Sie Übung 1.2: Thread-Daten sammeln ausgeführt haben.

Thread-Engpässe in der Thread-Ansicht suchen

Die Thread-Ansicht zeigt den Status aller Threads in Ihrer Anwendung an und weist explizit auf gegenseitige Thread-Sperren und Thread-Konkurrenzsituationen hin.

Gehen Sie für die Suche nach Engpässen wie folgt vor:

  1. Klicken Sie im Monitor für Profilerstellung mit der rechten Maustaste auf die Profilerstellungsressource und wählen Sie Öffnen mit > Thread-Ansicht aus. Daraufhin wird die Thread-Ansicht geöffnet. Sie sieht in etwa wie folgt aus:

    Screenshot der Thread-Ansicht mit den nachfolgend beschriebenen Ergebnissen dieser Profilerstellung

    Die vertikalen Pfeile zwischen den Threads sind für uns von Interesse. Ein Pfeil zeigt an, dass ein Thread (bei dem der Pfeil beginnt) darauf wartet, dass ein anderer Thread (auf den der Pfeil zeigt) eine Sperre freigibt.

  2. Die Pfeile sind zu nahe beieinander, so dass sie nicht leicht auseinandergehalten werden können. Sie können sie besser erkennen, wenn Sie von der linearen Standardzeitskala auf eine differenzierte Zeitskala umschalten. Klicken Sie dazu auf den Knopf 'Umschalten auf komprimierte Zeitskala' . Bei Verwendung der komprimierten Zeitskala werden die Zeitsegmente ohne signifikante Thread-Aktionen komprimiert. Die Anzeige ändert sich und sieht etwa wie folgt aus:

    Screenshot mit der Verteilung der Pfeile nach Umschaltung auf die komprimierte Zeitskala

  3. Die Thread-Ansicht wird wie folgt interpretiert:
    1. Kurz nach dem Start des Programms werden vier philo*-Threads erstellt. Alle vier werden ausgeführt, sind dann inaktiv und anschließen kurz wieder aktiv. Bei Beendigung des Programms haben alle vier Threads den Status Wartet auf Sperre.
      Anmerkung: Auf manchen Systemen kann der Status "Ruht" nicht angezeigt werden.
    2. Die philo*-Threads warten auf eine Sperre von anderen philo*-Threads, die ihrerseits ebenfalls auf eine Sperre warten. In diesem Fall haben wir eine gegenseitige Sperre. Das Programm ist blockiert und kann nicht weiter ausgeführt werden.
      Anmerkung: Wenn Sie den Cursor auf das Thread-Segment bewegen, das auf eine Sperre wartet, werden spezifische Informationen zu Sperranforderungen angezeigt. Die Kurzinfo gibt den Namen der Sperre an sowie den Thread, der die Sperre hält (den "sperrenden Thread").
  4. In der Merkmalansicht sehen Sie detaillierte Informationen zu den Thread-Segmenten. Wählen Sie zum Aufrufen dieser Ansicht Fenster > Sicht anzeigen > Eigenschaften aus. Wählen Sie das Thread-Segment aus, dessen Merkmale Sie anzeigen möchten.

Jetzt wissen Sie, wie es zu dieser gegenseitigen Sperre kommt. Sie können mit Übung 1.4: Thread-Engpass auflösen beginnen.

Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2000, 2005. Alle Rechte vorbehalten.