- 9082 megtekintés
Hozzászólások
+subscribe
OFF: Ijedtemben belepillantottam a házi szerverem is használ swap -et! Nincs mysql van apache és samba no meg cups. Ja és vagy húsz torrent. Mindez 4G RAM -al. Jó lenne tudni, mi is kerül a swapbe.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Ezért kár volna eret vágnod, valamennyi swap használat teljesen normális és előnyös is. A gond akkor van ha a kernel túl sokszor használja a swap területet (a si és so oszlopok a vmstat esetén). Ha azok az számok picik, mondjuk 10 alatt vannak, vagy jobbára 0 az értékük, akkor akár 100G swapot is megehet a gép anélkül, hogy lassulással kéne számolnod.
- A hozzászóláshoz be kell jelentkezni
Én ezért nem adtam swapot a gépnek. Toljon csak mindent a memóriába és ha esetleg elfogyna (4G egyébként), akkor majd felcsatolom a swapfilet és békesség. Eddig 2,5 G fölé sosem ment még akkor se ha Eclipse - NetBeans ment egyszerre meg pár KDE alkalmazás XFCE alatt.
-- "Bízzál Istenben és tartsd szárazon a puskaport!" - Cromwell ---- Sayusi Ando - http://sayusi.hu --
- A hozzászóláshoz be kell jelentkezni
van egy rossz hírem: ha elszabadul valami, akkor ha lenne swap, akkor azt vennéd észre, hogy ezerrel pörög a diszk, nagyon lassú a géped, és ugyan kurva lassan, de tudsz valami tenni az ügy érdekében (top, aztán kill -9). ha nincs swap, akkor egyszercsak megáll a géped, és lehet nyomni a reset gombot.
- A hozzászóláshoz be kell jelentkezni
Nem inkább csak jön az OOM killer, és esetleg kevésbé kesztyűs kézzel lőné ki a memóriafaló processzt, mint ő tenné? (SIGTERM helyett SIGKILL, vagy hasonlóra gondolok.) Kötve hiszem, hogy az egész rendszere lefagyna.
:wq
- A hozzászóláshoz be kell jelentkezni
Személyes tapasztalatról beszéltem. Hogy miért nem jött neki össze, azt nem tudom, de azt igen, hogy jó pár dolog leállt a gépen, de azokat a processzeket, amiket kellett volna, azokat valahogy nem találta el (ill. 1-2 perc után az ember megunja és megkeresi a reset gombot).
- A hozzászóláshoz be kell jelentkezni
Egyszer írtam C++-ban egy -bénára sikerült- fa-osztályt, aminek olyan jól sikerült a konstruktora, hogy elég volt egyetlen node-ot létrehozni, és máris a teljes memória fraktálszerűen telelett a fával. :)
Na ezt viszont szépen kezelte az OOM, csak innen ugrott be.
:wq
- A hozzászóláshoz be kell jelentkezni
az OOM killer alapból azt a processzt lövi ki, aki a legtöbb memóriát foglalja.
- A hozzászóláshoz be kell jelentkezni
A swap nem ellenség ám... bekapcsolt swap és 0 swapiness mellett épp az általad jónak tartott hatást éred el.
- A hozzászóláshoz be kell jelentkezni
És ezt hol tudom beállítani?
-- "Bízzál Istenben és tartsd szárazon a puskaport!" - Cromwell ---- Sayusi Ando - http://sayusi.hu --
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Köszi! Pont jó nekem! :)
-- "Bízzál Istenben és tartsd szárazon a puskaport!" - Cromwell ---- Sayusi Ando - http://sayusi.hu --
- A hozzászóláshoz be kell jelentkezni
+1 (subs)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ez mennyiben válasz a problémámra? Mivel az alap dolgokat tárgyaló írást linkeltem feltételezem, hogy felfedeztél valami alap hibát a beállításaimban. Megosztanád velem, hogy mi volt az?
- A hozzászóláshoz be kell jelentkezni
A problémád Te magad vagy.
Az alap tézis az, hogy minden Op.rendszernek szüksége van a Swap-ra.
A stílusod elég érdekes, de ezt most hagyjuk.
http://www.linux.com/news/software/applications/8208-all-about-linux-sw…
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
nehéz ilyenkor szavakat találni
- A hozzászóláshoz be kell jelentkezni
Meglehet, ezért is kértem tanácsot.
Bővebben kifejtve: nem az a gondom, hogy swapol a gép, mert azt már korábban is leírtam, hogy az nem baj. A baj az, hogy bő 1G szabad ram és újabb bő 1G filecache mellett miért kezd el swapolni mint állat.
Az egyik lehetőség, hogy valamelyik alkalmazás ami a gépen fut, az próbál befoglalni 2G+ memóriát, bár az szerintem nem így néz ki.
A másik lehetőség a mysql + sok ram + nagy innodb buffer több esetben előfordult problémája, amire sokféle "megoldást" szültek (swapoff -a ; swapon -a, vagy ramdiskre swapolni), de belátható hogy egyik se életbiztosítás.
Plusz - mint írtam, és a fentiekből látszik is - magát a mysql-t betoltam egy olyan memóriaterületre, ami nem swapolódhat ki (elméletileg), ám valami miatt a gép mégis bebolondul néha.
Adalék lehet, hogy ráindítottam egy os + data mentést és egy mysqldump-ot is, hogy mind az fs cache mind a mysql terhelve legyen (közben futott a zabbix is, ami tekerte a db-t, bár ha a msqldump lockolt valamit, akkor az úgyis várni kényszerült), és nem bírtam megdönteni a gépet. Nappal viszont, normál terhelés mellett mégis beőrült, tehát a teszt rossz volt.
Leszedtem a gépről minden olyan futó szolgáltatást ami nélkül még tudunk élni, meglátom, hogy most mi lesz. Lehet, hogy tényleg kevés a memória, de az is lehet, hogy az OpenVZ miatt van halál, vagy valami más próbálja felfalni a memóriát.
Addig is szívesen veszek minden építő ötletet, de ha lehet hanyagoljuk a man mkswap szintű hozzászólásokat.
- A hozzászóláshoz be kell jelentkezni
Valszeg high order allocation, try 2.6.38+
- A hozzászóláshoz be kell jelentkezni
Végiggondolva az eseményeket ez egész esélyes lehet. Boot után a gép teljesen egészséges, nem lehet ledönteni, de pár nap után - addigra széttöredezik a memória? - gyakorlatilag egy könyvtárváltásba bele tud dőlni.
Viszont csak 2.6.32-ig találtam OpenVZ patch-et, addig amíg lépnek, marad a rambővítés, hátha segít valamennyire.
Illetve az, hogy nagyon gyorsan leköltözöm a konténerekkel a gépről.
Amúgy van valami egyértelmű jele a töredezett memóriának? Valami, amit lehet figyelni, pl. hogy mekkora a legnagyobb lefoglalható, egybefüggő memória?
- A hozzászóláshoz be kell jelentkezni
A /proc/buddyinfo mutatja, hogy a szabad memória mennyire összefüggő.
Esetleg még a mysql temp table jut eszembe, amit már diszkre rak. Ha a tmpfs -t használja erre (pl. /tmp - ami a default), akkor az átmenetileg nagyobb ram+swap használatot okozhat és egy ritka select is triggerelheti.
A rambővítés biztos segíteni fog, ha a kernel kötött, mást nem tudsz tenni.
- A hozzászóláshoz be kell jelentkezni
No, ha megint halna akkor nézem a buddyinfo-t.
"Sajnos" ez a gép nem a tmpfs-t használja, ezt épp nem állítottam át:
Temporary tables created on disk: 2% (2K on disk / 76K total)
- A hozzászóláshoz be kell jelentkezni
Esetleg hasznos lehet, hogy van egy ilyen plugin:
http://exchange.munin-monitoring.org/plugins/buddyinfo/details
Magyar fejlesztés, ehe.
Ezt átkalapáltam magamnak, hogy byte-okban rajzolgasson, mert nem tudok fejben számolni, így viszont szépen látszik, hogy miképpen fogy (egyelőre) és/vagy töredezik a memória (később?).
Momentán viszonylag egészségesnek tűnik.
- A hozzászóláshoz be kell jelentkezni
Szerintem nem igazán hasznos a grafikon, mert túl gyorsan változhat a helyzet, a munin grafikon nem elég nagy felbontású ehhez (időben) és az sem látszik rajta, hogy milyen allokációs igények érkeztek.
Ha meg akarsz bizonyosodni arról, hogy egy high order allocation indítja be a swappelést, akkor SystemTap-hoz kell nyúlni, hacsak nem elégedsz meg a kizárásos bizonyítással. A VM alrendszerben van pár hasznos trace a SystemTap-hoz.
- A hozzászóláshoz be kell jelentkezni
Valóban, a rajzból elég kevés látszik akkor, amikor tényleg halál van. Most viszont jól látszik, hogy bő 2 nap uptime után a szabad memória fele 4k-s, másik fele meg 8k-s vagy nagyobb darabokban van, a foglalások viszont jobbára a 8k-s darabokból történnek és teret nyer a sok 4k-s darab. Gyanítom, hogy amint elfogynak az egybefüggő, 8k-s vagy nagyobb területek, na akkor fog a gép fejre állni, amint valakinek 4k+ memória kell.
Azt meg meg tudom tenni, hogy akár másodpercenként elteszem a buddyinfót, utólag lehet majd nézegetni.
Mire ezt begépeltem, tovább romlott a helyzet:
# cat /proc/buddyinfo
Node 0, zone DMA 2 2 3 1 2 2 0 0 1 1 3
Node 0, zone DMA32 8875 134 1 3 0 2 4 2 1 0 0
Node 0, zone Normal 1368 68 2 2 1 0 1 1 1 0 0- A hozzászóláshoz be kell jelentkezni
Hát, úgy néz ki, hogy mégse... döglés közben megnéztem a buddyinfo-t, és bőven voltak viszonylag nagy, egybefüggő memóriadarabok, és közben swap in/out is volt. Ha jól értem, akkor swap in-nek nem kellett volna lennie, mert a mm úgy csinált volna egybefüggő területeket, hogy kilökött volna valami (nagyobb?) processzt a memóriából a swap-ba, majd onnét visszakanalazta volna, újbólrendezve a memóriafoglalást. Tehát vagy so vagy si van, de egyszerre nincs a kettő (pláne nem 3G nem használt memória mellett).
Update: mégis? Ehe.
Haldoklás közben adtam még 20G swap-ot, de természetesen az nem segített, csak a gép icipicit reszponzívabb volt, több felé tudta osztani a disk i/o-t.
Utána felszabadítottam 58db HugePage-et ami bő 100M, de 3.5G szabad ram mellett nyilván nem jelentős mennyiség, és a gép _azonnal_ észhez tért. Ez a 100M ugye szép nagy, egybefüggő terület (volt, ehe).
Ez mind-mind közvetett bizonyíték, de nekem elég, most lökdösöm le az utolsó konténert, sajnos ez van a legjobban teletömve mindennel.
- A hozzászóláshoz be kell jelentkezni
próbáld ki freebsd-vel is ilyen-e, ha nem: problem solved
- A hozzászóláshoz be kell jelentkezni
A mysql kapcsán felmerült swap probléma pl. solaris esetén nem jön elő. Viszont a környezett adott, és lehet, hogy a linux ilyen béna, de az is lehet, hogy én nézek be valamit.
Tüneti kezelésnek rendeltem még memóriát, mert olcsó, ám félek, hogy ezzel csak elodázódik a probléma, és nem oldódik meg.
- A hozzászóláshoz be kell jelentkezni
(optional) x összegért megcsinálom a migrációt
- A hozzászóláshoz be kell jelentkezni
Nem tudnad legalabb a debug idejere logolni hogy mit csinal az a mysql?
Lehet, hogy valami nagyon benezett lekerdezes fut rajta, akkor meg hiaba nezelodsz a swap kornyeken.
Esetleg megnezheted meg, hogy a solarisos geped mysql konfigja miben ter el ettol.
Gondolom postgres csere nem jatszik.
--
Tudod te, mennyi lóvé fér egy Alstom-kocsi dobozába? :)) - laspalmas, VB
- A hozzászóláshoz be kell jelentkezni
Nincs solarisos gépem, azt a freebsd-s ötletre írtam,hogy más rendszereket ez a jellegű probléma nem jön elő.
A nagyon benézett lekérdezés túl tud lépni a mysql beállított limitjein? Illetve okoz-e nagy mértékű swap foglalást 2G felhasználható ram mellett?
Marad még dap javaslata, a kernelcsere. Bár mivel a ram úgyis megjön kb. kedden, lehet hogy megvárom míg Debiánék pattintanak új kernelt, még ha az lesz vagy egy év is.
- A hozzászóláshoz be kell jelentkezni
Ha nem undorodsz az Ubuntutól, akkor Natty alatt már 38-as kernel van, és elvileg mindent ami debianos el tudsz rajta futtatni, bár az áttérés nem tudom mennyire szívás. (Cserébe viszont az Ubuntura sokkal hamarabb vannak új dolgok a jövőben is, de akár a régieket is megtarthatod LTS-el.)
cat /proc/version:
Linux version 2.6.38-10-generic (buildd@yellow) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) ) #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 201
- A hozzászóláshoz be kell jelentkezni
Nem undorodom, de mint írtam, a környezet adott. Valamit ahogy szintén írtam, még nincs OpenVZ patch az újabb kernelekhez. Legalábbis én nem találtam.
- A hozzászóláshoz be kell jelentkezni
? df -T|grep tmpfs
- A hozzászóláshoz be kell jelentkezni
12:00:01 memtot memfree buffers cached slabmem swptot swpfree _mem_
12:10:01 7991M 1443M 192M 1158M 130M 1903M 1491M
12:20:01 7991M 1425M 194M 1171M 130M 1903M 1491MHugePages_Free: 695
Hugepagesize: 2048 kBszorozd meg 2048-al a 695-öt.
- A hozzászóláshoz be kell jelentkezni
1423360, mit nyertem?
- A hozzászóláshoz be kell jelentkezni
> 1423360, mit nyertem?
Szerintem zároltad a szabad memória ekkora részét (~1.4G) az OS elől. Tudtommal hugepage terület az nem swap-pelhető, és a normál helyfoglalás sem használhatja fel. Olyan szabad terület, ami mégiscsak foglalt, ezért igazából le kéne vonni a memfree-ből.
- A hozzászóláshoz be kell jelentkezni
Jól tudod, nem swapelhető(*). Ám azonnal le is zárolja, amint a foglalás megtörténik, hogy más ne férjen hozzá, tehát nem látszik mint szabad memória.
*) Épp ezért használom
- A hozzászóláshoz be kell jelentkezni
Ha nem találod meg itt a választ és feldobod a kérdést külföldi levlistára, akkor ha tudod, majd légyszíves írd meg mire jutottál. Köszi.
- A hozzászóláshoz be kell jelentkezni
Úgy néz ki, hogy a megoldás az új kernel lett:
Szépen látszik a piros sáv térnyerése, gondolom akkor rámolt át pár memóriablokkot, hogy legyenek jobban egybefüggő darabok. A szabad memória megugrása intenzív NFS forgalom után volt (napi mentés, meg én tesztelgettem, hogy mivanmá').
Az nem nagyon látszik a grafikonon, hogy az új kernel előtt sose volt szabadon 4k-s blokk, most viszont mindig van valamennyi. Közben megjött a memória, van beépítem ma délután vagy ha nem lesz rá időm akkor majd a jövő héten, és akkor hátha lesz szebb diagramom.
Ps.: miért nem tudom rávenni az rrdgraph-ot hogy magasabb képet rajzoljon? Megadtam a --height=400 paramétert a munin pluginben és nem veszi figyelembe. Az --only-graph pl. működött, csak ez nem.
- A hozzászóláshoz be kell jelentkezni
"miért nem tudom rávenni az rrdgraph-ot hogy magasabb képet rajzoljon? Megadtam a --height=400 paramétert a munin pluginben és nem veszi figyelembe."
graph_args --rigid
- A hozzászóláshoz be kell jelentkezni
bookmark :)
- A hozzászóláshoz be kell jelentkezni