Ein kürzlich entdeckter Fehler in AMD Zen 1 und Zen 2-Systemen verursachte lange Bootzeiten, was nun mit dem Linux-Kernel 6.13 behoben wurde. Der Ursprung des Problems lag in einer Änderung aus dem Mai 2023, die Mikrocode-Updates für CPUs optimierte, jedoch zu erheblichen Verzögerungen führte. Ein Nokia-Ingenieur entwickelte einen Patch, der die doppelte Anwendung von Updates verhinderte. Dieser Fix wird auch auf frühere Kernel-Versionen zurückportiert, um betroffenen Nutzern zu helfen.
Fehlerbehebung für langsame Bootzeiten auf AMD Zen-Systemen
Ein kürzlich entdeckter Fehler, der bei AMD Zen 1 und Zen 2-Systemen zu übermäßig langen Bootzeiten führte, wurde nun im Linux-Kernel 6.13 behoben. Dies wurde von Phoronix berichtet. Obwohl Linux auf älterer Hardware manchmal längere Bootzeiten benötigt, ist es normalerweise für seine Geschwindigkeit bekannt. Selbst eine Verbesserung, die im August implementiert wurde und die Bootzeit um lediglich 0,035 Sekunden verkürzte, wurde als bedeutend angesehen, da das Betriebssystem bereits hochoptimiert ist.
Ursache und Lösung des Problems
Vor vier Wochen stellte ein Mitarbeiter von Nokia fest, dass über 10 AMD-Server mit Zen 1-basierten Epyc-CPUs beim Starten erheblich länger benötigten. Laut dem Ingenieur sollte der Bootvorgang normalerweise etwa 12 Sekunden dauern, mit geringen Schwankungen. Nach Anwendung des besagten Patches stieg jedoch die Variabilität, und in extremen Fällen konnte die Bootzeit auf mehrere Minuten ansteigen. Der Ingenieur erkannte, dass eine Änderung aus Mai 2023, die im Linux 6.11 implementiert wurde, die Ursache für das Problem war. Diese Änderung, bekannt als „spät laden auf beiden Threads“, war darauf ausgelegt, Mikrocode-Updates für AMD-CPUs mit simultanem Multithreading (SMT) zu optimieren.
Ein AMD-Mitarbeiter erklärte, dass die ursprüngliche Überprüfung feststellte, ob ein Mikrocode-Update nur auf einen oder auf beide Threads angewendet werden sollte. Der Patch hatte jedoch diese Überprüfung entfernt, wodurch die Updates jetzt immer auf beide Threads angewendet wurden. Der Nokia-Ingenieur argumentierte, dass die Mikrocode-Updates erfolgreich auf einen Thread angewendet und dann auf den anderen, was zwar unnötig war, jedoch die Bootzeiten erheblich verlängerte.
Wenige Wochen später reichte der Ingenieur einen Patch für den Kernel 6.13-rc1 ein, der das Problem adressiert, indem er Mikrocode-Updates aus dem CPU-Speicherpuffer entfernt, um eine doppelte Anwendung des Updates zu verhindern. Laut Phoronix wird dieser Patch auch auf frühere stabile Versionen des Linux-Kernels zurückportiert, sodass Distributionen, die auf vor 6.13-Kernen basieren, die Lösung für die langsamen Bootzeiten erhalten können.
Trotz der Tatsache, dass das Problem seit über einem Jahr besteht, wurde es erst kürzlich bemerkt, was darauf hindeutet, dass nur wenige Benutzer oder Organisationen davon betroffen waren. Dies ist nicht überraschend, da die ersten Zen-CPUs bereits 2017 auf den Markt kamen und die Zen 2-Chips 2019 folgten, sodass nur noch sehr wenige Computer mit diesen älteren Prozessoren betrieben werden.