Množství paměti
Jak již bylo popsáno v první části, celá paměť se nazývá virtuální paměť a skládá se z fyzické paměti a odkládacího prostoru. Dostupnost fyzické paměti závisí na hardwaru zabudovaném do zařízení a na skutečnosti, kolik paměti může procesor adresovat. Například 32bitové operační systémy mají limit 4G paměti, pouze (2 ^ 32bit), zatímco operační systémy založené na 64bitech teoreticky umožňují až 16 EB (2 ^ 64bit).
Přesněji řečeno, omezením je základní deska se samotným procesorem, paměťové moduly podporované touto základní deskou a konkrétní paměťové moduly, které jsou zapojeny do paměťových slotů na základní desce. Jedním ze způsobů, jak maximalizovat dostupnou paměť systému, je použít podobné paměťové moduly, které mají co největší velikost. Druhým způsobem je použití paměti Swap, jak již bylo vysvětleno v první části.
Přístup do paměti
Dále přichází v úvahu zlepšení rychlosti přístupu do paměti. Nejprve je fyzický limit dán samotným paměťovým modulem. Nemůžete jít pod fyzické hranice hardwaru. Za druhé, ramdisk a za třetí použití zRAM může urychlit přístup do paměti. Budeme diskutovat o těchto dvou technologiích podrobněji.
Vytváření ramdisku
Ramdisk je blok paměti, se kterým operační systém zachází jako s fyzickým zařízením pro ukládání dat - pevný disk, který je zcela uložen v paměti. Toto dočasné zařízení existuje, jakmile se systém spustí a povolí ramdisk, a systém buď vypne ramdisk, nebo se vypne. Pamatujte, že data uložená na takovém RAMDISKU se po vypnutí zařízení ztratí.
Dynamický ramdisk můžete vytvořit pomocí systému souborů tmpfs a prostřednictvím systému souborů ramfs. Obě technologie se od sebe výrazně liší. Nejprve dynamická znamená, že paměť pro ramdisk je alokována na základě jejího využití (platí pro obě metody). Pokud na něm neukládáte data, velikost ramdisku je 0.
Vytvoření dynamického ramdisku pomocí tmpfs je následující:
# mkdir / media / ramdisk# mount -t tmpfs none / media / ramdisk
Vytvoření dynamického ramdisku pomocí ramfs je následující:
# mkdir / media / ramdisk# mount -t ramfs ramfs / media / ramdisk
Za druhé, použití tmpfs a pokud není výslovně uvedeno, je velikost ramdisku omezena na 50% fyzické paměti. Naproti tomu ramdisk založený na ramfs nemá takové omezení.
Vytvoření dynamického ramdisku pomocí tmpfs s relativní velikostí 20% fyzické paměti je následující:
# mkdir / media / ramdisk# mount -t tmpfs -o size = 20% žádný / media / ramdisk
Vytvoření dynamického ramdisku pomocí tmpfs s pevnou velikostí 200M fyzické paměti je následující:
# mkdir / media / ramdisk# mount -t tmpfs -o size = 200M none / media / ramdisk
Za třetí, obě metody zpracovávají swapování jiným způsobem. V případě, že systém dosáhne limitu paměti ramdisku na základě tmpfs, jsou data z ramdisku vyměněna. To maří myšlenku rychlého přístupu. Na druhou stranu operační systém upřednostňuje jak obsah, tak požadované stránky paměti ramdisku na základě ramfs, udržuje to v paměti a vyměňuje zbývající stránky paměti na disk.
Ve výše uvedených příkladech jsme použili / media / ramdisk
jako přípojný bod. Pokud jde o běžná data, jedinou částí souborového systému Linux, která se doporučuje použít na ramdisku, je / tmp
. Tento adresář ukládá pouze dočasná data, která nepřetrvávají. Vytvoření trvalého ramdisku, který ukládá systém souborů / tmp, vyžaduje další položku v souboru / etc / fstab
takto (na základě RAMFS):
Při příštím spuštění systému Linux se ramdisk automaticky aktivuje.
Pomocí zRAM
zRAM znamená Virtual Swap komprimovaný v RAM a vytváří komprimované blokové zařízení přímo ve fyzické paměti. zRAM vstoupí do činnosti (použití), jakmile v systému nejsou k dispozici žádné další stránky fyzické paměti. Poté se linuxové jádro pokusí uložit stránky jako komprimovaná data na zařízení zRAM.
V současné době není k dispozici žádný balíček pro Debian GNU / Linux, ale pro Ubuntu. Jmenuje se zram-config. Nainstalujte balíček a nastavte zařízení zRAM jednoduše spuštěním příslušné služby systemd následujícím způsobem:
# systemctrl start zram-configJak je dáno výstupem z swapon -s,
zařízení je aktivní jako další odkládací oddíl. Automaticky je pro zRAM přidělena velikost 50% paměti (viz obrázek 1). V současné době neexistuje žádný způsob, jak určit jinou hodnotu pro přidělení zRAM.
Chcete-li zobrazit další podrobnosti o komprimovaném odkládacím oddílu, použijte příkaz zramctl
. Obrázek 2 ukazuje název zařízení, kompresní algoritmus (LZO), velikost odkládací oblasti, velikost dat na disku a její komprimovanou velikost a také počet kompresních proudů (výchozí hodnota: 1).
Strategie využití
Dále se zaměříme na strategii využití paměti. Chování využití a distribuce paměti ovlivňuje několik parametrů. To zahrnuje velikost stránek s pamětí - na 64bitových systémech je to 4M. Dále hraje roli výměna parametrů. Jak již bylo vysvětleno v první části, tento parametr řídí relativní váhu danou pro výměnu z runtime paměti, na rozdíl od vynechání stránek paměti z mezipaměti systémových stránek. Také bychom neměli zapomenout na ukládání do mezipaměti a na zarovnání stránky paměti.
Používejte programy, které vyžadují méně paměti
V neposlední řadě závisí využití paměti na samotných programech. Většina z nich je propojena s výchozí knihovnou C (standardní LibC). Jako vývojář zvažte, abyste minimalizovali svůj binární kód, a místo toho použijte alternativní a mnohem menší knihovnu C. Například existují dietlibc [1], uClibc [2] a musl lib C [3]. Web vývojáře musl lib C obsahuje rozsáhlé srovnání [4] týkající se těchto knihoven, pokud jde o nejmenší možný statický program C, srovnání funkcí a odpovídající prostředí sestavení a podporované hardwarové architektury.
Jako uživatel možná nebudete muset kompilovat své programy. Zvažte hledání menších programů a různých rámců, které vyžadují méně zdrojů. Jako příklad můžete použít desktopové prostředí XFCE namísto KDE nebo GNOME.
Závěr
Existuje poměrně málo možností, jak změnit využití paměti k lepšímu. To sahá od Swap po kompresi založenou na zRAM a také nastavení ramdisku nebo výběr jiného rámce.
Odkazy a reference
- [1] dietlibc, https: // www.fefe.de / dietlibc /
- [2] uClibc, https: // uclibc.org /
- [3] musl lib C, http: // www.musl-libc.org /
- [4] srovnání knihoven C, http: // www.etalabs.net / compare_libcs.html
Řada pro správu paměti Linux
- Část 1: Správa paměti jádra Linuxu: Výměnný prostor
- Část 2: Příkazy pro správu paměti Linux
- Část 3: Optimalizace využití paměti Linux
Poděkování
Autor by chtěl poděkovat Axelovi Beckertovi a Geroldovi Rupprechtovi za podporu při přípravě tohoto článku.