Az openSUSE Tumbleweed megkezdte az átállást az x86-64-v2 CPU követelményre

Az openSUSE rolling release változata, a Tumbleweed bejelentette, hogy megkezdte az átállást a x86-64-v2 CPU követelményekre. Nemrég felmérték, hogy a közösség mennyire ismeri a mikroarchitektúra-szinteket és az újabb CPU-kra vonatkozó optimalizálásokat, amelyek a teljesítmény javulásához vezetnek:

Az eredményen felbuzdulva bejelentették a tranzíció elindítását. Hogy mi a céldátum, amikorra át szeretnének állni a x86-64-v2 követelményre, az egyelőre nem ismert.

Nem ők az egyetlenek, amelyek a x86-64-v2-nél húznák meg a baseline-t. A Rocky Linux már februárban jelezte, hogy az Red Hat az RHEL 9-cel bevezetné ezt a követelményt.

Hozzászólások

#!/usr/bin/awk -f
 
BEGIN { 
    while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
    if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
    if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2  
    if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
    if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
    if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }
    exit 1
}

trey@alderaan:~$ /tmp/foo 
CPU supports x86-64-v3

trey @ gépház

És Linus még a 486 support fenntartásán dilemmázik :D

De a disztribúciók mindig is "előrébb" jártak a régi vasak dobásában. Mondjuk nem tudom, hogy ez konkrétan mennyi könnyítés lesz nekik, valószínűleg nem sok.

Na akkor azt is megtudtam, hogy a jó öreg N3150 az v2. Ez jó, de már évek óta keresem az utódját (amire használom, arra nem lassú, na de azért mégis alapon), de nem nagyon árulnak 10W alatti fogyasztással érdemben gyorsabbat.

Kicsit megnéztem hogy ez mi is. A hivatkozott Nehalem arch. 2008-ban jelent meg, 14 éve. Szerintem nyugodtan lehetne feljebb is menni.

Eddig úgy tudtam, hogy van olyan technika, hogy az ilyen kiegészítő utasításkészletekhez betesz a fordító egy elágazást és ha nincsen jelen, akkor megcsinálja emulálva. Vagy még jobb, hogy a CPU dob egy "kivételt", amit az oprendszer lekezel úgy, hogy emulálja a hiányzó utasításokat. Túl komplex volna ilyesmivel megcsinálni úgy, hogy a kecske is jóllakjon, meg a káposzta is megmaradjon? A programok legnagyobb része gondolom nem explicit módon használja ezeket az utasításokat, hanem a fordítótól függően.

Pont az a gond, hogy a forditoknak meg van mondva, hogy ne hasznaljak a modern utasitaskeszletet, mert <1% userbase vmi oskovuletet hasznal. A modern vasakon optimalisabban futhatnanak a szoftverek. Vegulis anno a Gentoo ezt probalta megoldani azzal, hogy mindent helyben fordit az adott gephez.

Valoszinu az ilyen extra check-ek/workaroundok is csak tovabb lassitanak a kod futasat, vagy sokkal nagyobb binaris kepzodne, ilyesmik.

Ez olyan specifikus esetben mukodhet, mint pl. a videolejatszok. Ha a kodekek tobbfele CPU-ra le vannak forditva, akkor a videolejatszo be tudja tolteni azt a dll-t/.so-t, amelyik megfelelo az adott gephez.

Nade egy Firefox/Chrome/Java/LibreOffice ne legyen mar 5x nagyobb, mert 5 fele CPU generaciora van forditva.

Azért ez nem a userbase 1%-a, mármint a x86_64 level 1. Igen, optimáliasbban futnak újabb utasításkészletekkel, de egy szinten túl a nyereség egyre marginálisabb, ezzel kell összevetni, hogy hány embert érint. Vitható húzás szerintem. A Fedora meg az Arch a level3-on is elgondolkodott, az utóbbi akár opcionálisan, de végül elvetették.

A másik része, hogy azok a szoftverek, amiknél ezek az extra utasításkészletek sokat gyorsítanának (pl. enkóderek), azoknál eleve szokott kézi ASM tuning is benne lenni, ami opcionálisan nézi ezeket az utasításkészleteket, és ha rendelkezésre állnak, bekapcsolja, ha nem, akkor nem használja őket. Így a nyereség valójában az egyes x86_64 szintek között még marginálisabb a gyakorlatban.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Páran. C2D, C2Q, Phenom, AMD64 Opteron, stb. Nem azt mondom, hogy hű de nagy tömeg, ehhez statisztikák kellenének, de azért belefutni még. Valóban, a level2 sem olyan nagy követelmény már, az összes Core i és AMD FX + Ryzen teljesíti, ezek azért tipikusak. Viszont merültek fel egyes disztróknál level3 követelmények bevezetése, na abból rohadt jogosan lett hőbörgés. Írom ezt úgy, hogy nálam az összes gép level3, egyet kivéve, ami level2 (egy régi i5-2520M-es ThinkPad, de erre soha nem tennék fel OpenSüsü-t, se RHEL-származékot). Level4-em nincs (level3 + AVX512), de azt nem követelik meg kötelezően sehol, bár ki tudja hány év múlva fogják feszegetni, az még egyelőre túl új. AMD fronton csak a Zen4 támogatja, az Intel viszont már a 6. generáció óta.

Egyébként félre ne érts, én szeretem, ha optimalizálnak, a gépeim úgyis támogatják, legalább ki vannak használva a modern hardver képességei. Eleve nem is szoktam annak a pártján lenni, ha valaki nagyon elavult hardverhez meg régi verziókhoz ragaszkodik, haladni kell a korral. De azért a túlzott haladási mániánál is vizsgálni kell, hogy mi éri meg, mire alkalmas az átlag géppark, mennyi a nyereség rajta, stb.. Elég sok embert próbáltam már itt is lebeszélni a HUP-on, hogy hagyják a 32 bites, meg ősi verziós régiségeiket, MBR Legacy/CSM bootot, stb..

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Na mert a kódjaink aztán mindenhol tele vannak az új utasításokkal...

Nincs túl sok új a nap alatt. SIMD téren voltak nagy előrelépések, de ezek is csak elég specifikus feladatoknál segítenek. Már ha megírják egyáltalán, és valószínűleg assembly-ben, mert ezekhez C interfész nem nagyon van. Most persze nem azt mondom, hogy nincsenek ilyen lib-ek, de azok mélyén ott lesz az ASM, mert a C fordító kétlem hogy kitalálná magától, hogy ott SIMD-et kellene használni.

de lehetne csinalni x86-64, x86-64-v2, x86-64-v3 isokat akar. meg i386-os is van.

hatranya ugyanaz mint mikor elromlik az x86-64-es telepitett geped, es atrakod i386-os gepbe a disket es nem indul.

aztan majd latjak melyikbol mennyi letoltes van.

neked aztan fura humorod van...

Akkor már csak az a kérdés, hogy a Spectre és társai hanyas verzióját támogatják :)

Azt már minden támogatja, kernelek tele vannak vele, a régi ágakba (4.x, 5.x) is backportolják, meg a fordítókban is bele van patkolva, csomagok is úgy vannak fordítva, hogy retpoline meg minden be van kapcsolva. Elvileg kernelszinten kikapcsolhatók ezek paraméterrel, de nem éri meg, mert sok esetben lassulást okoznak, ha ki vannak kapcsolva, mert ezekkel nem csak a foltot kapcsolják ki, de a rájuk épített optimalizáckókat is. Bár ez gépfüggő is, hogy melyik prociról beszélünk, hányas gen, a folt a sebességét mennyire érinti.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)