Portál AbcLinuxu, 6. května 2025 13:54
Pomíjivá paměť má hlavně smysl u virtualizace, kdy o odebrání paměti rozhoduje hypervizor. Např. každý virtuál dostane garantované minimum a zbytek nevyužité paměti hypervizoru se půjčí virtuálu, který je zrovna hladový. Prostě se vzácná fyzická paměť přelévá mezi virtuály bez rizika swapování.
Otázka ale je, na co bude virtuálu paměť, jejíž data se mohou kdykoliv ztratit. Právě ten krkolomný případ se swapováním byl jaderný příklad.
V uživatelském prostoru je dobrým příkladem ten váš. Já taky úpím, když mi webový prohlížeč zaplní paměť zbytečnostmi, které si stejně může znovu dotáhnout ze sítě, když zrovna teď potřebuji paměť pro jiný proces a zároveň chci pracovat s prohlížečem (tedy nechci, aby mi ho operační systém odswapoval).
Neexistuje náhodou v Linuxu/POSIXu způsob, jak může jádro říct procesu, že dochází paměť, ať nějakou uvolní?
Otázka ale je, na co bude virtuálu paměť, jejíž data se mohou kdykoliv ztratit. Právě ten krkolomný případ se swapováním byl jaderný příklad.Tipuju, že by mělo být možné zařídit to tak, aby host věděl, že část jeho paměti je pomíjivá. (Stejně jako je možné zařídit, aby věděl, že jeho síťovka ve skutečnosti neexistuje) Potom by se pomíjivá paměť dala používat třeba jako swap či jako cache (samozřejmě jenom pro čisté stránky)
Jen si prostě nedokážu představit jiné využití než cache, která je zálohována něčím jinýmI to už se ale docela hodí. Jednou jsem při testování nahodil na 3GB fyzické paměti 8 virtuálů - každý po 512MB RAM. Samozřejmě po chvíli došlo k tomu, že všechny ty stroje použily svou RAM jako cache, takže ve snaze šetřit I/O ho na hostiteli generovaly mnohem víc, protože ta "cache v paměti" se swapovala na disk. Že by se hodilo mít nějakou možnost říct hostovi "tuhle paměť pokud možno nepoužívej jako cache, protože ve skutečnosti to není paměť", mě napadlo už tenkrát. S pomíjivou pamětí můžeš pro hosty udělat nějaký overcommit paměti a teoreticky by to v nejhorším případě mělo vyjít tak, že se výkon nezmění. Bez ní buď musíš overcommit vynechat, nebo riskovat, že výkon půjde dolů, pokud budou všichni hosti naráz aktivní.
Neexistuje náhodou v Linuxu/POSIXu způsob, jak může jádro říct procesu, že dochází paměť, ať nějakou uvolní?Třeba na AIXu je SIGDANGER, na Linuxu nevím.
Producent-konzument je nazev toho algoritmu uceny na ceskych vysokych skolach. Zadny vyrobce.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.