Vorige week heb ik mijn eerste benchmarks gepost voor de Linux-impact van het verminderen van Retbleed als de nieuwste kwetsbaarheid voor speculatieve uitvoering van CPU’s. Zoals opgemerkt in de eerdere Retbleed-artikelen, zijn het aan de AMD-kant zowel de Zen 1/1+/2-processors als oudere Bulldozer-CPU’s. Dat eerdere artikel bevatte Zen 2-benchmarks, terwijl in dit artikel Zen 1-tests zijn, aangezien de situatie enigszins anders is.
Met Zen 1 en CPU’s zonder STIBP (Single Threaded Indirect Branch Predictors) voor de Retbleed-beperkingen, wordt de ongetrainde terugkeer thunks mitigatiebenadering, maar technisch gezien moet SMT ook worden uitgeschakeld voor volledige mitigatie. Natuurlijk betekent het uitschakelen van SMT dat u de helft van de threads voor deze originele Ryzen-en EPYC-processors verliest. Standaard schakelt Linux SMT niet uit, maar kan worden gedaan met behulp van de”retbleed=auto,nosmt”kerneloptie (of”mitigations=auto,nosmt”in het algemeen).
Om de mitigatie-impact op Zen te zien 1, heb ik een AMD Ryzen 7 1700 afgestoft en getest in de volgende configuraties bovenop Linux 5.19 Git:
Huidige Linux-standaard-De out-of-the-box gemitigeerde staat op Linux 5.19 zoals het er nu uitziet. Dit betekent momenteel in termen van CPU-beperkingen, waaronder retbleed: Beperking van ongetrainde terugkeer thunk; SMT kwetsbaar + spec_store_bypass: Beperking van SSB uitgeschakeld via prctl + spectre_v1: Beperking van usercopy/swapgs-barrières en __user pointer sanitization + spectre_v2: Beperking van Retpolines IBPB: voorwaardelijk STIBP: uitgeschakeld RSB-vulling. AMD Zen 1 wordt niet beïnvloed door itlb_multihit, L1TF, MDS, Meltdown, MMIO Stale Data, SRBDS of TSX Async Abort (TAA).
mitigations=off-Linux 5.19 opstarten Git met de”mitigations=off”-vlag die alle relevante runtime selecteerbare CPU-beveiligingsbeperkingsopties voor AMD Zen 1 uitschakelt.
retbleed=off-De nieuw geïntroduceerde Retbleed uitschakelen mitigaties (ongetrainde return thunks voor Zen 1) maar laat de andere CPU-beperkingen op hun plaats voor andere getroffen kwetsbaarheden.
mitigations=auto,nosmt-De”volledige”beperking van ook uitschakelen SMT-ondersteuning zo beperkt tot slechts de acht fysieke cores met één thread per core.
Van daaruit werden tientallen benchmarks uitgevoerd om de impact van deze verschillende opties op de AMD Ryzen 7 1700 te zien.
I/O-workloads blijven een van de gebieden die het meest worden beïnvloed door Zen-CPU’s door Retbleed en andere relevante maatregelen. Door van retbleed=off, dat in feite de vorige standaard voor Linux was tot vorige week, naar de nieuwe huidige Linux-standaard te gaan, werd nu een prestatieverbetering van 13% gezien in de PostMark-testcase. Dit laat de Ryzen 7 1700 op ongeveer 81% van de prestaties in deze testcase als mitigations=off/pre-2018 toen deze mitigaties nog moesten worden ontdekt/onthuld.
Voor de eenvoudige testcases die de nadruk leggen op de bediening primitieve systeemoperaties, is er een duidelijk verschil met Retbleed en andere oplossingen die op Zen 1 worden gebouwd.
Voor Linux-netwerken is de impact van Retbleed-beperking ook vrij duidelijk, vergelijkbaar met de I/O-resultaten. Met Sockperf levert het uitschakelen van SMT een mooie verbetering op omdat het altijd wordt ondersteund door een fysieke CPU-kern.
De OpenJDK Java-prestaties worden beïnvloed door deze oplossingen, maar bij het uitschakelen van SMT is een ander geval waarin de prestaties vooruit kunnen komen vanwege om geen twee threads te hebben die een kern delen.
Code-compilatie-workloads zijn minimaal beïnvloed door Retbleed en de andere CPU-beveiligingsbeperkingen die van invloed zijn op AMD Zen 1-processors. Nou ja, voor de standaardstatus. Als je voor volledige bescherming gaat en SMT uitschakelt, is dit een van de gebieden waar de prestaties zeker pijn doen als je grote codebases compileert en parallelle taken gebruikt.
De Retbleed-beperking op Zen 1 heeft een kleine impact op de cryptsetup-cryptografietests met de Linux-kernel.
SQLite is een ander voorbeeld uit de praktijk van een I/O-prestatie-impact van Retbleed.
Het GIMP-beeldmanipulatieprogramma bij het openen en het opslaan van grote afbeeldingsbestanden kan ook tragere prestaties opleveren als gevolg van Retbleed bij het uitvoeren van gescripte wijzigingen of veel laden/opslaan, maar voor normale beeldverwerkingsworkflows zullen artiesten op Zen 1 waarschijnlijk geen verschil merken.
Hetzelfde geldt voor voor andere I/O-taken zoals OCRMyPDF voor het converteren van gescande PDF’s naar tekst of RawTherapee voor het verwerken van grote RAW-afbeeldingen.
Het uitschakelen van SMT kan veel pijn doen voor database-workloads zoals RocksDB.
De prestaties van de webbrowser op AMD Zen 1 met mitigaties zijn in ieder geval niet beïnvloed als net als oudere Intel-CPU’s.
Degenen die nog meer van deze AMD Zen 1 Linux CPU-benchmarks willen zien, kunnen al mijn onbewerkte benchmarkgegevens vinden via deze OpenBenchmarking.org resultatenpagina. Vooral met Zen 4 om de hoek, als je nog steeds op AMD Zen 1 zit, is het misschien tijd om binnenkort te upgraden als je streeft naar topprestaties en veel betere energie-efficiëntie in vergelijking met deze oudere CPU’s.