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.
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.