Linuxi sĂŒdamiku seadistamine GlusterFS jaoks

Artikli tÔlge on koostatud kursuse alguse eelÔhtul «Linuxi administraator. Professionaalne».

Linuxi sĂŒdamiku seadistamine GlusterFS jaoks

Aeg-ajalt tekivad kĂŒsimused Glusteri soovituste osas tuuma seadistamiseks ja kas see on vajalik.

Selline vajadus tekib harva. Enamikul koormustel töötab tuum vĂ€ga hĂ€sti. Kuigi on ka teine kĂŒlg. Ajalooliselt tarbib Linuxi tuum meelsasti palju mĂ€lu, kui talle selline vĂ”imalus anda, sealhulgas vahemĂ€lu kasutamise puhul peamise jĂ”udluse tĂ”stmise viisi.

Enamikul juhtudel töötab see suurepÀraselt, kuid suure koormuse korral vÔib see pÔhjustada probleeme.

Meil on suur kogemus mĂ€lu intensiivselt kasutavate sĂŒsteemide, nagu CAD, EDA jne, osas, millel on olnud aeglane töö kĂ”rge koormuse korral. Ja mĂ”nikord oleme Glusteri osas probleemidega silmitsi seisnud. PĂ€rast mitme pĂ€eva jĂ€lgimist mĂ€lu ja kettade ooteaegade osas saime nende ĂŒlekoormuse, tohutud iowait'id, tuuma vead (kernel oops), hangumised jne.

See artikkel on paljude eksperimentide tulemus parameetrite seadistamiseks erinevates olukordades. TĂ€nu nendele parameetritele mitte ainult, et ĂŒldine reageerimine paranes, vaid ka klaster stabiliseerus oluliselt.

Kui asi puudutab mÀlu seadistamist, siis tuleb esmakordselt vaadata virtuaalmÀlu ala (VM, virtual memory), millel on palju vÔimalusi, mis vÔivad teid segadusse ajada.

vm.swappiness

Parameeter vm.swappiness mÀÀrab, kuivĂ”rd tuum kasutab swapimist vĂ”rreldes ĂŒlesmĂ€lu. Algkoodis mÀÀratletakse see ka kui «tendency to steal mapped memory» (kalduvus varastada kaardistatud mĂ€lu). KĂ”rge swappiness'i vÀÀrtus tĂ€hendab, et tuum on kalduvam kaardistatud lehti vĂ€lja viskama. Madal swappiness'i vÀÀrtus tĂ€hendab vastupidist: tuum viskab lehti vĂ€hem vĂ€lja. TeisisĂ”nu, mida kĂ”rgem on vÀÀrtus vm.swappiness, seda rohkem sĂŒsteem kasutab swap'i.

Suure swapimise kasutamine ei ole soovitatav, kuna operatiivmÀlu laadib sisse ja vÀlja tohutuid andmeplokke. Paljud vÀidavad, et swapiness'i vÀÀrtus peab olema kÔrge, kuid minu kogemuse kohaselt viib jÔudluse suurendamine selle seadistamisega «0».

Rohkem saab lugeda siit — lwn.net/Articles/100978

Kuid jĂ€llegi, neid seadistusi tuleb rakendada ettevaatlikult ja ainult pĂ€rast konkreetse rakenduse testimist. Suure koormusega voogedastusrakenduste puhul tuleks see vÀÀrtus seada „0” peale. Muutmine „0” peale parandab sĂŒsteemi reageerimisvĂ”imet.

vm.vfs_cache_pressure

See parameeter kontrollib mÀlu, mida tuum kasutab katalooge ja indeksideskirju (dentry ja inode) seadistamiseks.

Algselt vÀÀrtusel 100 proovib tuum vabastada dentry ja inode vahemĂ€lu „Ôigluse” alusel vĂ”rreldes pagecache ja swapcache'ga. vfs_cache_pressure'i vĂ€hendamine pĂ”hjustab, et tuum hoiab dentry ja inode vahemĂ€lusid. Kui vÀÀrtus on „0”, ei eemalda tuum kunagi dentry ja inode vahemĂ€lu mĂ€lu puuduse (memory pressure) tĂ”ttu, mis vĂ”ib kergesti pĂ”hjustada mĂ€lupuuduse viga. vfs_cache_pressure'i suurendamine ĂŒle 100 seab dentry ja inode vĂ€ljalaskmise prioriteediks.

GlusterFS-i kasutamisel vĂ”ivad paljusid suuri andmehulkadega kasutajaid ja vĂ€ikeste failide arvu tĂ”ttu serveris oluliselt kasutada lĂ€bi inode/dentry vahemĂ€lu mĂ€rkimisvÀÀrne hulk RAM-i, mis vĂ”ib viia jĂ”udluse vĂ€henemiseni, kuna tuum peab töötlema andmestruktuure sĂŒsteemis, kus on 40 GB mĂ€lu. Selle parameetri seadmine ĂŒle 100 aitas paljudel kasutajatel saavutada Ă”iglasemat vahemĂ€lu haldust ja parandada tuuma reageerimisvĂ”imet.

vm.dirty_background_ratio ja vm.dirty_ratio

Esimene parameeter (vm.dirty_background_ratio) mÀÀrab protsendi mĂ€lust, kus on mÀÀrdunud lehed, saavutades, mil peab alustama mÀÀrdunud lehtede foonset salvestamist kettale. Seni, kuni seda protsenti ei saavutata, ei salvestata lehti kettale. Ja kui salvestamine algab, toimub see foonreĆŸiimis, katkestamata töötavaid protsesse.

Teine parameeter (vm.dirty_ratio) mÀÀrab protsendi mĂ€lust, mida vĂ”ivad hĂ”ivata mÀÀrdunud lehed enne sundvĂ€listamist (forced flash). Kui see lĂ€vi saavutatakse, muutuvad kĂ”ik protsessid sĂŒnkroonseks (blokeeruvad) ja neil ei lubata jĂ€tkata, kuni nende kĂŒsitud sisend-vĂ€ljundoperatsioon on tegelikult lĂ”petatud ja andmed on kettal. Suurte sisend-vĂ€ljundide koormuse korral tekib probleem, kuna andmete vahemĂ€lu puudub ja kĂ”ik sisend-vĂ€ljundit teostavad protsessid blokeeruvad ootama sisend-vĂ€ljundit. See toob kaasa palju tĂ”kestatud protsesse, kĂ”rge koormuse, ebastabiilse sĂŒsteemi töö ja kehva jĂ”udluse.

Nende parameetrite vÀÀrtuste vĂ€hendamine toob kaasa selle, et andmed kirjutatakse sagedamini kettale ja ei jÀÀ OĆœU-sse. See vĂ”ib aidata sĂŒsteemidel, millel on suur hulk mĂ€lu, mille jaoks on normaalne kirjutada kettale 45–90 GB suuruse lehekĂŒlje vahemĂ€lu, mis toob kaasa tohutu ooteaja frontend- rakendustele, vĂ€hendades ĂŒldist reageerimisvĂ”imet ja interaktiivsust.

«1» > /proc/sys/vm/pagecache

LehekĂŒlje vahemĂ€lu (page cache) on vahemĂ€lu, kuhu salvestatakse failide ja kĂ€ivitatavate programmide andmeid, see tĂ€hendab, et need on lehed, millel on tegelike failide vĂ”i plokkseadmete sisu. Selle vahemĂ€lu eesmĂ€rk on vĂ€hendada kettalt lugemise arvu. VÀÀrtus «1» tĂ€hendab, et vahemĂ€lu kasutab 1% OĆœU-st ja kettalt lugemise operatsioone on rohkem kui OĆœU-st. Selle parameetri muutmine ei ole vajalik, kuid kui olete lehekĂŒlgede vahemĂ€lu ĂŒle ÀÀrmiselt tĂ€helepanelik, vĂ”ite seda kasutada.

«deadline» > /sys/block/sdc/queue/scheduler

Sisend-vĂ€ljundi planeerija (I/O scheduler) on Linuxi tuuma komponent, mis haldab lugemis- ja kirjutamisjĂ€rjekordi. Teoreetiliselt on nutika RAID-kontrolleri jaoks parem kasutada «noop», kuna Linux ei tea ketta fĂŒĂŒsilisest geomeetriast midagi, seega on tĂ”husam lasta kontrolleril, kes teab geomeetriat, töödelda pĂ€ringud vĂ”imalikult kiiresti. Kuid tundub, et «deadline» suurendab jĂ”udlust. Roykide planeerijate kohta saab rohkem lugeda Linuxi tuuma allika dokumendist: linux/Documentation/block/*osched.txt. Ja olen samuti tĂ€heldanud lugemise lĂ€bilaskevĂ”ime suurenemist segatud operatsioonide (palju kirjutamisoperatsioone) ajal.

«256» > /sys/block/sdc/queue/nr_requests

Sisend-vĂ€ljundiga kĂŒsimuste arv puhvrisse enne, kui need edastatakse planeerijale. Teatud kontrollerite sisemiste jĂ€rjekordade (queue_depth) suurus on suurem kui planeerija sisend-vĂ€ljundikĂŒsimuste nr_requests, mis tĂ€hendab, et planeerijal on vĂ€he vĂ”imalusi kĂŒsimuste Ă”igesti prioriseerida ja liita. Deadline ja CFQ planeerijate puhul on parem, kui nr_requests on kaks korda suurem kui kontrolleri sisemine jĂ€rjekord. KĂŒsimuste ĂŒhendamine ja ĂŒmberjĂ€rjestamine aitab planeerijal suure koormuse korral olla reageerivam.

echo «16» > /proc/sys/vm/page-cluster

Parameeter page-cluster reguleerib lehekĂŒlgede arvu, mis kirjutatakse swap'i korraga. Ülaltoodud nĂ€ites mÀÀratakse vÀÀrtus «16» vastavalt RAID-i ribasuurusele (stripe size) 64 KB. See pole mĂ”istlik, kui swappiness = 0, kuid kui olete seadnud swappinessi vÀÀrtuseks 10 vĂ”i 20, siis aitab selle vÀÀrtuse kasutamine, kui RAID-i ribasuurus on 64 KB.

blockdev —setra 4096 /dev/<devname> (-sdb, hdc vĂ”i dev_mapper)

Paljude RAID-kontrollerite vaikeseaded vĂ”ivad pĂ”hjustada kohutavat jĂ”udlust. Ülaltoodud valiku lisamine seadistab ennetava lugemise 4096 * 512-baytiste sektorite jaoks. VĂ€hemalt voogesituse puhul suureneb kiirus, tĂ€ites seadme sisseehitatud vahemĂ€lu ennetava lugemise ajal, kui tuuma ettevalmistamiseks kulub aega. VahemĂ€lusse vĂ”ivad paigutuda andmed, mida kĂŒsitakse jĂ€rgmise lugemise ajal. Liigne ennetav lugemine vĂ”ib hĂ€vitada juhusliku sisend-vĂ€ljundi suuremate failide jaoks, kui see kasutab potentsiaalselt kasulikku ketta aega vĂ”i laeb andmeid vahemĂ€lust vĂ€ljapoole.

Siin on veel mĂ”ned sĂŒsteemifaili taseme soovitused. Kuid neid pole veel testitud. Veenduge, et teie failisĂŒsteem teab ribasuurust ja ketaste arvu massiivis. NĂ€iteks, et see on RAID5 massiiv ribasuurusega 64K kuue ketta peal (tegelikult viie, kuna ĂŒks ketas on kasutusel pariteedi jaoks). Need soovitused pĂ”hinevad teoreetilistel oletustel ja on kogutud erinevatest RAID-ekspertide blogidest/-artiklitest.

-> ext4 fs, 5 ketast, 64K riba, ĂŒhikud 4K plokkides
mkfs -text4 -E stride=$((64/4))
-> xfs, 5 ketast, 64K riba, ĂŒhikud 512-baytistes sektorites
mkfs -txfs -d sunit=$((64*2)) -d swidth=$((5*64*2))

Suuremate failide jaoks vĂ”ib kaaluda ĂŒlaltoodud ribade suuruste suurendamist.

TÄHELEPANU! KĂ”ik, mis on eespool kirjeldatud, on mĂ”nede rakendustĂŒĂŒpide jaoks ÀÀrmiselt subjektiivne. See artikkel ei garanteeri mingite parenduste saavutamist ilma vastavate rakenduste eeltestimiseta kasutaja poolt. Seda tuleks rakendada ainult siis, kui on vajalik sĂŒsteemi ĂŒldise reageerimisvĂ”ime parandamine vĂ”i kui see lahendab olemasolevaid probleeme.

Lisaressursid:

Linuxi sĂŒdamiku seadistamine GlusterFS jaoks

Loe rohkem

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster