Gang Scheduling ist ein Scheduling-Verfahren für parallele Systeme, bei dem zusammengehörige Threads oder Prozesse – ein sogenannter Gang – gleichzeitig auf verschiedenen Prozessoren oder Kernen laufen. Anders als beim normalen Prozess-Scheduling werden die Mitglieder eines Gangs nicht einzeln, sondern als Gruppe zur selben Zeitscheibe eingeplant. Es ist eng mit dem Prozess-Scheduling auf Multikern-Prozessoren verbunden.
\nWarum gleichzeitig?
\nParallel arbeitende Anwendungen – etwa MPI-Programme in der Wissenschaft oder verteilte Simulationen – tauschen über kurze Synchronisationsnachrichten Daten aus. Läuft nur ein Teil des Gangs, blockieren die wartenden Threads, während ihre Prozessoren leerstehen. Beim Gang Scheduling starten und stoppen alle Mitglieder gemeinsam: Die Kommunikationspartner sind garantiert gleichzeitig aktiv, Synchronisationswarten wird stark reduziert.
\nAbgrenzung zum Co-Scheduling
\nDer verwandte Begriff Co-Scheduling geht auf John Ousterhout (1982) zurück und verlangt nur, dass ein Großteil der Gruppe gleichzeitig läuft; einzelne Fragmente dürfen abweichen. Gang Scheduling ist strenger: Alle Threads des Gangs laufen strikt parallel über die gesamte Zeitscheibe. Dafür braucht es so viele freie Prozessoren, wie der Gang groß ist – sind nicht genug frei, entsteht Leerlauf. Systeme wie Cray-Supercomputer und Cluster-Scheduler setzten dieses Prinzip um.
\nZusammenhänge
\nDer Scheduler eines Betriebssystems muss dafür die Kerne koordiniert belegen. Müssen die Aufgaben dabei auch Fristen einhalten, verbindet man die Gruppenplanung mit fristenbasierten Verfahren wie dem Deadline Scheduling. Bei der fairen Verteilung von Ressourcenanteilen über mehrere Anwendungen hinweg greift man dagegen auf Verfahren wie das Lottery Scheduling zurück, bei dem Anteile per Los vergeben werden.
\nVerwandte Grundlagen: Nebenläufigkeit, Preemption.