Red Hat-Ingenieure arbeiten daran, das Problem zu lösen, dass Indirect Branch Restricted Speculation (IBRS) zu kostspielig ist, um Spectre V2 und Retbleed auf älteren Intel Xeon Scalable-Prozessoren zu entschärfen. Ein neuer Patch wurde veröffentlicht, um IBRS im Leerlauf zu deaktivieren. Er funktioniert zumindest für Red Hat Enterprise Linux 9 gut, es ist jedoch noch nicht klar, ob er im Upstream-Kernel akzeptiert wird.
Der Patch von Waiman Long von Red Hat erklärt die Probleme, mit denen sie immer noch im Zusammenhang mit Intel IBRS im Umgang mit Spectre und Retbleed zu kämpfen haben:
Für Intel-Prozessoren, die IBRS zum Schutz einschalten müssen Bei Spectre v2 und Retbleed wirkt sich das IBRS-Bit im SPEC_CTRL MSR auf die Leistung des gesamten Kerns aus, selbst wenn es nur von einem Thread aktiviert wird, wenn er im Kernel ausgeführt wird. Bei benutzerspeicherintensiven Anwendungen sollte die Leistungsbeeinträchtigung durch das gelegentliche Einschalten von IBRS während Systemaufrufen nicht erheblich sein. Leider ist dies nicht der Fall, wenn der Geschwister-Thread im Kernel inaktiv ist. In diesem Fall können die Auswirkungen auf die Leistung erheblich sein.
Wenn DPDK auf einem isolierten CPU-Thread läuft und Netzwerkpakete im Benutzerbereich verarbeitet, während sein Geschwister-Thread inaktiv ist. Die Leistung des ausgelasteten DPDK-Threads mit ein-und ausgeschaltetem IBRS im gleichgeordneten Leerlaufthread ist:
IBRS an IBRS aus
—————
Pakete/Sekunde: 7,8 Mio. 10,4 Mio.
durchschnittliche TSC-Zyklen/Paket: 282,26 209,86
Dies ist eine Leistungseinbuße von 25 %. Das Testsystem ist eine Intel Xeon 4114 CPU mit 2,20 GHz.
Diese Patch-Serie schaltet IBRS in verschiedenen Leerlaufmodi aus, um die Leistungseinbußen des Leerlauf-Threads auf seinen ausgelasteten Geschwister-Thread zu beseitigen.
Autsch, ein 25-prozentiger Treffer auf dem Xeon Scalable Skylake für das Open-Source Data Plane Development Kit (DPDK).
Es gibt diesen Kernel-Thread, in dem der Patch zum Deaktivieren von IBRS bei Leerlauf verfügbar ist. Der bekannte Intel-Linux-Ingenieur Peter Zijlstra hat jedoch einen weiteren Patch vorgeschlagen, der derzeit nicht auf RHEL9 zurückportiert ist. Darüber hinaus besteht die Möglichkeit, statt IBRS auf Call Depth Stuff/Tracking zu setzen. In meinen Tests bietet das in Mainline-Linux 6.2+ enthaltene Call Depth Tracking tatsächlich die Möglichkeit, einen Teil der verlorenen Leistung auf CPUs aus der Intel-Skylake-Ära wiederherzustellen, die ansonsten auf IBRS angewiesen sind. Wir werden also sehen, wohin die Upstream-Kernel-Aktivität führt oder ob Red Hat diesen Patch vorerst nur als Teil seines RHEL9-Kernels bereithält, bis alle neuen Optionen zurückportiert werden. Auf jeden Fall zeigt dieser neueste Kernel-Mailinglisten-Thread weiterhin die Probleme bei der Schadensbegrenzung, mit denen Enterprise-Linux-Benutzer Mitte 2023 auf älteren Plattformen immer noch konfrontiert sind.