Missa inte! Fyndchans i Månadens Drop

Fix för AMD-sårbarhet påverkar knappt vardagsprestanda

Permalänk
Melding Plague

Fix för AMD-sårbarhet påverkar knappt vardagsprestanda

AMD:s fix för sårbarheten Inception har hittills bara rullats ut till Epyc-processorer, men tidiga testresultat visar vilka arbetsuppgifter som påverkas.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

Ouch! 54% i kodkompilering och databaser är en riktigt stor nackdel på business sidan som dessa processer är ämnade åt. Vi har äldre Threadripper processorer på jobbet för kompilering och en sådan minskning av prestandan skulle ha en klart menlig inverkan på användbarheten för min del. Dubblade kompileringstider kan betyda 5 minuter extra för att testa en mindre sak. Det blir mycket pengar för arbetstid i slutändan.

Permalänk
Medlem
Skrivet av SweDragon:

Ouch! 54% i kodkompilering och databaser är en riktigt stor nackdel på business sidan som dessa processer är ämnade åt. Vi har äldre Threadripper processorer på jobbet för kompilering och en sådan minskning av prestandan skulle ha en klart menlig inverkan på användbarheten för min del. Dubblade kompileringstider kan betyda 5 minuter extra för att testa en mindre sak. Det blir mycket pengar för arbetstid i slutändan.

Sida 6, kompilering ca 10%. databaser blev dock ordentligt shaftade...

Permalänk
Medlem

Gillar hur vinklade dessa nyheter om fixarna är, för Intel är det DOMEDAGEN 50% LÄGRE PRESTANDA *i vissa funktioner som inte påverkar vardagsprestanda överhuvudtaget

Medan för AMD, ja, detta.

Permalänk
Medlem

Alltså, kodkompilering, databaser och bildbehanding är faktiskt vardagssysslor för många användare.

Permalänk
Medlem
Skrivet av Nyhet:

AMD:s fix för sårbarheten Inception har hittills bara rullats ut till Epyc-processorer, men tidiga testresultat visar vilka arbetsuppgifter som påverkas.

"Databaser, kodkompilering och en del andra uppgifter visade desto större prestandaförlust, med upp till 54 procent i Phoronix tester."

Läs hela artikeln här

Skrivet av Lussarn:

Alltså, kodkompilering, databaser och bildbehanding är faktiskt vardagssysslor för många användare.

Det står väl ingenting om -54% för kodkompilering i Phoronix tester?! Ser bara resultatet för MariaDB på -54%

Visa signatur

Ryzen 9 5950X, 32GB 3600MHz CL16, SN850 500GB SN750 2TB, B550 ROG, 3090 24 GB
Har haft dessa GPUer: Tseng ET6000, Matrox M3D, 3DFX Voodoo 1-3, nVidia Riva 128, TNT, TNT2, Geforce 256 SDR+DDR, Geforce 2mx, 3, GT 8600m, GTX460 SLI, GTX580, GTX670 SLI, 1080 ti, 2080 ti, 3090 AMD Radeon 9200, 4850 CF, 6950@70, 6870 CF, 7850 CF, R9 390, R9 Nano, Vega 64, RX 6800 XT
Lista beg. priser GPUer ESD for dummies

Permalänk
Medlem
Skrivet av Dyluck:

Sida 6, kompilering ca 10%. databaser blev dock ordentligt shaftade...

Alltid bra att läsa källan uppenbarligen! LLVM med Ninja är precis vad vi använder och det var ju knappt 2%. Ofantligt mycket bättre än jag trodde efter att ha läst bara SweC artikeln

Permalänk
Medlem

Kommer nog ut mycket begagnade Amd cpus nu.

Visa signatur

Asus Tuf Gaming X670E-Plus - Amd 7800X3D Noctua D15 Chromax Black - Corsair 6400MHz cl30 - Msi 4080S Suprim X - Asus Rog Thor 850W 80+ Platinum - Sound Blaster AE-9 - Asus 26.5" ROG Swift PG27AQDM OLED 240Hz

Permalänk
Medlem
Skrivet av Pantburk:

Kommer nog ut mycket begagnade Amd cpus nu.

Varför?

Permalänk
Medlem
Skrivet av Pantburk:

Kommer nog ut mycket begagnade Amd cpus nu.

Kan inte avgöra om du är sarkastisk eller inte.

Permalänk
Medlem

Finns det speltester ute för de senaste fixarna för Intel och AMD?

Visa signatur

Windows 11 Pro | Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Datavetare

Håller med om att rubrikerna för denna och tidigare Intels Downfall-fix sänker prestandan rejält känns lite märkliga, verkligheten är väl ändå precis tvärtom dessa fall.

Benchmark vs mikro-benchmark

Phoronix test-suite är väldigt bra då den innehåller väldigt många tester, är helt fri att använda (och är öppen källkod) samt helt automatiserad.

Problemet med Phoronix test-suite är man måste vara ordentligt påläst för att överhuvudtaget fatta vad som faktiskt testas, har själv i praktiken noll koll på vad >50 % av sakerna de tester egentligen är ett test av. Positiva är att när något sticker ut är det ju bara ladda ner det hela och läsa på vad som faktiskt testas.

I fallet Downfall bör man notera vad som inte testas givet att det som sticker ut är saker som Ospray: Blender finns inte med trots att Ospray och Blender båda handlar om rendering. Orsaken är med väldig stor sannolikhet att prestanda i Blender knappt påverkas.

Fast hur är det möjligt att Ospray påverkas om Blender inte göra det, båda är 3D-rendering?

Ospray testerna som påverkas är uteslutande mikro-benchmarks, de testar ett väldigt specifikt moment i en större pipeline, de testar inte ett fullständigt flöde som att rendera en hel scen i Blender. För Downfall är det väldigt specifika moment som kan påverkas "upp till 50 %", men på ett helt flöde kanske detta moment står för <5 % totala beräkningstiden vilket gör att påverkan i "verkliga" fall ofta blir fraktioner av procentenheter.

Givet att AMD sa att de förväntade sig att fixarna för Inception inte skulle ge speciellt stor påverkan var jag övertygad om att samma sak gällde detta. Verkar ha haft fel om Inception...

Kritiskt vad och hur information kan läcka

Downfall (påverkar primärt CPU-modeller med AVX-512 stöd innan Alderlake), Zenbleed (påverkar bara Zen2) och DIV0 (påverkar bara Zen/Zen+) som alla presenterats rätt nyligen delar alla egenskapen att de "bara" kan läcka information från program som nyligen kört på samma fysiska CPU-kärna.

Alla dessa delar egenskapen att det är information i SSE/AVX register som kan läcka, men de kan inte läcka godtycklig information. D.v.s. helt klart ett hål, men rätt begränsat vad som är åtkomligt.

Delen jag helt missat i Inception är vad det som kallas "Phantom speculation" faktiskt går ut på. Phantom speculation, som är specifikt för hela Zen-serien, presterades tydligen redan förra året. Det fick nog inte så mycket uppmärksamhet i pressen då Phantom speculation i sig inte är tillräckligt för att orsaka data-läckage.

Men det visade sig kombon Phantom speculation och "Training in Transient Execution (TTE)" i praktiken är motsvarigheten till Meltdown på flera sätt!

Betydligt värre attack-vektor

Inception och Meltdown (som inte bara påverkade Intel utan även vissa POWER och någon enstaka Arm modell) är i grunden helt två separata klasser av sårbarheter, men de delar vad som kan läcka: vilket tyvärr innefattar innehållet i kernel-minne!!!!

De flesta av dessa CPU-sårbarheter är otroligt teoretiska attacker, de är mer att jämföra med "det är en förhöjd risk att ge sig ut i trafiken, men de flesta accepterar den risken då fördelarna överväger". Majoriteten av Spectre-attackerna verkar ens sakna fungerande proof-of-concept.

Inception delar tyvärr även Meltdown-egenskapen att det är, i sammanhanget, relativt enkelt att utnyttja buggen. Är inte fullt lika illa som Meltdown då det verkar ta längre tid att läcka via Inception, men då det som läcker innefattar kernel-minne finns inte alls något krav att köra på samma CPU-kärna som den man vill stjäla information från -> webbläsaren (JavaScript) blir en realistisk attack-vektor.

Alla out-of-order CPUer verkar mottagliga för TTE, det inkluderar Intels. Det är via TTE som data rent tekniskt läcker. Men utan "Phantom speculation" är man beroende av extremt specifika kod-sekvenser (s.k. "gadgets") för att kunna utnyttja detta, i praktiken är det ofta så att "rätt" gadget överhuvudtaget inte finns.

Det Phantom speculation gör är att man som "attacker" i praktiken kan skapa sina egna gadgets, vilket gör TTE användbar...

Givet att AMD känt till denna sedan minst i februari i år är det lite underligt att man inte har skydd mot alla CPU-modeller redan nu. För likt Meltdown är detta nog en sårbarhet man nog ska applicera motmedel mot på en datorn man surfar med.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Datavetare
Skrivet av SweDragon:

Alltid bra att läsa källan uppenbarligen! LLVM med Ninja är precis vad vi använder och det var ju knappt 2%. Ofantligt mycket bättre än jag trodde efter att ha läst bara SweC artikeln

Nu kanske ni just bygger LLVM med Ninja alt. bygger C++ projekt med Ninja som i kompileringskomplexitet matchar att bygga LLVM.

Detta är ännu ett exempel som visar hur svårt det är att dra rätt slutsats från Phoronix tester. Positiva här är att mixen av saker som Phoronix testar kring just kompileringar belyser väldigt väl när detta är ett problem!

Skillnaden mellan att bygga LLVM (C++ projekt där det tar relativt lång tid att bygga varje enskild fil -> primärt "compute bound") och bygga Linux-kärnan (C projekt där varje enskild fil byggs relativt snabbt -> betydligt mer "I/O bound") är att det senare fallet kommer ha långt högre frekvens av anrop mellan program och OS-kärna.

Fixarna för denna bug påverkar kostanden för att kontext-switcha, ju oftare det händer ju värre blir prestandaförlusten.

Trista är att "tunga C++" projekt är ett edge-case, inget annat är lika "tungt" att kompilera som detta och andra språk är mer likt Linux-kernel fallet (fast få projekt är i närheten lika stora, så ur den aspekten påverkas man ändå inte lika mycket).

Superpositiva för er lär vara att ni antagligen inte använder er TR på ett sätt så okända kan köra saker på den (lär t.ex. inte vara någon som sitter och surfar på den datorn eller använder den som datacenter där okända kör sina program), i det läget är det ju helt OK att skippa fixarna för det är i praktiken rätt hopplöst att utnyttja sårbarheten.

Phoronix gjorde sina tester med en Zen3 CPU, det är modellen som påverkas klart minst. En "äldre TR" kanske betyder Zen2 eller Zen1, de är långt mer påverkade om man ska tro det forskarna listar i sin rapport. Även Zen4 har ju mer än dubbelt så stor "overhead".

Overhead är inte ett mått på direkta prestandaförsämringen, ökar overhead med x2 minskar inte prestandan till hälften utan påverkan är i praktiken betydligt mindre.

100 % overhead betyder att just det som påverkas blir hälften så snabbt, men det är sedan en liten del av ett större flöde. Tyvärr blir denna del overhead:en påverkar en relativt stor andel av flöden med väldigt mycket kontext-switchar (vilket bl.a. påverkar I/O-intensiva fall som kompilering och än mer databaser)

Det märkliga är dock att totala prestandaförsämringen som Phoronix fått är i vissa fall större än den "overhead" forskar listar... Undrar vad det kommer sig av?

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Generellt verkar det vara IO (skrivning och läsning av disk alltså) intensiva områden som påverkas, och det är klart att databas ligger rätt risigt till då. Testerna som Phoronix kör är ju inte så mycket vanliga användar-tester om vi då pratar stereotypiska gamern.

IO intensiva uppgifter en gamer gör som möjligen skulle kunna påverkas är ju boot-prestanda, indexering i windows, shader-caching och texture-streaming och säkert lite mer grejer. Nu tycker jag det verkar som där det tappas mest är när CPU är hamrad av IO uppgifter att göra, på flera kärnor samtidigt (databas, kompilering osv) och det kanske aldrig ens uppstår när man spelar, Shader kompilering i TLOU1 kanske?.

Man skulle ju kunna tänka sig att generell snappines av Windows påverkas negativt då det är latencykänsligt, men på det stora hela tror jag inte gamern märker så mycket skillnad om man slår på fixarna.

Permalänk
Medlem
Skrivet av Yoshman:

Nu kanske ni just bygger LLVM med Ninja alt. bygger C++ projekt med Ninja som i kompileringskomplexitet matchar att bygga LLVM.

Detta är ännu ett exempel som visar hur svårt det är att dra rätt slutsats från Phoronix tester. Positiva här är att mixen av saker som Phoronix testar kring just kompileringar belyser väldigt väl när detta är ett problem!

Skillnaden mellan att bygga LLVM (C++ projekt där det tar relativt lång tid att bygga varje enskild fil -> primärt "compute bound") och bygga Linux-kärnan (C projekt där varje enskild fil byggs relativt snabbt -> betydligt mer "I/O bound") är att det senare fallet kommer ha långt högre frekvens av anrop mellan program och OS-kärna.

Fixarna för denna bug påverkar kostanden för att kontext-switcha, ju oftare det händer ju värre blir prestandaförlusten.

Trista är att "tunga C++" projekt är ett edge-case, inget annat är lika "tungt" att kompilera som detta och andra språk är mer likt Linux-kernel fallet (fast få projekt är i närheten lika stora, så ur den aspekten påverkas man ändå inte lika mycket).

Superpositiva för er lär vara att ni antagligen inte använder er TR på ett sätt så okända kan köra saker på den (lär t.ex. inte vara någon som sitter och surfar på den datorn eller använder den som datacenter där okända kör sina program), i det läget är det ju helt OK att skippa fixarna för det är i praktiken rätt hopplöst att utnyttja sårbarheten.

Vi kompilerar inte LLVM men vi använder toolchainen tillsammans med Ninja för att kompilera och länka ett annat väldigt stort och tungrott C++ projekt. Så det borde matcha vårt användingsfall rätt så bra. Dessutom är det precis som du säger, vi kör inte i datacenter utan det är en lokal burk som i princip alltid bara har en användare (inte ens IT har access, yay!) så risken att någon utnyttjar sårbarheten är väl i princip obefintlig.

Men tvingas vi ändå patcha för vår övernitiska IT avdelning börjar hota ta ifrån oss vår enda dator med adminrättigheter så får vi väl patcha och ta den förhoppningsvis milda overheadpenaltyn.

Permalänk
Medlem

”Firefox Speedometer 1,2 procent snabbare”

Den var ju rolig och oväntad

Visa signatur

JJ2 Multiplayer
JJ2 ZStats

[1] Ryzen 5800X | 5500XT | Kingston A2000 | Lenovo G24-10 144Hz [2] Ryzen 5700G | RX 560 | WD Blue SN550 [3] Ryzen 5600G | Kingston A2000 [4] Ryzen 3600 | GT 740 | 850 EVO [5] Ryzen 3600 | Geforce 405 | 850 EVO (alla är i bruk)

Permalänk
Medlem
Skrivet av maweric:

”Firefox Speedometer 1,2 procent snabbare”

Den var ju rolig och oväntad

Och också fel Det ska egentligen vara 1,2% långsammare om man kollar på resultaten.

Permalänk
Medlem

Var det inte någon ny ARM-processor som skulle köra 4xSMT per kärna? Den typen av arkitektur lär ju läcka som ett såll!

Permalänk
Datavetare
Skrivet av medbor:

Var det inte någon ny ARM-processor som skulle köra 4xSMT per kärna? Den typen av arkitektur lär ju läcka som ett såll!

Du tänker på Cavium/Marwell Thunder X2, det är en out-of-order ARM64 med 4 trådar per CPU-kärna.

Ser inte varför det skulle vara någon skillnad om man har 2, 4 eller 8 trådar (vissa IBM POWER har 8 trådar, finns även någon SPARC men den var in-order så inte påverkad).

Likt Intel och POWER så har Thunder X2 en "unified scheduler", vilket gör att den klarar sig undan SQUIP.

Zen, "Apple Silicon" och numera även Intel E-cores har alla distributed schedulers, men de två senare klara sig från SQUIP (som likt Spectre är en familj av relaterade sårbarheter) då de saknar SMT. Å andra sidan klarade sig Zen från ett par SMT hål som drabbade de andra just p.g.a. sin distribuerade schemaläggare.

Detta är en rejäl "whack-a-mole". Initialt såg det ju ut som AMD gjorde ett genidrag med både distribuerad schemaläggare och att man har mer statisk uppdelning av resurser mellan SMT-trådar jämfört med t.ex. Intel. Detta gjorde att Zen undvek flera sårbarheter.

Nu när EPYC blivit vanligt har intresset ökat, bl.a. för den typ av sårbarheter som Inception har forskarna nu kommit på sätt att förstärka sårbarheter just p.g.a. av den mer statiska uppdelningen av resurser (Intel "klarar" sig lite här p.g.a. att de uppför sig annorlunda på den punkten).

Så ingen design verkar varit "säkrare", man behöver bara lite olika strategier för att attackera respektive design

Tillbaka till Thunder X2 tror inte jag den generellt har färre problem av en enda anledning: likt de flesta Arm-designer är den enklare än prestandamässigt motsvarande x86_64 designer. Mindre komplexitet lär ge färre buggar.

De SMT-specifika buggar bygger på att mer än en tråd delar samma fysiska kärna, kvittar hur många trådar som delar det hela. Vissa SMT-specifika attacker kan faktiskt bli svårare (men inte omöjligt) att göra med >2 trådar då den som attackerar inte vet vilken av de andra trådarna som gör en viss sak. Det gemensamma dessa har är: slår man av SMT "löser" man problemet. En annan lösning som används i t.ex. molntjänster är att en viss användare alltid kör på alla trådar på varje fysisk kärna (så fungerar i praktiken AWS, Azure, Google Cloud, m.fl).

Meltdown var ett resultat av "för mycket kreativitet", man gjorde saker som definitivt var positivt för prestanda men det bröt isoleringen mellan user-space / kernel. Intel var dock långt ifrån ensam om att göra detta fel, finns både 32-bit Arm, ARM64 och POWER designer som gjorde samma miss...

Inception bygger på bl.a. Phantom speculation. Phantom speculation är igen ett resultat av "för mycket kreativitet", Zen får delvis sin prestanda från att den spekulerar kring var hoppinstruktioner bör finnas i instruktionströmmen innan man ens avkodat instruktionen(!!!).

Det är definitivt positivt för prestanda då man väldigt ofta spekulerar rätt, men då man faktiskt inte har någon möjlighet att veta vad som egentligen ligger där blir det svårt skydda sig mot "påhittade sannolika punkter med hopp" (är det som är phantom speculation).

Just det senare är långt osannolikare bug på de ARM64 designer som finns då sådana "trick" ger mer prestanda ju högre man försöker klocka en design. Thunder X2 låg på runt 2,5 GHz, är väl Apple som idag klockar högst och de maxar på 3,7 GHz i nuläget (+ att de saknar SMT).

Skrivit det flera gånger tidigare: jag tror att den vettiga vägen framåt är att förlägga "säkerhetskritiska" saker till speciella in-order CPU-kärnor (med eget minne!). Sedan har man "racing-kärnor" i samma CPU som prioriterar prestanda, är helt enkelt för mycket man har att vinna på att spekulera "hejvilt" samtidigt som det kommer orsaka säkerhetshål.

Delen man först måste kika på är om det är realistisk att programmera en sådan design, men tror det kan fungera med rätt programvarustöd (likt hur Nvidia blivit så framgångsrik med GPGPU, det är väldigt komplicerat att använda utan "rätt" programvarustöd).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

x86/AMD64 kanske egentligen är något vi borde överge med allt bagage de kommer med för bakåtkompatibilitet och all presumtiv exekvering de gör för att försöka öka prestanda (vilket är källan till många av dess problem).
Men sedan är det ju så otroligt mycket som kör på dessa CPU:er att det inte är svårt att förstå varför det inte sker i en handvändning.

Visa signatur

Huvudriggen är en Gigabyte Aorus Xtreme | 128gb DDR5 6000 | Ryzen 7950X | 3080Ti
Utöver det är det för många datorer, boxar och servar för att lista :P

Permalänk
Medlem
Skrivet av inquam:

x86/AMD64 kanske egentligen är något vi borde överge med allt bagage de kommer med för bakåtkompatibilitet och all presumtiv exekvering de gör för att försöka öka prestanda (vilket är källan till många av dess problem).
Men sedan är det ju så otroligt mycket som kör på dessa CPU:er att det inte är svårt att förstå varför det inte sker i en handvändning.

Det inte x86 som är problemet i grunden utan alla out of order designer drabbas av dessa problem förr eller senare man hittar fler buggar på grund av att x86 är populärt.

In order CPU har inte dessa problem men presterar väsentligt sämre A520 är nog bland de bästa av denna typ av CPU.

Visa signatur

i5 10600K, Z490 Tomahawk, Corsair RMX750, GTX 1060 6GB

Permalänk
Datavetare
Skrivet av inquam:

x86/AMD64 kanske egentligen är något vi borde överge med allt bagage de kommer med för bakåtkompatibilitet och all presumtiv exekvering de gör för att försöka öka prestanda (vilket är källan till många av dess problem).
Men sedan är det ju så otroligt mycket som kör på dessa CPU:er att det inte är svårt att förstå varför det inte sker i en handvändning.

Svårt att hitta statistik kring hur många x86-kretsar som sålts totalt, men borde vara någonstans mellan 6-10 miljarder st. Finns uppskattningar att det finns ca 2 miljarder aktiva PC-datorer.

Det säljs 6-7 miljarder Arm-baserade kretsar, per år. Av dessa är 1,5-2 miljarder "out-of-order" designer (övriga är embedded och mikrokontrollers).

Bara Apple säljer nästan lika många CPU-kretsar (Ax/Mx) per år som AMD/Intel säljer x86-kretsar (och alla dessa är "out-of-order" som utför betydligt mer per cykel jämfört med Intel/AMDs senaste). Så går man på volym borde det finnas långt fler kända buggar på Arm.

Det handlar självklart om volym, var ju rätt naivt från de som trodde AMDs CPUer var fundamentalt säkrare jämfört med Intel. Antalet upptäckta sårbarheter hos AMDs CPUer har ju ökat rejält sedan de åter igen fick en relevant marknadsandel, nu hittar man ju hela klasser av sårbarheter som i vissa fall är unika till Zen (precis som man gjorde för Intels mikroarkitekturer tidigare).

Men det handlar också om komplexitet. Finns inte i närheten av lika många "hål" i Atom-serien som det finns i Core-serien, Atom har även den varit "out-of-order" sedan Silvermont som lanserades 2013.

Arm är absolut inte förskonande, de flesta sårbarheter i "spectre-serien" drabbar alla OoO-designer, oavsett om det är x86, ARM64, eller POWER. Är helt övertygad om att den lägre andel sårbarheter hos Arm har samma grundläggande för Intels E-cores: de är enklare (färre transistorer) och har därmed färre möjligheter till fel.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer