Chovani systemu pri nedostatku
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Úterý Květen 9 13:21:23 CEST 2000
On Mon, 8 May 2000, Jaroslav Gratz wrote:
> main(){for(;;) {while(malloc(4096)); sleep(5); }}
>
> Se systémem se budou dít hrozné věci a budete rád, když nebudete muset
> rebootovat. Problém je v tom, že kernel při vyčerpání volné paměti zabíjí
> ty procesy, pro které je potřeba dalsí pamět. Nikoliv proces který zatím
> naalokoval nejvíc paměti.
Uvaha, ze proces, "ktery zatim naalokoval nejvice pameti", za to muze, je
dosti pochybna (pak jako utocnik proste spustim N procesu tak, aby kazdy
zabiral jen X / N pameti...).
> To se dobře projevuje u procesů, které forkují potomky - běží ve sdílené
> paměti a teprve když jeden z procesů zapíše něco do paměti, tak se mu
> vytvoří samostatná stránka. A kernel nezabije proces vlastnící 90% paměti
> a klidně čekající, ale potomka který potřebuje 4KB paměti na novou
> stránku.
> Takže to klidně odskáčou procesy, které "za nic nemůžou".
Ten proces je "vinen" tim, ze chce dalsi stranku. Chybicka ale rozhodne
je, ze (aspon v novejsich jadrech) hned prileti SIGKILL a ani ten proces
nema sanci se nejak zotavit (i kdyz chci videt nekoho, kdo to dokaze
naprogramovat, aniz by se mohl do teze site chytit podruhe).
On Tue, 9 May 2000, Tomas Potok wrote:
> Hmmm..ako sa to riesi na inych systemoch? Nemyslim tym Windows, lebo tie
> maju podobne problemy a ked sa im minie swap, idu velmi rychlo (pekne
> cesky) "do kytek".
Co swap...to kdyz se vycerpa non-swappable memory (to jest ta jaderna),
to jsou teprve pady! (BTW: zrovna u toho VMS jdou nastavovat nejake
parametry, ale nevim, jak to funguje, nikdy jsem se k zive VMSce
nedostal.)
Vyresit tenhle problem je dost obtizne, ale nikdy to asi nebude idealni
(krome utopickeho reseni, kdy se v pripade nedostatku automaticky
doinstaluje dalsi prostor, resp. byrokratickeho, kdy se rekne, ze je
k dispozici tolik a tolik prostoru, a kdyz si ho zaplnite, tak si za
problemy muzete sami). V prvni rade musite bych schopni pro kriticke
subsystemy rezervovat dost prostredku (a to jaksi vertikalne, tj. i uvnitr
jadra) a zajistit, aby s takovym mnozstvim vystacily (at se prihlasi ten,
kdo nekdy naprogramoval slozitejsi program, o ktereho opravdu zna
smysluplny horni odhad na mnozstvi prostredku, ktere postaci k jeho
spolehlive cinnosti).
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux