Portál AbcLinuxu, 20. května 2024 17:18

Jaderné noviny – 13. 6. 2013: Hotplug paměti

1. 7. 2013 | Luboš Doležel
Články - Jaderné noviny – 13. 6. 2013: Hotplug paměti  

Aktuální verze jádra: 3.10-rc5. Citáty týdne: Russell King, Linus Torvalds, Arjan van den Ven. Plány na přidávání a odebírání paměti za běhu.

Obsah

Aktuální verze jádra: 3.10-rc5

link

Aktuální vývojová verze jádra je 3.10-rc5 vydaná 8. června. Linus dal v oznámení jasně najevo, že nemá moc radost z patchů, které dostával ke konci cyklu. Pánové, pánové. Jesli mi nepřestanete posílat nekritické věci, tak budu zase muset začít klít. Takže jestli další žádost o přetažení bude obsahovat „pročištění“ nebo nesmyslný šum, tak si vás vezmu do úst a vymyslím nové způsoby, jak urazit vás, vaši matku a vašeho mrtvého křečka.

Stabilní aktualizace: 7. června vyšlo pět stabilních jader: verze 3.9.5, 3.4.48 a 3.0.81 od Grega Kroah-Hartmana, Kamal Mostafa vydal ze stabilních stromů Canonicalu verzi 3.8.13.2 a Luis Henriques pak verzi 3.5.7.14.

Verze 3.9.6, 3.4.49 a 3.0.82 se aktuálně revidují. Jejich vydání lze čekat 13. června nebo později.

Citáty týdne: Russell King, Linus Torvalds, Arjan van den Ven

link

Pokud se firmy vrhnou na vývoj hranatého kola a *kvůli tomu* přijdou o možnost začleňovat zpět do hlavní řady jádra, kvůli čemuž budou mít mnohem těžší přechod k novějším verzím, pak ano, *máme* z toho radost.

-- Russell King

Nebýt nahodile schopen se VŮBEC připojit k bezdrátovým sítím bych nenazýval platným modelem „řízení rychlosti“.

-- Linus Torvalds

V první řadě bychom měli přestat uvažovat o volbě frekvence [CPU] (alespoň na x86). Tato myšlenka je už 6 let mrtvá.

-- Arjan van de Ven

Plány na přidávání a odebírání paměti za běhu

link

Yasuaki Ishimatsu z Fujitsu na japonském LinuxConu hovořil na téma stavu hotplugu paměti se zaměřením na to, co je pro podporu přidávání i odebírání paměti nutné. Když se vám v laptopu nebo desktopu rozbije paměť, tak ji můžete jednoduše vyměnit, ale u serverů, hlavně pak těch, co musí trvale běžet, je to složitější. Kromě toho by možnost přidávat a ubírat paměť umožnila dynamickou rekonfiguraci systémů, kde je hardware rozčleněn mezi dvěma nebo více virtuálními stroji.

Práce na hotplugu paměti se zaměřuje na oba scénáře: rozbitý hardware a dynamickou rekonfiguraci. Podle Ishimatsua bude hotplug paměti podporován v KVM. Aktuálně to zvládá několik operačních systémů, ale Linux to ještě úplně neumí. Náprava je cílem této práce.

Hotplug paměti má dvě fáze: fyzické přidání nebo odebrání paměti a logická změna dostupné paměti v systému (přepnutí paměti do stavu online nebo offline). Obě fáze musejí být dokončené dřív, než může Linux paměti používat a přepnutí do stavu offline je nutné před fyzickým odebráním.

Subsystém správy paměti spravuje fyzickou paměť pomocí dvou struktur. Tabulky stránek obsahují přímé mapování mezi virtuálními a fyzickými adresami. Mapa virtuání paměti spravuje struktury stránek. Pro odpojení paměti je nutné jakoukoliv paměť přesunout pryč a tyto datové struktury zaktualizovat. Stejně tak když se paměť přidává, tak je nutné přidat nové položky do tabulky stránek a mapy virtuální paměti.

Stránky se spravují v zónách a při používání paměťového modelu s dírami (sparse memory model) u systémů s hotplugem jsou zóny rozděleny do sekcí po 128 MB. Sekce se do stavu offline z online a obráceně přepínají pomocí souboru /sys/devices/system/memory/memoryX/state. Zapsáním offline nebo online do tohoto souboru se stránky v této sekci změní na použitelné nebo nepoužitelné.

Od jádra 3.2 je přidávání paměti plně podporováno. Logické odpojování je podporováno s omezeními a fyzické odebrání není podporováno vůbec. V červenci 2012 byly spuštěny práce na odstranění omezení odpojování a podpoře fyzického odebrání.

Práce na fyzickém odebrání byla začleněna do verze 3.9. Zneplatňuje položky tabulky stránek a mapy virtuální paměti odpovídající odebírané paměti. Ale protože paměť musí být nejprve odebrána logicky než je odstraněna fyzicky, tak omezení vztahující se k přepnutí do stavu offline stále znemožňují fyzické odebrání.

Jakmile paměť, která se má odebrat, obsahuje data, pak tato data jsou přesunuta do jiné paměti v systému. Ale jediné stránky, které lze takto přesunout, jsou cache stránek a anonymní stránky, které jsou také známé jako „přesunutelné“ stránky. Pokud paměť obsahuje nepřesunutelnou paměť, kterou Ishimatsu nazývá „jaderná paměť“, pak tuto sekci nelze přepnout do stavu offline.

Jsou zvažovány dva způsoby, jak tento problém vyřešit. Prvním je podporovat přesun jaderné paměti. Výhodou je to, že všechnu paměť lze přepnout do stavu offline a také nulový výkonnostní dopad na systémy NUMA, protože nevznikají žádná omezení na typy alokací, které lze dělat. Na druhou stranu se ale musí zcela změnit vztah mezi fyzickými a virtuálními jadernými adresami. Alternativou je učnit veškerou paměť uzlu přesunutelnou, což by znamenalo znovupoužití stávající funkčnosti přesunutelné paměti, ale znamenalo by i to, že by tam bylo možné ukládat jen paměť cache stránek a anonymních stránek, což by mělo dopad na výkon daného uzlu NUMA.

Ishimatsu řekl, že osobně dává přednost první variantě, ale jako první krok zatím implementují to druhé: tedy vytvoření uzlu, který obsahuje pouze přesunutelnou paměť. Linux zná přesunutelné zóny (neboli ZONE_MOVABLE), ale zóny tohoto typu nejsou vytvářeny automaticky. Pokud se uzel skládá jen z přesunutelné paměti, pak je možné ji všechnu přesunout jinam a uzel pak může být přepnut do stavu offline.

Nová bootovací volba movablecore=acpi, která se aktuálně vyvíjí, použije strukturu přidruženosti paměti (memory affinity) v tabulce statické přidruženosti prostředků ACPI (SRAT) ke zvolení toho, které uzly budou sestaveny z přesunutelné paměti. Nyní lze movablecore použít k nastavení určitého množství paměti, která bude v systému přesunutelná, ale dochází k rovnoměrnému rozdělení napříč uzly namísto soustředění na vybraných uzlech. Příznak „hotplugovatelnosti“ u uzlu ve SRAT bude použit k výběru cílových uzlů v novém uzlu.

Použití příznaku online_movable v souboru state ve sysfs (namísto prostého online) umožňuje administrátorovi přikázat systému, aby daná paměť byla přesunutelná. Bez toho je online paměť považována za ZONE_NORMAL, takže může obsahovat jadernou paměť a nemusí být možné ji přepnout do stavu offline. Funkce online_movable byla začleněna do verze 3.8. To redukuje stávající omezení, ale stále na tom ještě zbývá práce.

Kromě přidání bootovací volby movablecore=acpi (a snad i sysctl vm.hotadd_memory_treat_as_movable) existují i další plány. Hledání cesty, jak stránky paměti a mapy virtuální paměti vložit do čerstvě přidané paměti je něco, co by Ishimatsu rád viděl, protože by to na daném uzlu zlepšilo výkon, ale zase by bez možnosti přesunu těchto datových struktur pak nebylo možné uzel přepnout do stavu offline. Aktuálně přemýšlí nad možnými řešeními. Přesun dat vmalloc() na jiné uzly při přepnutí uzlu do stavu offline je další funkcí, která je zvažována.

Přesun jakékoliv jaderné paměti z uzlu je něco, co by rád Ishimatsu viděl, ale řešení jsou ještě nejistá. Účastníci konference byli vyzváni, aby se účastnili diskuze a pomohli najít řešení.

Odkazy a zdroje

Kernel coverage at LWN.net: June 13, 2013

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

Jaderné noviny – přehled za duben 2024
Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023

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