“Néhány ember egy finom ital mellett lazít a medence mellett, én pedig úgy lazítok, hogy az inline [Assembly kóddal] játszok”– ez egy szép idézet a napról, ahogy Linus Torvalds elmagyarázta, miután javítani kezdett egy teljesítményoptimalizáló javításon, amelyet a felhasználók számára javasoltak. a folyamatban lévő Linux 6.5 egyesítési ablak.
A csum_partial teljesítményoptimalizáló javítását ma elküldtük a következő címen: x86/egyéb lekérési kérés. Miközben Linus Torvalds átnézte a kódot, megjegyzést fűzött a a levelezőlistához:
“Őszintén szólva, a javítást nézve a reakcióm az, hogy”miért bontották ki 64 bájtos darabokban, ha 40 bájt a varázslatos érték”?
Különösen, ha van, hogy”csináljon egy 32 bájtonként hajtson végre műveletet, hogy függetlenné tegye a 32 bájtos darabokat, és növelje az ILP-t”. Tehát még a 64 bájtos eset sem *valójában* végez 64 bájtos kibontást, hanem valójában két 32 bájtos kibontást végez párhuzamosan.
Tehát három”varázslatos”értéke van, és a Valószínűleg csak a 40 bájtos számít igazán.
Igen, igen, a 64 bájt a szokásos cacheline-méret, és”hagyományos”a kibontáshoz. De nincs ebben semmi varázslatos.
A végeredmény: nem lett volna jó, ha csak 40 bájtos darabokat készítünk, és a 64 bájtos „két egymást átfedő 32 bájtos darabot” a 40 bájtos darabok közül kettővé alakítjuk.
Olyan, mint a (TELJESEN NEM TESZTELT!) csatolt javítás?
Még egyszer: ez *nem* tesztelt. Gyorsan megnéztem a generált szerelvényt, és nagyjából úgy nézett ki, mint amire számítottam, de lehet, hogy teljes szemét.
Csak azért tettem hozzá pár”valószínű()”dolgot, mert így természetesebbnek tűnt a generált asm (azaz követte az ottani forráskód sorrendjét), ezek egyébként megkérdőjelezhető annotációk.
Végezetül: említettem már, hogy ez teljesen teszteletlen?”
Az üzenet elküldése után rájött egy egyszerű hibára a kézzel írt Assembly kódjában, és hozzáadva:
“…Ezt úgy vettem észre, hogy még egyszer megnéztem a tapaszt. Nem történt tényleges *tesztelés*. Lehet, hogy még mindig bugos szemét, még azzal a”+r”-rel is. Ez csak egy kicsit *kevesebb* bugos szemét.
Most visszamegyek a barlangomba, és folytatom a cuccok húzását, csak valami mást kellett csinálnom egy ideig. Vannak, akik egy finom ital mellett lazítanak a medence mellett, én pedig az inline asm-mel játszva lazítok.”
Linus Torvalds végül egyesítette az eredeti csum_partial optimalizálási javítást, miközben a verziója további megjegyzéseken/megbeszéléseken megy keresztül.
Borislav Petkov, az AMD Linux mérnöke, aki kezelte az x86/misc lekérést válaszolt Linus Torvalds üzenetére:
“És van egy harmadik fajta, aki egy jó ital mellett lazít a medence mellett, *miközben* az inline asm-mel játszik. ;-P”