Miroslav Lachman wrote on 6. 5. 2019 20:35:
Prihlasim se na stroj, kde podle monitoringu je obsazeno 445MB ve swapu,
spustim top -S -w -o swap
Swap: 4096M Total, 445M Used, 3650M Free, 10% Inuse
Jenze tam sloupec SWAP u vsech procesu zobrazuje OK.
Je to problem topu, nebo swap obsahuje data od procesu, ktery uz nebezi?
Hadam ze ani jedno.
Ocekaval bych, ze system musi dost presne vedet, co do swapu presunul a komu to patri.
Jo, a ne. Management pameti je dost slozita vec.
Pamet presunuta do swapu muze patrit vic nez jednomu procesu, coz se
tyka nejen explicitne sdilene pameti, ale taky implicitne sdileneho
pametoveho prostoru u procesu ve vztahu parent-child (do te doby nez
dojde ze strany childu k zapisu do dane stranky a k copy-on-write).
A neplati ani, ze linearni pamet uz pouzita, ktera je de-mapovana z
fyzickeho prostoru se vzdy zapisuje do swapu - pokud lze data obnovit
odjinud (napriklad slo o kod programu nebo knihovny) tak se obsah proste
zahodi a v pripade potreby obnovi odjinud.
Swap ma ale svuj vlastni management - neni to tak jednoduche jako
linearni seznam bloku velikosti stranky a bitmapa jestli blok je nebo
neni pouzity. Kvuli vykonu je swap rozdelen na zony obsahujici bloky
ruzne velikosti a aktualni pozadavek na zapis do swapu se uspokojuje ze
zony s nejmensim dostacujicim blokem (ktery muze byt ve skutecnosti
daleko vetsi, nez aktualne strankovany kus). A pozdeji se mohou do
pameti nacist jen nektere stranky z takoveho bloku. Takze v "blbym
pripade" muze byt ve swapu spousta jednotlivych stranek ulozenych ve
velkych zonach - a tim je spotrebovano hodne mista ve swapu, ackoliv
prakticky nikdo neswapuje.
System samozrejme vi kde ma kazdy proces kterou stranku a stejne je
mozne se dobrat i informace komu vsemu patri ten-ktery kus swapu, ale
prave tyhle "pohledy" system ke svemu fungovani bezne nepotrebuje a tak
je nedrzi. Takze udelat prave tuhle statistiku je pomerne hodne narocna
operace - proto prislusne funkce vraceji jen odhady.
Ale samozrejme o internim fungovani techto veci vim kulovy...
I ja, a obavam se, ze lidi, ktery drzi v hlave kompletni povedomost o
memory/swap managementu je hodne malo ...
Dan
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l