Linuxi tuumade seadistamine GlusterFS jaoks

Artikli tÔlge on ettevalmistatud kursuse alguseks «Administrator Linux. Professional».

Linuxi tuumade seadistamine GlusterFS jaoks

Kaasas on aeg-ajalt kĂŒsimusi Glustermi tuumaseadistuse soovituste kohta ja kas see on vajalik.

Tegelik vajadus tekib harva. Enamikul koormustel töötab tuum vÀga hÀsti. Kuigi on ka teiselt poolt. Ajalooliselt tarbib Linuxi tuum meelsasti suures koguses mÀlu, kui tal seda vÔimaldatakse, sealhulgas mÀlukaotuse kaudu, mis on peamine viis jÔudluse suurendamiseks.

Enamikel juhtudel töötab see suurepÀraselt, kuid suurte koormuste korral vÔib see pÔhjustada probleeme.

Meil on suur kogemus mĂ€lutarbimist vajavate sĂŒsteemide, nagu CAD, EDA ja sarnaste, töötlemisel, mis hakkasid suure koormuse korral aeglustuma. Ja mĂ”nikord oleme kokku puutunud probleemidega Glusteris. PĂ€rast mitme pĂ€eva jooksul jĂ€lgimist kasutatud mĂ€lu ja kettaseisakute aegade osas saime nende koormuse, tohutu iowaiti, tuuma vead (kernel oops), hangumised jne.

See artikkel on paljude katsete tulemus, kus on seadistatud parameetreid erinevates olukordades. Nende parameetrite abil on paranenud mitte ainult ĂŒldine reageerimisvĂ”ime, vaid ka klaster on mĂ€rgatavalt stabiilsem.

Kui rÀÀgitakse mĂ€lu seadistamisest, tuleb esmalt vaadata virtuaalse mĂ€lusĂŒsteemi (VM, virtual memory) poole, millel on palju valikuid, mis vĂ”ivad teid segadusse ajada.

vm.swappiness

Parameeter vm.swappiness mÀÀrab, kui palju tuum kasutab vahetust (swap, podkatk) vĂ”rreldes operatiivmĂ€lu kasutamisega. Algkoodis on see samuti defineeritud kui «tendency to steal mapped memory» (kaldumine varastada kaardistatud mĂ€lu). KĂ”rge swappiness'i vÀÀrtus tĂ€hendab, et tuum on tĂ”enĂ€olisem, et vabastab kaardistatud lehekĂŒljed. Madal swappiness'i vÀÀrtus tĂ€hendab vastupidist: tuum vabastab vĂ€hem lehekĂŒlgi mĂ€lust. TeisisĂ”nu, mida kĂ”rgem on vÀÀrtus vm.swappiness, seda enam sĂŒsteem kasutab vahetusmĂ€lu.

Suur swap'i kasutamine pole soovitatav, kuna mÀllu laaditakse ja sealt eemaldatakse suuri andmepakette. Paljud vÀidavad, et swapnessi vÀÀrtus peaks olema kÔrge, kuid minu kogemuse kohaselt parandab jÔudlust selle seadmine '0'-le.

Lisainfot leiate siit — lwn.net/Articles/100978

Kuid need seaded tuleb siiski rakendada ettevaatlikult ja ainult pĂ€rast konkreetse rakenduse testimist. KĂ”rge koormusega voogedastusrakenduste puhul tuleks see seade seadistada '0'-le. Seadmisega '0' paraneb sĂŒsteemi reageerimisvĂ”ime.

vm.vfs_cache_pressure

See parameeter reguleerib mÀlukasutust, mida tuum kasutab katalooge ja indeksit vÀÀrtusi (dentry ja inode) vahemÀllu salvestamiseks.

Vaikese seade vÀÀrtus 100, tuum pĂŒĂŒab "Ă”iglaselt" vabastada dentry ja inode vahemĂ€lu pagecache ja swapcache suhtes. vfs_cache_pressure'i vĂ€hendamine viib selleni, et tuum hoiab dentry ja inode vahemĂ€lud. Kui vÀÀrtus on "0", ei puhasta tuum kunagi dentry ja inode vahemĂ€lu mĂ€lu survetĂ”usu tĂ”ttu, mis vĂ”ib kergesti viia out-of-memory veani. vfs_cache_pressure'i suurendamine ĂŒle 100 annab tuumale eelise dentry ja inode laadimise vabastamisel.

GlusterFS-i kasutamisel vĂ”ivad paljud kasutajad koos suurte andmehulkade ja paljude vĂ€ikeste failidega hĂ”ivata serveris mĂ€rkimisvÀÀrse hulga mĂ€lu inode/dentry vahemĂ€lu tĂ”ttu, mis vĂ”ib pĂ”hjustada jĂ”udluse langust, kuna tuumal on 40 GB mĂ€lu sĂŒsteemis andmestruktuuride töötlemine. Selle parameetri seadmine ĂŒle 100 on aidanud paljusid kasutajaid saavutada Ă”iglasemat vahemĂ€lu haldamist ja parandada tuuma reageerimisvĂ”imet.

vm.dirty_background_ratio ja vm.dirty_ratio

Esimene parameeter (vm.dirty_background_ratio) mÀÀrab protsendi mĂ€lust, millel on mustad lehekĂŒljed, saavutades mis tahes protsendi, mille korral tuleb alustada mustade lehekĂŒlgede taustal vĂ€ljastamist kettale. Seni, kuni seda protsenti ei saavutata, ei kirjutata lehekĂŒlgi kettale. Ja kui vĂ€ljastamine algab, toimub see taustal, katkestamata aktiivseid protsesse.

Teine parameeter (vm.dirty_ratio) mÀÀrab protsendi mĂ€lust, mis vĂ”ib olla hĂ”ivatud mustade lehekĂŒlgedega enne sundvĂ€ljastamise (forced flash) algust. Kui see kĂŒnnis on saavutatud, muutuvad kĂ”ik protsessid sĂŒnkroonseks (bloqeeritakse) ning neil ei lubata jĂ€tkata tööd, kuni nende taotletud sisendi/vĂ€ljundi operatsioon ei ole tegelikult lĂ”pule viidud ja andmed ei ole kettale salvestatud. kĂ”rge koormuse korral pĂ”hjustab see probleeme, kuna andmete vahemĂ€lu puudub ja kĂ”ik sisendi/vĂ€ljundi teostavad protsessid on blokeeritud ootamas sisendi/vĂ€ljundi teostamist. See pĂ”hjustab suurt hulka seiskunud protsesse, kĂ”rget koormust, sĂŒsteemi ebastabiilsust ja kehva jĂ”udlust.

Nende parameetrite vÀÀrtuste vĂ€hendamine toob kaasa andmete sagedasema kirjutamise kettale ja mitte mĂ€llu salvestamise. See vĂ”ib aidata sĂŒsteemides, kus on suur mĂ€lumaht, kus on normaalne 45–90 GB suuruste lehekettide vahemĂ€lu kettale kirjutamine, mis suurendab ooteaega esifassaadirakendustes, vĂ€hendades ĂŒldist reageerimiskiirust ja interaktiivsust.

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

Lehekett (page cache) on vahemĂ€lu, kus hoitakse failide ja kĂ€ivitatavate programmide andmeid, st need on lehed, millel on tegelikud failide vĂ”i plokkseadmete sisu. Seda vahemĂ€lu kasutatakse kettalt lugemise vĂ€hendamiseks. VÀÀrtus «1» tĂ€hendab, et vahemĂ€lus kasutatakse 1% mĂ€lust ja kettalt lugemise operatsioone on rohkem kui mĂ€lust. Selle parameetri muutmine ei ole vajalik, kuid kui olete lehekettide ĂŒlevaate kontrollimisel paranoiline, siis vĂ”ite selle kasutada.

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

Sisend-vĂ€ljundi planeerija (I/O scheduler) on Linuxi tuuma komponent, mis töötleb lugemise ja kirjutamise jĂ€rjekordi. Teoreetiliselt on nutika RAID-kontrolleri jaoks parem kasutada 'noop'-i, kuna Linux ei tea midagi ketta fĂŒĂŒsilisest geomeetriast. Seega on efektiivsem lasta kontrolleril, kes tunneb ketta geomeetriat, vĂ”imalikult kiiresti pĂ€ringud töödelda. Kuid tundub, et 'deadline' parendab tootlikkust. Rohkem planeerijate kohta saab lugeda Linuxi tuuma lĂ€htekoodi dokumentatsioonist: linux/Documentation/block/*osched.txt. Samuti olen mĂ€rganud lugemise lĂ€bilaskvuse suurendamist segatud operatsioonide korral (palju kirjutamisoperatsioone).

'256' > /sys/block/sdc/queue/nr_requests

Puutegurite arv, mis on puhverdatud enne, kui need edastatakse ajakavasse. MĂ”nede kontrollerite sisejĂ€rjekorra (queue_depth) suurus on suurem kui nr_requests sisse-/vĂ€ljundikava, mistĂ”ttu on sisend-vĂ€ljundikavas vĂ€he vĂ”imalusi Ă”igesti prioriseerida ja tĂ€ita pĂ€ringute ĂŒhendamine. Deadline ja CFQ ajakavade puhul on parem, kui nr_requests on kaks korda suurem kui kontrolleri sisejĂ€rjekord. PĂ€ringute ĂŒhendamine ja ĂŒmberkorraldamine aitab ajakavale olla suure koormuse korral tundlikum.

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

Parameeter page-cluster haldab lehtede arvu, mis kirjutatakse korraga vahetusse. Ülaltoodud nĂ€ites on vÀÀrtus seadistatud «16», vastavalt RAID-i striibi (stripe size) suurusele 64 KB. See ei oma tĂ€hendust, kui swappiness = 0, kuid kui olete seadnud swappiness vÀÀrtuseks 10 vĂ”i 20, siis aitab selle vÀÀrtuse kasutamine, kui RAID-i striibi suurus on 64 KB.

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

Paljuski RAID kontrollerite vaikeseaded toovad sageli kaasa halva jĂ”udluse. Ülaltoodud valiku lisamine seadistab eelaimingu 4096 * 512-baidi sektoritele. See suurendab vĂ€hemalt voogedastuse operatsioonide kiirus, tĂ€ites ketta sisseehitatud vahemĂ€lu eelaimimisega, samal ajal kui tuuma aeg kasutatakse sisend-vĂ€ljundiks valmistamiseks. VahemĂ€llu saab salvestada andmed, mis jĂ€rgmisel lugemisel taaskasutatakse. Liigne eelaiming vĂ”ib halvendada juhuslikku sisend-vĂ€ljundit suurte failide korral, kui see kasutab potentsiaalselt kasulikku kettategevuse aega vĂ”i laadib andmeid vahemĂ€lust vĂ€lja.

Allpool on mĂ”ned lisasoovitused failisĂŒsteemi tasemel. Kuid neid ei ole veel testitud. Veenduge, et teie failisĂŒsteem teab striibi suurust ja ketaste arvu massiivis. NĂ€iteks, et see on raid5 massiiv, mille striibi suurus on 64K ja kuus ketast (tegelikult viit, kuna ĂŒks ketas on pariteedi jaoks). Need soovitused pĂ”hinevad teoreetilistel eeldustel ja on kogutud erinevatest blogidest/RAIDi ekspertide artiklitest.

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

Suuremate failide puhul vÔib kaaluda eeltoodud striibide suuruste suurendamist.

TÄHELEPANU! KĂ”ik, mis on ĂŒlaltoodud, on mĂ”ne tĂŒĂŒpi rakenduste jaoks ÀÀrmiselt subjektiivne. See artikkel ei garanteeri mingeid parandusi ilma vastava rakenduse eelneva testimiseta kasutaja poolt. Seda tuleks rakendada ainult juhtudel, kui on vajalik sĂŒsteemi ĂŒldise reageerimise parandamine vĂ”i kui see lahendab praeguseid probleeme.

Lisamaterjalid:

Linuxi tuumade seadistamine GlusterFS jaoks

Loe veel

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster