Vypnutí swapu a velké latence disku

okoloiduci

Vypnutí swapu a velké latence disku
« kdy: 07. 06. 2011, 12:42:03 »
Dobry den,

dlho sa snazim vypnut na serveri swap (ked nieco zacne swapovat, tak je to uz zle a vsetko sa velmi spomali), akurat vzdy to ma velke nasledky. Latencie disku zacnu skakat na 500ms a mySQL databaza zdvihne zatazenie CPU z jednotiek na desiatky percent. Latencie su pozorovatelne napr. aj pri pisani cez SSH, ked sa to miestami "na chvilku" (odhadom mozno tych 500ms) trhne. So skakajucimi latenciami zacne skakat aj load. So swapom ide vsetko v pohode, teda az dokedy nedojde pamat.
Je mi to divne, lebo zapisom na viac miest na disku by sa mali latencie skor zvacsit.

Moja otazka je - mate s takymto niecim skusenosti? Ako obmedzit latencie disku?

Jedna sa o 2 disky zapojene v RAID1; latencie sa spravaju identicky na obidvoch,
hdparm jedneho z nich: http://pastebin.com/TLX4gfK9
sdparm jedneho z nich: http://pastebin.com/ZN9vr0Uy

Dalsie info poskytnem, ked napisete, ako ho ziskat.
« Poslední změna: 07. 06. 2011, 15:18:43 od Petr Krčmář »


trubicoid2

Re: Vypnutie swapu = velke latencie disku
« Odpověď #1 kdy: 07. 06. 2011, 12:55:17 »
no to by delat nemelo
co rika cat /proc/swaps? mas dva oddily na dvou diskach a stejnou prioritu? tedy ne swap na RAID1?
-neusinaji ty disky, pripadne nesnizuji otacky?
-v dmesg nejsou nejaky chyby?
-disky jsou v poradku?
-co AAC? hdparm -M /dev/sda

jakou maji latenci muzes zkusit timto http://www.linuxinsight.com/how_fast_is_your_disk.html

okoloiduci

Re: Vypnutie swapu = velke latencie disku
« Odpověď #2 kdy: 07. 06. 2011, 13:43:10 »
no to by delat nemelo
co rika cat /proc/swaps? mas dva oddily na dvou diskach a stejnou prioritu? tedy ne swap na RAID1?
Tak tu mam RAID1, to asi treba zmenit (ale zase problemy su len bez swapu - nie s nim).

-neusinaji ty disky, pripadne nesnizuji otacky?
Ako je to mozne zistit?

-v dmesg nejsou nejaky chyby?
Nie su tam ziadne chyby tykajuce sa disku (je boot + segfaulty aplikacii) .

-disky jsou v poradku?
Mali by byt (=problemy s nimi neboli, fsck vzdy prejde v pohode; so zapnutym swapom idu ako maju; vyradenie lubovolneho z nich z RAIDu funguje ako ma). Iny sposob testovania nepoznam.

-co AAC? hdparm -M /dev/sda
Kód: [Vybrat]
/dev/sda:
 acoustic      = 254 (128=quiet ... 254=fast)

jakou maji latenci muzes zkusit timto http://www.linuxinsight.com/how_fast_is_your_disk.html
Momentalne to meria munin (podla toho vidim tie skoky latencii); ten program vypisal pre cely disk:
Kód: [Vybrat]
Results: 76 seeks/second, 13.05 ms random access timeco sa mi zda v pohode.

-

Re: Vypnutie swapu = velke latencie disku
« Odpověď #3 kdy: 07. 06. 2011, 14:22:14 »
vypnutim swapu zmensis velkost RAM vyuzitelnu ako diskovu cache, co moze sposobovat tvoj problem.

trubicoid2

Re: Vypnutie swapu = velke latencie disku
« Odpověď #4 kdy: 07. 06. 2011, 14:33:23 »
tak seek a AAM jsou v poradku.

-usinani nebo snizovani otacek je tezka vec, nejlip je to asi slyset, nic nedelej a pak precti neco z disku a kdyz uslysis roztaceni a zaroven se objevi ta pulsekundova prodleva, tak to bude ono

disky muzes otestovat pres S.M.A.R.T:

smartctl -t long /dev/sda a pak smartctl -a /dev/sda

RAID muzes nechat zasynchronizovat pres echo check > /sys/block/md?/md/sync_action a pak cat /sys/block/md?/md/mismatch_cnt

ale tim to asi nebude, to by v dmesg byly nejaky timeouty
a proc vlastne vypinas swap?


okoloiduci

Re: Vypnutie swapu = velke latencie disku
« Odpověď #5 kdy: 07. 06. 2011, 16:27:44 »
-usinani nebo snizovani otacek je tezka vec, nejlip je to asi slyset, nic nedelej a pak precti neco z disku a kdyz uslysis roztaceni a zaroven se objevi ta pulsekundova prodleva, tak to
bude ono
Je mozne to otestovat aj na vzdialenom PC?

disky muzes otestovat pres S.M.A.R.T:

smartctl -t long /dev/sda a pak smartctl -a /dev/sda
Vo vysledku (mimo ine, mozem dat aj cely):
Kód: [Vybrat]
SMART overall-health self-assessment test result: PASSED
RAID muzes nechat zasynchronizovat pres echo check > /sys/block/md?/md/sync_action a pak cat /sys/block/md?/md/mismatch_cnt
Vidim to na moznu chybu tu: mismatch_cnt sa nerovnal 0 u toho RAID swapu, tak som dal repair, znovu check a uz je to nula. Je to problem?

a proc proc vlastne vypinas swap?
Stava sa mi, ze sa mi 1 aplikacia pustena vo viac instanciach zblbne a zacne "besne" alokovat pamat. Vtedy je od zaciatku nedostatku pamati az do vycerpania swapu PC skoro-mrtvy (tj. SSH "zmrzne", dalsie pripojenia timeoutuju). Potom aplikaciu zabije oom-killer a v pohode sa pokracuje dalej (aplikacia sa vdaka spustaciemu skriptu sama znovu nastartuje). Na taketo nieco som si skusal robit skript, ale stale to ucinnostou (zareaguje az po nejakom case) a uspesnostou nema na oom-killer pri vypnutom swape. Skusal som obmedzenia userov a pod, ale to tiez nema 100% ucinnost - nielenze aplikacia nespadne, ale ked sa toto zacne diat vo viackrat naraz (bezi viac instancii), tak si nepomozem. Aplikaciam chcem dovolit vyuzivanie celej volnej RAM, ale len ked to je treba. Na opravu v aplikacii cakam; chcel by som to poistit na urovni systemu (celkom zle, ze obycajny user, pod ktorym aplikacia bezi, tak moze odpisat vsetkych ostatnych, vratane roota).

vypnutim swapu zmensis velkost RAM vyuzitelnu ako diskovu cache, co moze sposobovat tvoj problem.
Dobry napad - je mozne to naspat zvysit alebo to obist?

Vdaka

Logik

  • *****
  • 1 047
    • Zobrazit profil
    • E-mail
Re: Vypnutí swapu a velké latence disku
« Odpověď #6 kdy: 07. 06. 2011, 16:56:04 »
Kdyby byl nedostatek paměti, tak systém zešnekovatí i se swapem, tím to podle mě nebude. Koneckonců jak seš na tom s procesama. Co píše
top
a co
iowait -dx


Re: Vypnutí swapu a velké latence disku
« Odpověď #7 kdy: 07. 06. 2011, 17:34:58 »
Vypnutí swapu se v linuxu nedoporučuje - vím že jsem kdysi viděl někde nějaký velmi konkrétní důvod proč to nedělat, ale teď dogooglím jenom že "v kernelu spousta kódu předpokládá že swap existuje a v opačném případě šílí".

Doporučené řešení je udělat malý (32M?) swapfile na ramdisk ...

(já měl svého času 4K swapfile a fungovalo to)

Re: Vypnutí swapu a velké latence disku
« Odpověď #8 kdy: 07. 06. 2011, 20:53:26 »
Swap na ramdisk zní hodně šíleně. Tím nechci tuto radu shazovat. Spíše je to trošku zarážející.

okoloiduci

Re: Vypnutí swapu a velké latence disku
« Odpověď #9 kdy: 07. 06. 2011, 21:50:41 »
top
a co
iowait -dx
"iowait" je program? V akom baliku? Top:
Kód: [Vybrat]
Tasks: 344 total,   6 running, 338 sleeping,   0 stopped,   0 zombie
Cpu(s): 44.5%us,  4.7%sy,  0.0%ni, 49.3%id,  0.2%wa,  0.0%hi,  1.4%si,  0.0%st
Mem:   8044020k total,  7170304k used,   873716k free,    57164k buffers
Swap:  7815164k total,   134016k used,  7681148k free,  3398792k cached
Vypnutí swapu se v linuxu nedoporučuje
Vdaka za info; ja tak bezim doma uz min. pol roka, preto ma to napadlo.

Swap na ramdisk zní hodně šíleně. Tím nechci tuto radu shazovat. Spíše je to trošku zarážející.
Tjn, vacsieho swapu v ramdisku ako par MB by som sa bal - predstava, ze kernel presuva pamat, aby ju odswapoval bez nejakych ziskov (a potom naspat, aby ju mohol pouzivat) je mi trochu proti srsti.

Logik

  • *****
  • 1 047
    • Zobrazit profil
    • E-mail
Re: Vypnutí swapu a velké latence disku
« Odpověď #10 kdy: 07. 06. 2011, 22:14:41 »
blbnu iowait,
iostat -dx
:-)

Logik

  • *****
  • 1 047
    • Zobrazit profil
    • E-mail
Re: Vypnutí swapu a velké latence disku
« Odpověď #11 kdy: 07. 06. 2011, 22:22:57 »
Jinak - swapu máš evidetnně zaplácnuto méně, než volné paměti, v tom problém není. Zbytek těžko říct: 0.2% procesů ve stavu iowait je v pohodě, v tom by problém neměl být. Daleko zajímavější by byly ty samé informace při vypnutém swapu, kdy to blbne.

Mordae

Re: Vypnutí swapu a velké latence disku
« Odpověď #12 kdy: 08. 06. 2011, 09:42:06 »
Pokud mas problem s procesem, ktery zacne silene alokovat pamet a chtel bys, aby radeji sletel, tak pouzij cgroup nebo ulimit. ;-)

pro Fedoru neco jako:
Kód: [Vybrat]
mkdir /sys/fs/cgroup/memory/aplikace
pgrep aplikace >/sys/fs/cgroup/memory/aplikace/tasks
echo $(( 1024 * 1024 * 128 )) >/sys/fs/cgroup/memory/aplikace/memory.max_usage_in_bytes

Je treba to pustit po kazdem spusteni te dane aplikace. Myslim, ze na to existuje i daemon cgred, ale ten mi nikdy poradne nefungoval.

trubicoid2

Re: Vypnutie swapu = velke latencie disku
« Odpověď #13 kdy: 08. 06. 2011, 13:09:50 »
Je mozne to otestovat aj na vzdialenom PC?

no prave to automaticky snizovani rychlosti jde blbe zjistit, nejlip je to slyset
usinani by slo zjistit pomoci hdparm -C /dev/sda, ale on samotnej ten prikaz se poprve nacte z disku, cimz ho roztoci...

Vo vysledku (mimo ine, mozem dat aj cely):
Kód: [Vybrat]
SMART overall-health self-assessment test result: PASSED

no to neni az tak dulezity, dulezitejsi jsou polozky s vysledky testu, t.j. treba:
# 2  Extended offline    Completed without error       00%      5838         -

test pustis smartctl -t long /dev/sda

Vidim to na moznu chybu tu: mismatch_cnt sa nerovnal 0 u toho RAID swapu, tak som dal repair, znovu check a uz je to nula. Je to problem?

no mohl by to byt problem, zalezi jestli se to jeste projevi, taky mozna tvoje distribuce v ukoncovacich skriptech prvne vypne raid a potom az vypne swap, coz by mohlo delat nejakou neplechu

rozhodne nedelej swap v raid1 ale udelej dve swap partice na obou diskach a potom jim ve fstabu dej stejnou prioritu, aby se pouzivaly soucasne, tedy neco jako raid0

Re: Vypnutie swapu = velke latencie disku
« Odpověď #14 kdy: 08. 06. 2011, 13:42:28 »
no prave to automaticky snizovani rychlosti jde blbe zjistit, nejlip je to slyset
usinani by slo zjistit pomoci hdparm -C /dev/sda, ale on samotnej ten prikaz se poprve nacte z disku, cimz ho roztoci...

A nestaci se podivat do smartu, jestli se nezvysuje pocitadlo Start_Stop_Count? Tim aspon zjistim, jestli se disk nezastavuje. (o snizovani rychlosti nic nevim)