Proportional Share Scheduling (Fair Sharing)¶
🎯 Was ist Proportional Share Scheduling?¶
- Prozesse bekommen CPU-Zeit basierend auf einer Gewichtung.
- Lotteriescheduling: Jeder Prozess bekommt Lose, mehr Lose = höhere Wahrscheinlichkeit zu laufen.
- Stridescheduling: Prozesse haben eine Schrittweite (Stride) → Der Prozess mit dem kleinsten "Passwert" läuft zuerst.
📌 Lotteriescheduling¶
- Jeder Prozess erhält Lose, dann wird zufällig gezogen.
- Fair: Über lange Zeit bekommt jeder ungefähr die richtige CPU-Zeit.
📌 Stridescheduling¶
- Prozesse haben eine Schrittweite → Kleinerer Stride bedeutet, häufiger laufen.
- Ein Prozess mit 50% CPU-Zeit bekommt doppelt so große Schritte wie einer mit 25%.
while True:
process = min(queue, key=lambda p: p.pass_value)
execute(process)
process.pass_value += process.stride
🔄 Multiprozessor-Scheduling¶
🎯 Problemstellung¶
- Wie plant man Jobs auf mehreren CPUs?
- Kann ein Prozess von einer CPU zur anderen wechseln?
- Wie verhindert man Lastungleichgewicht?
📌 Single Queue Scheduling¶
- Eine Warteschlange für alle CPUs.
- Problem: Hoher Synchronisationsaufwand.
📌 Multi-Queue Multiprozessor Scheduling (MQMS)¶
- Jeder CPU-Kern bekommt eigene Warteschlange.
- Geringere Synchronisationskosten als Single Queue.
- Problem: Lastungleichgewicht → Eine CPU könnte überlastet sein.
![[multiprocessor_scheduling.svg]]
📌 Load Balancing (Work Stealing)¶
- Falls eine CPU nichts zu tun hat, klaut sie Prozesse von einer anderen CPU.
📌 Linux Multiprozessor Scheduling¶
Linux verwendet mehrere Algorithmen für Multiprozessor-Systeme:
- O(1) Scheduler: Skalierbarer Scheduler mit mehreren Warteschlangen.
- Completely Fair Scheduler (CFS): Basiert auf virtueller Zeit → Fairer als klassische Algorithmen.
- Load Balancer: Verteilt Prozesse dynamisch zwischen CPUs.
![[linux_sched.svg]]
🏆 Fazit¶
- Einzel-CPU-Scheduling:
- FIFO, SJF, RR, MLFQ → Jede hat Vor- und Nachteile.
- Fairness:
- Proportional Share Scheduling (Lotterie, Stride).
- Multiprozessor-Scheduling:
- Single Queue: Einfach, aber Synchronisationsprobleme.
- Multi-Queue: Weniger Overhead, aber schwieriger zu balancieren.
- Work Stealing: Dynamische Lastverteilung.
- Linux Scheduling:
- Kombination aus prioritätsbasiertem Scheduling und Lastverteilung.