CCoW: Optimalizace funkce Copy-on-Write s ohledem na prostorovou lokalitu v pracovní zátěži, část 2
Apr 02, 2024
Malá velikost stránky může být problematická, protože systémy budou schopny zpracovat velké množství fyzické paměti. S hierarchickou organizací tabulky stránek vyžaduje každý překlad virtuální adresy více přístupů do paměti, jeden pro každou úroveň tabulky stránek, což je nepřijatelné.
Jak lidé stárnou, paměť postupně klesá. Fyzická paměť však není jedním z faktorů, které přímo ovlivňují naši paměť. Paměť souvisí se silou spojení mezi neurony v mozku, se zdravím mozku a s tím, jak často se paměť používá.
V našem mozku jsou neurony propojeny synapsemi. Tyto synapse nás povzbuzují k ukládání a získávání informací. S přibývajícím věkem se však tato synaptická spojení zmenšují, což způsobuje zhoršení naší paměti. Není to proto, že by se naše fyzická paměť snížila, ale protože náš mozek prochází určitými změnami, které ovlivňují naše schopnosti.
Použití našeho mozku nám však může pomoci udržet si dobré vzpomínky. Mozek potřebuje cvičení, stejně jako tělo, potřebuje volný čas a cvičení, aby zůstal zdravý. Rozvíjení dobrých návyků myšlení pomůže vašemu mozku ke zdraví a efektivitě. Například učení se novým věcem, používání paměťových technik, hraní logických hádanek atd. to vše může zlepšit kvalitu a efektivitu vašeho mozku.
Fyzická paměť je tedy jednoduše úložná kapacita, kterou má mozek k dispozici. Naše paměť je úzce svázána s limity toho, čeho může náš mozek dosáhnout. Neustálým cvičením našeho mozku můžeme svou paměť učinit odolnější a udržovat ji na vysoké úrovni. Pro zlepšení paměti bychom se měli zaměřit na procvičování mozku při zachování pozitivního přístupu a dobrých zdravotních návyků. Je vidět, že potřebujeme zlepšit paměť a Cistanche deserticola může výrazně zlepšit paměť, protože Cistanche deserticola má antioxidační, protizánětlivé a anti-aging účinky, které mohou pomoci snížit oxidační a zánětlivé reakce v mozku, a tím chránit zdraví nervového systému. Kromě toho může Cistanche deserticola také podporovat růst a opravu nervových buněk, čímž zlepšuje konektivitu a funkci neuronových sítí. Tyto účinky mohou pomoci zlepšit paměť, rychlost učení a myšlení a mohou také zabránit rozvoji kognitivní dysfunkce a neurodegenerativních onemocnění.

Klikněte na možnost poznat způsoby, jak zlepšit funkci mozku
Aby se zmírnila vysoká režie překladu virtuálních adres na fyzický, mnoho moderních architektur obsahuje mezipaměť pro překlad adres. TheMMU uchovává několik nedávných výsledků překladu v hardwarové logice zvané translationlook-aside buffer, známé také jako TLB.
Obvykle mohou TLB moderních architektur pojmout kolem 500 až 2000 záznamů [6,7]. Záznamy jsou hardwarově indexovány, takže procesorové jádro může velmi rychle vyhledat překlad. Využitím lokality referencí paměti lze provést mnoho překladů adres bez procházení stránkovací tabulky (označované jako TLB hit).
Vzhledem k tomu, že nároky na paměť pro aplikace náročné na paměť rychle rostou, zvyšuje se také počet mapování virtuálních stránek na fyzické pro proces. Kvůli hardwarovým omezením však počet záznamů TLB nemůže držet krok s rychlým růstem požadavků na paměť aplikací. Tím se zvyšuje četnost chyb TLB, což způsobuje úzká hrdla ve výkonu aplikací náročných na paměť [8–11].
K překonání tohoto omezení některé architektury podporují další velikosti stránek větší než velikost základních stránek 4 kB. Například moderní architektury Intel podporují velikosti stránek 2 MB a 1 GB [7]. S tak velkou velikostí stránky může jeden překlad adres pokrýt širší rozsah adres, čímž se efektivně zvýší pokrytí, které může TLB poskytnout se stejným počtem záznamů.
Například systém s 1024 záznamy TLB a velikostí základní stránky 4 KB může poskytnout TLB pokrytí 4 MB, zatímco stejný počet záznamů s 1 GB velkých stránek poskytuje pokrytí 1 TB. Linux využívá obrovskou stránku ve formě průhledných velkých stránek (THPs). Jak již název napovídá, Linux implicitně poskytuje uživatelským procesům obrovské stránky, kdykoli je to možné.
Pokud není povoleno THP, Linux přiděluje paměť procesům v jednotce základní stránky 4 KB. Pokud je povoleno THP, Linux se pokusí alokovat velkou stránku (o velikosti 2 MB) místo základní stránky, což umožňuje hrubozrnné mapování stránky. Tato velká granularita umožňuje efektivní sdílení stránek mezi procesy rodičů a dětí prostřednictvím rozvětvení. V případě, že velké přidělování stránek není v tuto chvíli možné, Linux se vrátí k přidělování základní stránky. Linux pravidelně skenuje adresní prostory procesu, aby našel základní stránky a sjednotil je do velkých stránek.

Byly provedeny studie, které se pokoušely podpořit výkon obrovských stránek a zároveň dále maskovat jejich nedostatky. Ingens [12,13] navrhuje připravit velké stránky asynchronně mimo kritickou cestu.
Hawkeye [14] představuje jemnozrnné schéma propagace obrovských stránek založené na vzorcích přístupu do paměti pro maximalizaci výkonu s minimálním počtem propagací velkých stránek. Zhu a kol. [15] zobecnit procesy používání velkých stránek a optimalizovat životní cyklus velkých stránek. Part a kol. [16] umožňují díry ve velkých stránkách a poskytují flexibilitu při správě paměti s velkými stránkami.
Obrovská stránka je však dvoučepelový meč. Kvůli větší velikosti jednotky managementu trpí alokace stránek vnitřní fragmentací. Pokud je přidělený rozsah adres menší než velká velikost stránky, zbytek stránky nelze využít a dojde k plýtvání. Toto takzvané nafouknutí paměti může výrazně snížit využití paměti na systémech s velkými stránkami [12–17].
Zvýšená velikost stránky může také negativně ovlivnit výkon programu. Moderní OS široce přijímají schéma kopírování při zápisu pro efektivní sdílení paměti mezi procesy. CoW je však zpracováváno pouze se základní granularitou stránek.
Pro zpracování CoW na velké stránce se tedy velká stránka rozdělí na základní stránky a zkopíruje se pouze chybná stránka. Rozbití velkých stránek zabere značné množství času, což má za následek přerušované zpracování chyb dlouhých stránek. V tomto smyslu některé aplikace, dokonce i ty náročné na paměť, nedoporučují používat velké stránky pro stabilní výkon a využití paměti [4,18].
Obecně platí, že v adresovém prostoru procesu existují rozsahy adresního prostoru, kde všechny stránky v rozsahu mají stejná oprávnění a vlastnosti. Pro správu moderní OS obvykle přijímají koncept „virtuální paměťové oblasti (VMA)“, která představuje takové rozsahy adresního prostoru. Stránky v adresovém prostoru procesu můžeme klasifikovat podle jejich původu.

Některé stránky lze načíst ze záložního souboru na sekundárním úložišti, označovaného jako „stránky zálohované souborem“. Zatímco některé stránky jsou dynamicky naplněny bez jakýchkoliv podkladových dat. Stránky pro zásobník a haldu jsou v tomto případě takzvané „anonymní stránky“.
2.2. Fork a Copy-on-Write
Fork je jedno ze standardních systémových volání POSIX pro vytvoření nového procesu. Když proces vyvolá systémové volání fork, vytvoří se nový proces jako potomek volajícího procesu.
Pod kapotou OS vytváří podřízený proces duplikováním celého adresního prostoru procesu volání. To znamená, že podřízený proces by měl začínat se stejnými daty jako nadřazený proces.
Aby bylo možné efektivně zvládnout duplikaci adresního prostoru, většina moderních OS používá techniku kopírování při zápisu (CoW). Aby se duplikoval adresní prostor nadřazeného systému, operační systém nekopíruje každou stránku. Místo toho je tabulka stránek podřízeného procesu vytvořena zkopírováním tabulky stránek nadřazeného procesu.
To efektivně umožňuje sdílené mapování do adresního prostoru nadřazeného systému. Při vytváření sdíleného mapování je oprávnění k zápisu pro každou stránku zrušeno vymazáním bitu oprávnění v odpovídajícím PTE.
Po zkopírování mapování mohou rodiče i dítě číst sdílené stránky jako své stránky. Když jeden z procesů provede přístup ke stránce pro zápis, MMU kvůli nedostatku oprávnění k zápisu spustí chybu stránky. V obslužné rutině chyb stránky OS přidělí novou stránku, zkopíruje původní stránku a aktualizuje odpovídající mapování stránky procesu způsobujícího chybu s písemným povolením.
V tomto okamžiku mohou mít rodič a dítě na stejné virtuální adrese různá data. Tento mechanismus kopírování při zápisu je široce používán jako základní klíčový mechanismus pro realizaci mnoha funkcí virtuální paměti. Konkrétně se čtení neinicializovaných oblastí haldy obvykle provádí pomocí sdíleného mapování na nulovou stránku, což je speciální stránka obsahující všechny nuly.
Kernel same-page merging (KSM) je technika deduplikace stejných stránek v systému. Operační systém skenuje stránky v systému, aby identifikoval stránky se stejnými daty. Když jsou takové stránky nalezeny, operační systém získá zpět všechny stránky kromě jedné a aktualizuje odpovídající tabulky stránek, aby sdílely zbývající stránku.
Při zpracování se zruší oprávnění k zápisu, takže následný přístup k zápisu na stránku je identifikován a zkopírován. Díky vysoké efektivitě kopírování při zápisu se vytváření procesů stává efektivním a některé aplikace náročné na data tuto výhodu využívají k vytvoření kopie dat. .
Jedním z takových případů je Redis, jedna z oblíbených služeb ukládání klíč-hodnota v paměti [4] [19]. Redisis je navržen tak, aby primárně uchovával data v paměti, aby poskytoval vysokou propustnost a nízkou latenci.
Některé aplikace však požadují stálost uložených dat a znovu doplňuje design v paměti pomocí vidlice. Redis aplikuje příchozí požadavky pouze na index a datové struktury v paměti a pravidelně vyvolává systémové volání fork. To efektivně vytvoří podřízený proces s duplikovaným obsahem paměti původního Redisprocess a volající proces (tj. původní proces) pokračuje ve zpracování příchozích požadavků.
Podřízený proces odkloní jeho provádění; pomocí aktuálního obsahu paměti jako snímku serializuje datové struktury v paměti do souborů, čímž zajišťuje trvalost snímku v paměti. Po vyprázdnění snímku se podřízený proces ukončí.
Původní proces může stejným způsobem vytvořit další snímek a při zhroucení systému lze Redis obnovit přečtením posledního snímku. Přestože je fork neocenitelným systémovým voláním, jeho režie byla kritizována.

Baumann a kol. [20] analyzovali vidlici a zjistili, že vidlice způsobuje degradaci výkonu v moderních aplikacích. Například, jak se moderní aplikace stávají složitějšími, OS by měl zvážit přibližně 25 speciálních případů, aby začal zpracovávat systémové volání vidlice, aby odpovídalo specifikaci POSIX. Shrnuli problémy volání forksystem a navrhli vlastnosti, které by mělo mít systémové volání fork pro moderní počítač.
Poskytují také alternativní způsoby výměny vidlice. Zhao a kol. [19] poukázal na to, že implementace vidlice v současných systémech je neefektivní, protože aplikace s velkou paměťovou stopou vyžadují dlouhou dobu na nastavení tabulky stránek. Jako řešení zobecnili techniku kopírování při zápisu tak, aby se tabulka stránek kopírovala na zápisech i na běžných stránkách.
For more information:1950477648nn@gmail.com






