Anfang dieses Monats bemerkte ich eine Linux-Scheduler-Änderung, die vor dem Linux 5.18-Zyklus in sched/core eingereiht wurde soll AMD EPYC-Prozessoren und anderen ausgewählten Zen-Prozessoren bei verschiedenen Workloads helfen. Die Änderung ist seit mehreren Monaten in Arbeit und betrifft die Anpassung des zulässigen NUMA-Ungleichgewichts, wenn es mehrere LLCs umfasst. Ich habe jetzt einige meiner eigenen Benchmarks auf EPYC-Hardware durchgeführt und kurbele tatsächlich die Leistung des Linux-Kernels weiter an.
Der Patch spricht von netten Leistungssteigerungen… Jetzt Testen auf meiner Seite.
Diese Änderung, die vor dem Zusammenführungsfenster von Linux 5.18 im nächsten Monat in „sched/core“ eingereiht wird, ist keine AMD-spezifische Änderung, sondern eine, die Zen-Prozessoren aufgrund ihres Cache-Layouts zugute kommt. Mel Gorman, der den Patch verfasst hat, erklärte: „[Eine Kernel-Scheduler-Änderung von 2020] ermöglichte ein Ungleichgewicht zwischen NUMA-Knoten, sodass kommunizierende Aufgaben nicht vom Load Balancer auseinandergezogen wurden. Dies funktioniert gut, wenn zwischen LLC eine 1:1-Beziehung besteht und Knoten, kann aber für mehrere LLCs suboptimal sein, wenn unabhängige Aufgaben vorzeitig CPUs verwenden, die sich den Cache teilen Hardware mit 1 LLC pro Knoten. Dieser Patch lässt ein Ungleichgewicht zu, bis zu dem Punkt, an dem LLCs zwischen den Knoten ausgeglichen werden sollten.”
Kann eine große Leistungssteigerung auf der EPYC 7003-Serie über eine Vielzahl hinweg bestätigen von Workloads mit den neuesten TIP-Scheded/Core-Änderungen.
Mels eigene Benchmarks bei der Arbeit an diesem Patch zeigten eine Verbesserung von bis zu 272 % für den Stream-Memory-Benchmark und auch andere beträchtliche Gewinne wie eine 10 % bessere Leistung in Coremark und max Imum um bis zu 17 %, die SPECjbb-Java-Leistung um bis zu 18 %, der peinlich parallele Benchmark von NPB um etwa 17 % schneller und andere bemerkenswerte Erfolge. Angesichts der gemeldeten sehr vielversprechenden Ergebnisse habe ich einige meiner eigenen Tests lokal durchgeführt und die Zahlen, die ich sehe, sind gleichermaßen aufregend – besonders für diese Linux-Kernel-Scheduler-Änderung, die nur etwa 50 Zeilen neuen Codes beträgt!
Zunächst sind einige Benchmarks aufgeführt, die mit einem AMD EPYC 75F3 2P-Server durchgeführt wurden, der um ein ASRockRack ROME2D16-2T-Motherboard herum aufgebaut ist und auf dem Ubuntu 21.10 ausgeführt wird. Die Leistung wurde zwischen Linux 5.17 Git und dann sched/core Git mit dem fraglichen Patch „sched/fair: Passen Sie das zulässige NUMA-Ungleichgewicht an, wenn SD_NUMA mehrere LLCs umfasst“ verglichen. Es wurde dieselbe Kernel-Kconfig zwischen beiden Kerneln verwendet.