Portál AbcLinuxu, 9. května 2025 00:55

Jaderné noviny - 9. 6. 2016: Přehodnocení swapování

19. 6. 2016 | Redakce
Články - Jaderné noviny - 9. 6. 2016: Přehodnocení swapování  

Stav vydání jádra. Citáty týdne: Kees Cook, Greg Kroah Hartman. Přehodnocení swapování.

Stav vydání jádra

Současný vývojový kernel je 4.7-rc2, vydaný 5. června. Linus k tomu dodal: „Přidal jsem jednu záležitost, která není opravou. Chtěl jsem ji přidat už nějakou dobu, přestože začleňovací okno je již zavřené. Pochybuji, že si vůbec někdo všimne důsledků změny/úklidu pty, což znamená, že odporná stará volba DEVPTS_MULTIPLE_INSTANCES je pryč, protože po úklidu již nebude zapotřebí.“ Pro podrobnosti o změně viz tento nedávný článek.

Stabilní aktualizace: 4.6.2, 4.5.7, 4.4.13 a 3.14.72 byly vydány 7. června. Verze 4.5.7 představuje konec řady 4.5.

Citáty týdne

Po vydání verze 4.6 si spousta lidí stěžovala na omezené použití __ro__after_init v Linuxu, patche ale neposlali. Abych ukázal, jak dosáhnout pokroku v této oblasti, přidávám dvojici patchů pro x86 a ARM. Dostat je ze sady patchů grsecurity/PaX mi zabralo jenom asi hodinu. Vyzývám tedy ostatní, aby v této práci pokračovali – je to celkem jednoduché.

Kees Cook

Pokud v seznamu změn použijete slovo „také“, většinou to znamená, že by patch měl být rozdělen na více částí.

Greg Kroah-Hartman

Přehodnocení swapování

„Swapování“ je něco jako sprosté slovo mezi dlouholetými uživateli Linuxu, kteří nezřídka udělají skoro cokoli, aby se mu vyhnuli. Subsystém správy paměti byl navržen tak, aby se toto vyhýbání usnadnilo, kdykoli to jen jde. Vývojář Johannes Weiner nyní navrhuje dát ve světle posledního vývoje v oblasti hardwaru swapování ještě jednu šanci. Jeho sada patchů obsahuje také výsledky benchmarků, které svědčí o tom, že na něco možná kápl.

Je swapování stále špatné?

Paměť dostupná uživatelům linuxových systémů se dělí na dvě části: jedna je založená na souborech (file-backed) a ta druhá je anonymní. V prvním případě stránky (popř. stránky diskové cache) odpovídají segmentu souboru na disku. Pokud neobsahují nově zapsaná data, která se zatím nedostala až zpět do perzistentní paměti, mohou být tyto stránky jednoduše uvolněny pro jiné účely. Anonymní stránky naopak nejsou svázány se souborem na disku, nýbrž drží data používaná či vytvářená procesy. Opětovné využití anonymní stránky vyžaduje zápis obsahu do swapovacího zařízení.

Platí obecné pravidlo, že uvolňování anonymních stránek pro další použití (swapování) je považováno za mnohem nákladnější než v případě stránek založených na souborech. Jednou z hlavních příčin tohoto rozdílu je to, že stránky založené na souborech je možné číst z perzistentní paměti (nebo je do ní zapisovat) ve velkých, souvislých blocích, zatímco anonymní stránky mají tendenci být náhodně rozptýlené po swapovacím zařízení. Na rotačním úložišti jsou takto rozptýlené I/O operace nákladné, takže swapující systém to notně zpomalí. Je mnohem rychlejší načíst spoustu sekvenčně uložených stránek založených na souborech – a protože soubor je obvykle přímo na disku, nemusí být tyto stránky zapsány v okamžiku dalšího použití.

Swapování je tak pomalé, že se většina administrátorů snaží nakonfigurovat své systémy tak, aby ho bylo třeba co nejméně. V nejextrémnějších případech to může znamenat, že vůbec nenastaví swapovací zařízení. Jedná se o běžnou praxi, která jádro zbavuje možnosti znovu využít anonymní stránky, přestože by tato paměť mohla být využita také jinde. Mezistupněm je použití konfigurační volby swappiness (popsané v tomto článku z roku 2004) k silnému vychýlení systému směrem k využívání stránek založených na souborech. Nastavení swappiness na nulu způsobí, že jádro bude swapovat pouze v okamžiku, kdy dosáhne přetlak paměti krajních mezí.

Johannes začíná vysvětlovat svou sadu patchů poznámkou, že tento mechanismus byl navržen pro charakteristiky rotačních disků. Kdykoli musel disk použitý pro swapování provést operaci seek – což se s náhodně rozptýleným I/O stávalo často – dramaticky poklesla propustnost. Odtud ten silný odpor ke swapování. Johannes dodává, že technologie je dneska jinde, a proto by některá dosavadní rozhodnutí měla být přehodnocena:

„S rozšiřováním zařízení s rychlým náhodným I/O, např. SSD a perzistentní paměti, se swapování stává znovu zajímavým, nikoli však jako krajní možnost, nýbrž jako rozšíření paměti, kterou je možné využít k optimalizaci vyvážení paměti mezi diskovou cache a pracovní sadou anonymních stránek i při mírném zatížení. Naše současná rozhodnutí ohledně opětovného využití stránek nezohledňují potenciál tohoto hardwaru.“

Johannes tvrdí, že systém by měl být nejen ochotnější swapovat anonymní paměť, ale v jistých situacích může být swapování lepší volba než opětovné použití stránek diskové cache. To by mohla být pravda v situaci, kdy je swapovací zařízení rychlejší než úložiště souborů… a platí to také v situaci, kdy systém recykluje potřebné stránky postavené na souborech, zatímco paměť je plná nepoužívaných anonymních stránek.

Kdy swapovat

Prvním krokem v sadě patchů je rozšíření možných nastavení pro volbu swappiness. V současných jádrech může jít od nuly (pokud možno žádné swapování) do stovky (rovným dílem recyklovat stránky anonymní a na souborech založené). Johannes zvyšuje maximum na 200; při této hodnotě bude systém silně upřednostňovat swapování. Jedná se o možnost, o kterou nikdy nikdo předtím nestál, ale díky rychlým diskům se stala užitečnou.

I když bude i nadále existovat využití pro swapovací volby jako swappiness, nejlepší systém je ten, který se ladí sám bez potřeby zásahu správce systému. Johannes tedy pokračuje úpravami mechanismu, který rozhoduje zda recyklovat stránky ze seznamu nejdéle nepoužívaných (LRU) anonymních stránek, nebo ze seznamu LRU stránek založených na souborech. Pro každý seznam zavádí koncept „ceny“ recyklace stránky z příslušného seznamu. Tento kód se potom zaměřuje na seznam s nejnižší „cenou“ opětovného použití stránek.

Prvním krokem je sledování ceny „rotací“ v každém LRU seznamu. Kód správy paměti dělá vše proto, aby znovu používal stránky, které nejsou aktivně využívány. To se provádí tak, že se občas projde seznam a vyčistí se bit indikující, že stránka byla odkazována. U následně použitých stránek bude tento bit nastaven zpět, kdežto ty, které ho při dalším průchodu nemají nastavený, mezitím nebyly použity – u těchto stránek je nejméně pravděpodobné, že budou chybět, a proto jsou první na řadě k uvolnění. Stránky, které odkazovány byly, se „přesunou“ na začátek seznamu, takže dostanou nějaký čas, než se na ně při uvolňování znovu dostane řada.

Tento přesun stojí nějaký procesorový čas. Obsahuje-li konkrétní seznam LRU spoustu odkazovaných stránek, bude průchod poměrně časově náročný v porovnání s malým počtem uvolnitelných stránek. V tomto případě by mělo jádro raději kontrolovat seznamy, které obsahují více nepoužívaných stránek. Za tímto účelem sleduje Johannesova sada patchů počet přesunutých stránek, aby bylo možné stanovit cenu uvolnění stránek z jednotlivých seznamů.

Zatímco přesouvání má svou cenu, tyto náklady jsou nic v porovnání s opětovným používáním stránek, když ty se vzápětí chybně vrácejí do paměti – i když zápis probíhá na rychlé úložné zařízení. A tak Johannes přidal mechanismus, který sleduje tyto stránky, už v roce 2012. V současných jádrech se používá k určení velikosti aktivní pracovní sady v libovolném okamžiku. Tento mechanismus může jádru také říct, zda uvolňuje příliš mnoho stránek anonymních nebo založených na souborech. Poslední patch v této sadě využívá informace o chybných přesunech stránek ke korigování ceny uvolňování z každého seznamu LRU. Pokud se stránky z jednoho seznamu rychle vracejí zpět, zaměří se jádro na jiný seznam.

V současné sadě patchů je cena chybně vrácené stránky nastavena na 32násobek ceny rotované stránky. Johannes v komentářích navrhuje, že tato hodnota je vybrána nahodile a v budoucnu se může změnit. Zatím je cílem, aby chybné přesuny měly převažující podíl na ceně, ale mohou nastat situace, ve kterých jsou chybné přesuny levnější než rotace.

Sadu patchů doplňuje řada benchmarků, které ukazují její vliv na výkon. Benchmark PostgreSQL ukazuje nárůst z 81 na 105 transakcí za sekundu s aplikovanými patchi, přičemž míra chybných přesunů je poloviční a sníží se i zátěž CPU způsobená jádrem. Benchmark I/O streamů, který by neměl vytvořit vážný tlak na paměť, běží v podstatě beze změny. Takže zatím poskytnuté výsledky vypadají dobře.

Změny ve správě paměti představují potenciální nebezpečí a je možné, že tyto změny poškodí jiné typy zátěže. Jediná možnost, jak se přesvědčit, že to nenastane, je testování a revize. Tato sada patchů je celkem nová, obdržela nějaké kladné recenze, ale testování jí stále schází. Takže bude chvíli trvat, než se dostane někam blíž k hlavnímu stromu jádra. Už nějakou dobu je jasné, že správa paměti si vyžádá řadu změn, aby odpovídala současnému hardwaru. Diskutovaná práce může být v tomto směru slibným krokem.

Odkazy a zdroje

LWN.net

Další články z této rubriky

Jaderné noviny – přehled za březen 2025
Jaderné noviny – přehled za únor 2025
Jaderné noviny – přehled za leden 2025
Jaderné noviny – přehled za prosinec 2024
Jaderné noviny – přehled za listopad 2024

Diskuse k tomuto článku

19.6.2016 12:40 karel
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Odpovědět | Sbalit | Link | Blokovat | Admin
Parádní článek,děkuji
Bystroushaak avatar 20.6.2016 11:38 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Odpovědět | Sbalit | Link | Blokovat | Admin
Ehm. Není tohle skvělý způsob, jak ten SSD rychle (měsíce, nízké jednotky let) odpálit?
blog.rfox.eu
20.6.2016 11:56 Xerces
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Odpovědět | Sbalit | Link | Blokovat | Admin
Je to pěkný, ale čtu to už podruhý a pořád nemůžu pochopit ten princip, kdy může být použití swapu výhodnější než nakoupení RAM a vypnutí swapu (takto to řeším já). Při dnešních cenách RAM my příjde divné o swapu uvažovat.
pavlix avatar 20.6.2016 12:02 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Moje řeč, tedy když je to možné. Mám laptop s 16GB RAM a SWAP používám jenom na suspend to disk.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
22.6.2016 00:35 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
To máš sice pravdu, ale to je osobní využití na notebooku. Představ si server ten má často DDR3 1333, pak má cca 10GB/s přenosovou rychlost do operační paměti. Když tam dáš výkoný SSD na PCIe Revodrive nebo Intel tak má přenosové rychlosti, které jsou jen 5-10 krát menší než rychlosti komunikace z operační paměti. Jen 5-10 násobek, ten rozdíl je menší než je rozdíl mezi operační pamětí a interními cachemi procesoru. (můj notebook má 9,8G/18,5G/26G/96G v pořadí paměť/L3/L2/L1 i obyč ssd s rychlostí 500MB/s je jen 20 krát pomalejší než hlavní paměť.) V jistém směru se na to pak člověk může dívat tak, že program fakticky jede z toho SSD a máš k dispozici stovky GB paměti a můžeš v ní mít všechno co potřebuješ "rozjeté" a operační paměť přidává jen další hierachizovanou úroveň cache. Navíc, SSD nemá žádné teoretické omezení na poskytovanou rychlost, to je jen záležitost elektroniky a paralelizace kolem těch čipů. A definice výkonných sběrnicí. Tohle je podle mne směr, kterým se bude použití SSD ubírat, výkonné moduly s vysokou paralelizací a nesoucí permanentní informaci a používané v podstatě jako trvalá paměť. A to co dělá Johannes je dost silně to, co je potřeba udělat na podporu v software.
pavlix avatar 22.6.2016 08:46 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Na notebooku nebo na jiném běžném stroji. Samozřejmě na míru lze postavit ledacos a u serverů se to dělá mnohem líp a pokud to plní svůj účel, tak proč ne. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
24.6.2016 21:04 Love_Dali | skóre: 24
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Hmm, já mám core i5 na 2.5 a 6GB 1333 RAM na notebooku a swap jsem vypnul už tak před rokem a všechno jede, jak má..
25.6.2016 00:00 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Používám swap skoro všude, i na takovémto stroji (swap je na SSD) a občas prostě pomůže.
top - 23:56:59 up 11 days, 23:58, 14 users,  load average: 4,25, 4,41, 4,56
Tasks: 394 total,   2 running, 392 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21,1 us,  2,4 sy, 52,6 ni, 23,7 id,  0,1 wa,  0,0 hi,  0,2 si,  0,0 st
KiB Mem:  24620464 total, 24114708 used,   505756 free,   291492 buffers
KiB Swap:  8388604 total,   233328 used,  8155276 free. 15166088 cached Mem
20.6.2016 19:04 KeNaCo
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Osobne ma napadli niektoré daemony, ktoré viaznu dlho v nečinnosťi ale pri prebudení musia zareagovať rýchlejšie než dovoluje swap rotačneho disku. Ich dáta zbytočne zaberajú miesto na RAMke, ktoré, a tu je druhá podmienka tejto teórie, by lepšie využila nejaká na RAM a čas náročná aplikácia(spominaná db?).

Ale je to taká teória na kolene.. :/
21.6.2016 06:31 fufhu
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Jednym z prikladov je, ze mas otvoreny firefox s 200+ tabmi (ano, divny scenar, ale realny) a znacna cast ramky, plus memory leaky, sa odsvapuju. Popri tom mas na svojom stroji so 16GB ram spustenych 90 instancii unreal tournament 2014 ako simulaciu na diplomovku a dajme tomu ta hra si nechava pri behu v ramke natiahnute menu a vsetky modely postav, ktore ma na disku (takto to nie je). Kazda instancia hry si tak zoberie cca 10 megabajtov. Nie je to velam ale kupit kvoli tomu ramku nema zmysel a ked to odsvapujes, mozes spustit dalsich 10 instancii naviac. Vpodstate zadarmo. A aj pri rotacnych diskoch.

Inak povedane pri neoptimalne pouzivanom/nakodenom sw mozes zadarmo (bez dokupenia HW) ziskat nezanedbatelny vykon navyse.

PS: A isto sa najdu aj pripady, kedy dalsia ramka nie je dokupitelna (starsi hw, alebo malo slotov) a tych par gb swapu moze ulozit leakujucu pamat, ci extra malo pouzivane data a umoznit ostatnym app/os z toho profitovat.
21.6.2016 09:21 Xerces
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Rozumím. S tím prohlížečem to je asi dobrý příklad. Prostě apky, který otevřeš při startu, postupně bobtnají, ale potřebuješ na ně jen tu a tam juknout (pomocí alt+tab) a je výhodnější je mít neustále otevřené, než na ně znovu klikat, aby se otevřeli. No já osobně se tomu stejně snažím vyhnout a swap vypínám právě z toho důvodu, aby mi neswapoval preventivně ikdyž nemusí. Z článku sice vypplývá, že se to dá nakonfigurovat tak, aby swapoval opravdu jen když už nemá kde brát, ale osobně mi 1x za rok nějakej crash z důvodu nedostatku paměti nevadí. Navíc se tak dají dřív i odhalit případné memory leaky.
22.6.2016 00:37 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Můj současná relace ve Firefoxu má 438 tabů :-)
25.6.2016 13:09 R
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Rovnaku diagnozu mal jeden byvaly kolega, mal (v Opere) tolko tabov otvorenych, ze nebolo vidiet ani ikonky. Pouzival tak 5 posledne otvorenych, ale preklikaval medzi nimi naslepo, kedze ich nevedel rozoznat. Nikdy som nepochopil, naco tam ma tie ostatne...
25.6.2016 16:09 tacoberu | skóre: 6
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
To je jednoduché. Je to určitá forma záložek. Máš tam otevřené ty, které tě zajímají, chtěl by sis je přečíst, ale ještě jsi se k nim nedostal. A stále si říkáš, že si je přečteš později.
25.6.2016 16:33 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jaderné noviny - 9. 6. 2016: Přehodnocení swapování
Pád prohlížeče to pak pěkně pročistil a začalo se zase od začátku. Ale od té doby, co prohlížeče průběžně ukládají otevřené záložky a po pádu je obnoví, to není ono.

Tahle záložková metoda má ale jednu slabinu. Člověk v tom prohlížeči pořád vidí to množství otevřených záložek, pořád mu to připomíná, co všechno by měl ještě přečíst, a má z toho špatné svědomí. V tomhle je lepší třeba Pocket – tlačítkem v prohlížeči odešlete stránku k pozdějšímu přečtení, takže máte dobrý pocit, že jste tu důležitou stránku nenechal bez povšimnutí, jenom jste jí odložil na později. Na ten seznam odložených stránek na getpocket.com se ale už nikdy nemusíte podívat, takže vás pak svědomí netrápí. Podobně funguje třeba „odložit na neurčito“ v Inboxu. To jsou báječné funkce.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.