Login
Newsletter
Werbung

Fr, 11. Oktober 2019, 12:11

Software::Kernel

Google gibt Einblicke in den Linux-Scheduler mit SchedViz

Das bei Google entwickelte Programm SchedViz kann dabei helfen, die Entscheidungen des Schedulers in Linux zu verstehen und an spezielle Anforderungen anzupassen.

Moderne Systeme besitzen mehrere CPU-Kerne und führen Anwendungen mit zahlreichen Threads aus. Der Scheduler des Betriebssystems entscheidet, wo, in welcher Reihenfolge und wie lange jeder Thread laufen darf. Dies hat einen großen Einfluss auf die Systemleistung. Oft sind die vom Scheduler getroffene Entscheidungen nicht optimal, da er auf allgemeine Situationen optimiert ist und die speziellen Anforderungen einzelner Anwendungen nicht kennt.

Die Analyse des Scheduler-Verhaltens ist unter Linux mittels Tracing möglich. Um diese Analyse zu unterstützen, haben Entwickler bei Google nun ein grafisches Werkzeug konstruiert, SchedViz (Scheduler Visualization) genannt. SchedViz hat noch keine offizielle Veröffentlichung vorzuweisen. Es ist im Quellcode auf Github zu finden und steht unter der freien Lizenz Apache 2.0. Zum Erstellen des Programms benötigt man Node.js und Yarn.

SchedViz nutzt vor allem die Tracepunkte der »sched«-Kategorie im Linux-Kernel. Ein mitgeliefertes Shell-Skript erlaubt es, auf einfache Weise einen Trace anzufertigen. Dieser kann anschließend zur grafischen Analyse in SchedViz geladen werden.

Fotostrecke: 6 Bilder

SchedViz: Thread wird durch andere Threads verzögert
SchedViz: Thread wird durch andere Threads verzögert (vergrößerte Darstellung)
SchedViz: Überlastete CPU mit zwei abwechselnd laufenden Threads
SchedViz: Überlastete CPU mit weiteren CPUs
SchedViz: Thread wechselt zwischen NUMA-Knoten, was Speicherzugriffe verlangsamen kann
Die Visualisierung der Daten kann in SchedViz auf verschiedene Arten erfolgen, je nachdem, an welchen Informationen man besonders interessiert ist. Eine vergrößer- und verschiebbare Heatmap zeigt die Prozessorkerne auf der Y-Achse und die Trace-Dauer auf der X-Achse. Jeder Kern hat eine bestimmte Breite auf der Y-Achse, innerhalb derer die CPU-Auslastung und Länge der Warteschlange dargestellt sind. Die Oberfläche zeigt auch eine Thread-Liste mit den Threads, die in einer Heatmap aktiv waren, zusammen mit ihren Lauf- und Wartezeiten. Sie macht auch ersichtlich, wie oft ein Thread aufgeweckt wurde oder auf andere Kerne verschoben wurde. Man kann für jeden einzelnen Thread sein Verhalten im Zeitverlauf verfolgen und weitere Einzelheiten ansehen.

Einige weitere Punkte, die sich mit SchedViz visualisieren lassen, sind zum Beispiel, aufgrund des Round Robin-Schedulings lange wartende Threads zu quantifizieren. Man kann ferner Threads identifizieren, die kritischen Threads zuviel CPU-Zeit wegnehmen, oder unnötige Wartezeiten finden, die durch ungünstige Platzierung der Threads auf den Kernen entstehen. Ferner kann man unterschiedliche Scheduling-Strategien auswerten.

Werbung
Pro-Linux
Traut euch!
Neue Nachrichten
Werbung