Hlavní navigace

Linuxová záplata na Spectre v2 způsobuje až 50% pokles výkonu

David Ježek

Spolu se spekulativním vykonáváním má problémy další z velkých inovací CPU. Linuxová záplata na kombinaci chyb Spectre a těch v HT vedla k prvnímu uspěchanému řešení, které nebylo dostatečně otestováno.

Doba čtení: 5 minut

Stručné připomenutí

Úvodem připomeňme, že problém, o kterém je nyní řeč, se týká využitelnosti chyby Spectre v2 v kombinaci s děravým Hyper-Threadingem v procesorech Intel. Ty totiž mají tu nepříjemnou vlastnost, že HT vlákna běžící na jednom fyzickém CPU jádru sdílejí datovou L1 cache, takže za pomoci Spectre v2 si může daný proces číst data procesu druhého. Principiálně je toto velký problém ani ne tak pro běžného domácího uživatele, ale pro serverové poskytovatele služeb, mj. třeba virtualizovaných strojů. A týká se Intelu, AMD má toto realizováno ve svých CPU s Hyper-Threadingem (SMT) odděleně – SMP nasadili v podstatě teprve nedávno.

Do linuxového jádra tak zamířily patche, které měly tento problém řešit. Záplatě se obecně říká STIBP (Single Thread Indirect Branch Predictors) a najdeme ji v Linuxu 4.20.

Phoronix tuto verzi přeměřil, přičemž dospěl k hodně smutným číslům: záplata snižuje procesorový výkon v mezních případech až o 50 %, tedy na polovinu. Vzhledem k efektivitě Hyper-Threadingu v současných CPU Intelu lze říci, že výkonnostní dopad aplikace STIBP je přibližně stejně dramatický, jako samotné vypnutí Hyper-Threadingu.

Nedostatek představivosti?

Jelikož oprava probublala až do stabilního jádra, zaskočila i samotného Linuse. Ten věc komentoval mírně naštvaně. Během příprav například nikde nezaznamenal zmínku jak velký dopad na výkon má. Konstatoval, že je pak zjevně lepší prostě HT vypnout, což ostatně opatrní lidé už beztak udělali.

Proč ale vůbec tuhle záplatu dávat ve výchozím nastavení jako aktivní, když ti, kteří potřebují chybu záplatovat, věc beztak již vyřešili vypnutím Hyper-Threadingu? Linus by raději viděl stejnou logiku jako u L1TF: v základu nabídnout nastavení bez dopadu na výkon, varovat uživatele a pokud je tak opatrný, že raději obětuje 50 % výkonu aby se ochránil před teoretickou možností napadení, pak mu tuto možnost poskytnout.

Zkrátka se pravděpodobně nikdo nezabýval tak detailně dopadem záplaty, jako Phoronix po začlenění do jádra. Nikoho tak logicky nemohlo napadnout, že je možná velmi hloupé záplatu ve výchozím nastavení zapnout, což vedle cloudových providerů (kde se setsakra hodí mít tuhle chybu ošetřenou) ochrání i všechny uživatele a jejich video hovory na Facebook Messengeru.

Podobně v Intelu před mnoha lety buď trpěli též nedostatkem představivosti, nebo o potencionálních problémech věděli, ale rozhodli se je ignorovat: podobně jako činitelé NASA byli Thiokolem i svými inženýry informováni o problémech těsnících kroužků v SRB i o nemožnosti simulovat vliv odpadnutí větších bloků pěnové izolace z hlavní nádrže na kapalná paliva.

Ta první ignorace vedla ke zkáze Challengeru (nelze než doporučit Feynmanovu knihu Snad ti nedělají starosti cizí názory), ta druhá ke zkáze Columbie. Možná se nikdy nedozvíme, zdali v Intelu není pár inženýrů, kteří systém Hyper-Threadingu vymysleli, ale drakonické NDA dohody jim znemožnily informovat o bezpečnostních rizicích. Nebo každý, koho to napadlo, dostal finančně neodolatelnou pracovní nabídku v NSA.

Ať žijí konspirační teorie

Situace kolem původních chyb Spectre/Meltdown, informačního embarga a zahrnutí pouze vyvolených partnerů ukazuje na několik věcí. Pokud pomineme naštvanou, ale zcela oprávněnou reakci BSD světa, tak minimálně můžeme na seznam dát položku týkající se toho, jak hluboce je západní společnost společností informační.

Čím větší je bezpečnostní průšvih, tím více se budou snažit největší hráči jej udržet nejdéle pod pokličkou. Můžeme předpokládat, že proto, aby v momentě oznámení byly připraveny a (roz)distribuovány všechny potřebné záplaty a opravy. Konspirační teoretik však bude spíše předpokládat to, že zde může být i snaha vyhovět tajným vládním či nadnárodním entitám v jejich snaze co nejdéle si udržet své šmírovací nástroje.

Možná si někteří vzpomenete na doby před 10 až 20 lety, kdy světem probublávaly na první pohled bláznivé informace i schopnostech NSA ve šmírování celého světa skrze internet a počítače. V principu bychom dnes mohli říci, že toto mohlo být reálné díky technologiím jako Intel Management Engine (IME) a chybám jako Spectre/Meltdown a všech, které se týkají Hyper-Threadingu (který jsme samozřejmě před 20 lety v procesorech Intel neměli, stejně jako IME).

Tvrdá realita

Vše ještě více přiživili lidé jako Jullian Assange, Chelsea Manning, Edward Snowden a další. Ti poukázali na to, že před lidstvem (případně občany USA) je skutečně tajeno mnoho věcí, které NSA (a jiné agentury či organizace) může realizovat pouze pomocí nějakých technických prostředků.

A stejně jako mnoho lidí dodnes věří, že přistání šesti posádek programu Apollo na Měsíci natočil Stanley Kubrick v Hollywoodu, podobně množství bude ochotně věřit tomu, že NSA je schopna si na dálku stahovat data z jejich PC za pomoci IME a Spectre/Meltdown+HT. Vše zcela bez ohledu na to, jestli Američané na Měsíci skutečně přistáli a NSA toto skutečně umí a využívá.

Problém současných procesorů či celých počítačů je v tom, že jde o tak extrémně komplexní systémy, že jen málo lidí na světě dokáže promyslet budoucí dopady jejich architektur a ještě méně lidí skutečně ví, co je v procesorech reálně vytvořeno za struktury. Kdo nevěří, nechť vzpomene na aféru čínských pidičipů v produktech SuperMicro.

Ostatně kdybych chtěl tuto linii úvah převést o kousek dále, tak se stejně tak můžeme zamýšlet nad tím, zdali alespoň jeden člověk na této planetě skutečně ví, co vše obsahuje Linux a jaké to má/může mít důsledky. S ohledem na až post mortem zjištěný dopad STIBP na výkon a Linusovu reakci je zjevné, že Linus tím jedincem není. Kdo jiný?

Jáj… budoucnost

Má Linux vůbec nastavené mechanismy kontroly pro všechny teoreticky možné scénáře? Domnívám se, že nikoli. Nemá to jediný velký softwarový projekt lidstva, možná OpenBSD se tomuto ideálu blíží (Theo de Raadt jasně doporučuje HT prostě vypnout). Jeden mocný člověk před pár lety pravil něco ve smyslu, že „soukromí je přežitek“. Jestli měl pravdu, nechť zhodnotí budoucí historie, každopádně nástroje k realizaci ztráty soukromí už jsme si vytvořili, přičemž nemálo z nich nese logo Intel.

Abych však nekončil pesimisticky: Hyper-Threading na procesorech Intel je věcí s jasně kladným dopadem na aplikační výkon (pokud aplikace umí využít dané množství jader/vláken). První „humpolácké“ pokusy typu STIBP jistě nejsou jedinou a poslední cestou, jak danou chybu opravit. Toto vše doufejme povede vývojáře k nějakým jiným řešením, pokud je možné je na již existujících a chybami zasažených procesorech Intel realizovat.

Našli jste v článku chybu?