AMD Epyc verliert kaum Leistung durch Spectre-v2-Fix Retpoline

Nach Bekannt­wer­den der Pro­zes­sor-Sicher­heits­lü­cken Melt­down und Spect­re wur­den hek­tisch ers­te Fixes oder im Jar­gon “Lin­de­run­gen” ver­öf­fent­licht, da ins­be­son­de­re bei den Betrei­bern von vSer­vern und Cloud-Ser­vern schnell eine Lösung her muss­te, denn die­se Sys­tem­gat­tung ist am stärks­ten bedroht davon. Das Feed­back der Betrei­ber fiel dabei je nach Ser­ver­typ ver­hee­rend aus. Von 20 %, 30 %, 40 % Leis­tungs­ver­lust war die Rede, ins­be­son­de­re bei I/O‑lastigen Aufgaben.

Von Melt­down ist AMD bekannt­lich nicht betrof­fen. Inzwi­schen sind zwei Mona­te ver­gan­gen und die Fixes sind gereift, eben­falls die gegen die bei­den Spect­re-Lücken. Dabei gibt es zwei kom­plett unter­schied­li­che Arten des Her­an­ge­hens: In der Linux-Welt ver­sucht man, Spect­re mit der Ret­po­li­ne-Tech­nik zu lin­dern, Micro­soft geht mit Win­dows den Weg über zusätz­li­che Befeh­le, die per Micro­code in den Pro­zes­so­ren nach­ge­rüs­tet wer­den müssen.

Auf Pho­ro­nix ist vor eini­gen Tagen ein Arti­kel erschie­nen, der die Aus­wir­kun­gen der ver­schie­de­nen Fixes auf den Ser­ver-Pro­zes­sor AMD Epyc auf­zeigt. Dabei wird klar, wes­halb AMD zu jeder pas­sen­den Gele­gen­heit betont, dass man Spect­re v2 ger­ne mit dem Linux-Aus­weg Ret­po­li­ne begeg­nen wür­de, eben­so unter Win­dows. Denn die Aus­wir­kun­gen von Ret­po­li­ne auf die Leis­tung von Epyc sind ver­schwin­dend gering. Dabei darf in Anbe­tracht der Bench­marks nicht über­se­hen wer­den, dass der getes­te­te Linux-Ker­nel 4.16 gene­rell etwas lang­sa­mer zu sein scheint als der älte­re 4.14, ver­mut­lich auch weil bei 4.16 die Spect­re-v1-Fixes grund­sätz­lich akti­viert sind. Die wei­te­ren getes­te­ten Vari­an­ten umfassen:

For this AMD EPYC Linux ker­nel bench­mar­king the fol­lo­wing con­fi­gu­ra­ti­ons were tested:

- Linux 4.14.0 sta­ble that does­n’t con­tain any Spect­re V1 or V2 miti­ga­ti­on for the EPYC system.

- Linux 4.14.24 as the latest 4.14 sta­ble point release at the time of test­ing that includes both __user poin­ter sani­tiza­ti­on for Spect­re Vari­ant One and back­por­ted full AMD Ret­po­li­ne pro­tec­tion for Spect­re Vari­ant Two.

- Linux 4.15.0 sta­ble that con­tai­ned full AMD Ret­po­li­ne pro­tec­tion but that release had­n’t offe­red any Spect­re V1 protection.

- Linux 4.16 Git from this week offe­ring both user poin­ter sani­tiza­ti­on and full AMD Ret­po­li­ne protection.

- Linux 4.16 Git from the same build but dis­ab­ling the Ret­po­li­ne sup­port via the “spectre_v2=off” ker­nel com­mand-line opti­on. This though still lea­ves Spect­re V1 pro­tec­tion in place.

Eini­ge Tage zuvor führt Pho­ro­nix einen ähn­li­chen Test auf einem Ser­ver mit Intel-Xeon-Gold-6138-CPUs durch. Dort trat der Leis­tungs­ver­lust infol­ge der neu­en Sicher­heits­fea­tures weit deut­li­cher zum Vor­schein, natür­lich auch des­we­gen, da auf Intel-Ser­vern zusätz­lich gegen Melt­down gepatcht wer­den muss.