Portál AbcLinuxu, 1. května 2025 19:37

Linux-VServer - správa výpočetních zdrojů

16. 10. 2007 | Jaroslav Tomeček
Články - Linux-VServer - správa výpočetních zdrojů  

V našem seriálu jsme se dostali na závěr. Zbývá nám již poslední kapitola, která se bude zabývat správou výpočetních zdrojů. V dnešním díle se zaměříme na Linux-VServer, v příštím probereme stejnou problematiku u OpenVZ.

Správa výpočetních zdrojů

Velmi důležitou součástí administrace virtuálních serverů je správa výpočetních zdrojů. Dovoluje změnit limity či upravit přidělení například virtuální paměti serveru, a to i za běhu. Můžeme tedy dynamicky snížit i zvýšit přidělené množství zdroje. Podobnou úpravu v takové míře nejrozšířenější paravirtualizační nástroj XEN neumožňuje.

Linux-VServer i OpenVZ nabízejí utility pro změnu měkkých a tvrdých limitů výpočetních zdrojů, kde tvrdý limit je horním mantinelem rozsahu nastavení měkkého limitu. Tvrdý (hard) limit bývá nastaven z vně virtuálního serveru, měkký (soft) limit je umožněno změnit i privilegovaným procesům příslušného serveru.

Linux-VServer

Linux-VServer rozšiřuje přidělování výpočetních zdrojů z procesů na celé kontexty. Mechanismus vychází z limitů, které můžeme nastavit ve standardním linuxovém prostředí.

V následující tabulce je uveden seznam standardních linuxových výpočetních zdrojů. Sloupce mají tento význam:

ID Jméno proc-fs ulimit jednotka popis
0 CPU -t ms Čas CPU
1 FSIZE -f KiB Maximální velikost souboru
2 DATA -d KiB Maximální velikost datového segmentu
3 STACK -s KiB Maximální velikost zásobníku
4 CORE -c KiB Maximální velikost souboru core
5 RSS RSS -m page Maximální Resident set size
6 NPROC PROC -u 1 Maximální počet procesů
7 NOFILE FILES -n 1 Maximální počet otevřených souborů
8 MEMLOCK VML -l page Maximální locked-in-memory adresový prostor
9 AS VM -v page Maximální adresový prostor
10 LOCKS LOCKS -x 1 Maximální počet držených souborových zámků
11 SIGPENDING -i 1 Maximální počet čekajících signálů
12 MSGQUEUE MSGQ -q Byte Maximum bajtů v POSIX mqueues
13 NICE 1 Maximální možná hodnota nice prio
14 RTPRIO -r 1 Maximální realtime priorita

Linux-VServer rozšiřuje jádro o limity uvedené v následující tabulce:

ID Jméno proc-fs jednotka popis
15 NSOCK SOCK 1 Maximální počet otevřených soketů
16 OPENFD OFD 1 Maximální počet otevřených FD
17 ANON ANON page Maximální velikost anonymous memory
18 SHMEM SHM page Maximální velikost sdílené paměti
19 SEMARY SEMA 1 Maximální počet polí semaforů
20 NSEMS SEMS 1 Maximální počet semaforů
21 DENTRY DENT 1 Maximální počet struktur dentry

Rozlišují se dva typy limitů. Hard limit nastaví hranici, kterou z pohledu virtuálního serveru nelze překonat. Soft limit je hranice nižší nebo rovná hard limitu a pouze privilegované procesy (s povolenou CAP_SYS_RESOURCE capability) jsou oprávněny tento limit změnit.

Linuxové limity (vycházející z SVr4, 4.3BSD, POSIX.1-2001) pro virtuální prostředí můžeme měnit v konfiguraci virtuálního serveru. Vytvoříme odpovídající soubor v adresáři /etc/vservers/<vserver-name>/rlimits. Možné limity jsou: cpu, fsize, data, stack, core, rss, nproc, nofile, memlock, as a locks. Ostatní limity v současných verzích systému není možné upravit. Každý soubor omezuje právě jeden z těchto zdrojů. Může se však vyskytovat ve čtyřech podobách:

Namísto konkrétní hodnoty je možné použít speciální slovo inf, které značí neomezený zdroj.

U běžcích kontextů pro změnu limitů využijeme utilitu vlimit. Její základní syntax je následující:

# vlimit -c xid [-a] [[-H|M|S] --resource value]

Přepínač -c označuje kontextové číslo, přepínač -a vypíše všechny dostupné limity, přepínač -H označuje hard limit, -S soft limit a -M minimální garantovanou hodnotu zdroje. --resource značí zdroj a value jeho hodnotu.

Zdroje, které je možné nastavit utilitou vlimit jsou: cpu, fsize, data, stack, core, rss, nproc, nofile, memlock, as, locks, msgqueue, nsock, openfd, anon, shmem, semary, nsems a dentry.

Linuxové limity SIGPENDING, NICE a RTPRIO nelze pro kontexty omezit.

Paměťové limity

Pro správnou funkčnost paměťových limitů je nutné, aby měl kontext statické číslo.

Paměťových limitů se týkají zdroje as a rss. Resident Set Size (rss) je počet stránek, které jsou k dispozici v RAM. Address Space (as) je celkový počet stránek, které jsou namapovány v každém procesu kontextu.

Pokud virtuální server přesáhne hard limit rss, OOM killer vybere a zabije proces. Soft limit rss je zobrazen jako maximální dostupná paměť. Po překročení hard limitu as není žádný proces zabit, systém pouze ohlásí chybu. Soft limit as není v současné implementaci využit.

Pro správné zobrazování volné paměti z pohledu kontextu musíme vložit do souboru /etc/vservers/<name_of_kontext>/flags řádek virt_mem.

Rozdílný význam mají hard a soft limit při zvýšení jejich hodnoty. Zvýšíme-li limit rss nad původně zvolenou hodnotu jako hard, je rozdíl vrácen ke swap. Pokud jej zvýšíme jako soft limit, je paměť navrácena k volné RAM.

Příště

Probrali jsme konfiguraci limitů hardwarových zdrojů u Linux-VServeru. Mezi jeho nesporné výhody patří fakt, že vychází z původních limitů, které jsou již v Linuxu obsaženy. V příštím díle se podíváme do nepříliš průhledného světa OpenVZ. Tento systém totiž zavádí zcela nové pojmy a postupy, což může nadělat mnoha uživatelům vrásky.

Seriál Virtualizace na úrovni jádra (dílů: 8)

První díl: Virtualizace na úrovni jádra operačního systému, poslední díl: Linux-VServer - správa výpočetních zdrojů.
Předchozí díl: Linux-VServer a OpenVZ - přidělování CPU

Související články

Jaderné noviny: Souborové kvalifikace
Jaderné noviny: KVM 15
Jaderné noviny: Vývoj KVM
Jaderné noviny: /dev/kvm
Jaderné noviny: Patche Xen
Jaderné noviny: Kontejnery procesů
Jaderné noviny: Připojení Linuxu k hypervisorům
Jaderné noviny: Virtualizační rozhraní VMI
Jaderné noviny: Kontejnery a odlehčená virtualizace
Jaderné noviny: API pro virtuální I/O: virtio
Jaderné noviny: Virtuální čas
Jaderné noviny: OpenVZ a checkpointing za běhu
Jaderné noviny: Zdroje: má dáti, dal
Chroot prostředí

Odkazy a zdroje

Linux-VServer.org

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

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

Diskuse k tomuto článku

22.10.2007 22:46 Petr
Rozbalit Rozbalit vše Re: Linux-VServer - správa výpočetních zdrojů
Odpovědět | Sbalit | Link | Blokovat | Admin
Tento článek mi tak trochu přijde jako výpis man stránky. Bez příkladů. Nejsou podrobněji vysvětkeby ony záhadné parametry, asi se předpokládá, že všichni ví co znamenají a jak se použijí. Asi jsem zrovna ve škole chyběl. Pokud chci vserveru nechat max 128 M paměti, drobný swap a max 10% procesoru tak mi ta tabulka nic použitelného neříká. Neuswapuje se to potom? Chtělo by to tedy nějaké příklady z praxe - kombinace různých parametrů a praktické zkušenosti s nimi. Je možné zmírnit dopad DOS útoku mířeného na některý vserver, tak aby dopad na celý stroj byl minimální? Něco jiného však je, pokud přímo majitel vserveru dělá naschvály ....

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