Fórum Root.cz

Hlavní témata => Server => Téma založeno: okoloiduci 07. 06. 2011, 12:42:03

Název: Vypnutí swapu a velké latence disku
Přispěvatel: okoloiduci 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.
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: trubicoid2 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
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: okoloiduci 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.
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: - 07. 06. 2011, 14:22:14
vypnutim swapu zmensis velkost RAM vyuzitelnu ako diskovu cache, co moze sposobovat tvoj problem.
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: trubicoid2 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?
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: okoloiduci 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
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: Logik 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

Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: Karel Karlik 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)
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: Vít Šesták (v6ak) 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í.
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: okoloiduci 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.
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: Logik 07. 06. 2011, 22:14:41
blbnu iowait,
iostat -dx
:-)
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: Logik 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.
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: Mordae 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.
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: trubicoid2 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
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: Mirek Prýmek 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)
Název: Re: Vypnutí swapu a velké latence disku
Přispěvatel: trubicoid2 08. 06. 2011, 14:11:58
mas pravdu

ja mam seagate co se nezastavuje a pise Start_Stop_Count 301 a zaroven Power_Cycle_Count 301

a doma mam zeleny samsungy, ktery jen snizi rychlost
Název: Re: Vypnutie swapu = velke latencie disku
Přispěvatel: okoloiduci 10. 06. 2011, 16:41:09
ulimit uplne dobre nefunguje - zamedzi alokaciam, ale program nezleti (iba pise, ze nema pamat). Tak je zaroven sluzba nedostupna a aj pamat zabrana.
Power_Cycle_Count je o 2 mensi ako Start_Stop_Count (38), takze tu chyba skor nie je. (ale Spin_Up_Time je az 1000). Da sa to nejak rozumne obmedzit?