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