Artikli tÔlge valmis kursuse alguse eelÔhtul .

Aeg-ajalt tekib siin-seal kĂŒsimusi Glusteri soovituste kohta tuuma kohandamise kohta ja selle kohta, kas see on vajalik.
See vajadus tekib harva. Enamiku töökoormuste korral töötab tuum vĂ€ga hĂ€sti. Siiski on ka varjukĂŒlg. Ajalooliselt on tuum Linux tarbib vĂ”imaluse korral meeleldi palju mĂ€lu, sealhulgas vahemĂ€llu salvestamiseks kui peamiseks viisiks jĂ”udluse parandamiseks.
Enamasti töötab see suurepÀraselt, kuid suure koormuse korral vÔib see probleeme tekitada.
Meil on laialdased kogemused töötamisel palju mĂ€lu tarbivate sĂŒsteemidega nagu CAD, EDA jms, mis hakkasid suure koormuse korral aeglustuma. Ja mĂ”nikord tekkis meil Glusteris probleeme. Olles jĂ€lginud hoolikalt kasutatud mĂ€lu ja ketta ooteaega ĂŒle ĂŒhe pĂ€eva, tekkis meil ketta ĂŒlekoormus, tohutu iowait, kerneli vead (kernel oops), hanged jne.
See artikkel on paljude erinevates olukordades tehtud parameetrite hÀÀlestamise katsete tulemus. TĂ€nu nendele parameetritele ei paranenud mitte ainult reageerimisvĂ”ime ĂŒldiselt, vaid ka klastri töö oluliselt stabiliseerus.
MĂ€lu konfigureerimisel tasub kĂ”igepealt vaadata virtuaalmĂ€lu alamsĂŒsteemi (VM), millel on suur hulk valikuid, mis vĂ”ivad teid segadusse ajada.
vm.vahetus
Parameeter vm.swappiness mÀÀrab, kui palju kernel kasutab vahetust vĂ”rreldes RAM-iga. Samuti on see lĂ€htekoodis mÀÀratletud kui "kalduvus varastada kaardistatud mĂ€lu". KĂ”rge vahetusvÀÀrtus tĂ€hendab, et kernel on vastuvĂ”tlikum kaardistatud lehtede vahetamisele. Madal vahetusvÀÀrtus tĂ€hendab vastupidist: kernel vahetab lehti vĂ€hem mĂ€lust. TeisisĂ”nu, mida suurem on vÀÀrtus vm.swappiness, seda rohkem sĂŒsteem vahetust kasutab.
Vahetamise laialdane kasutamine on ebasoovitav, kuna RAM-i laaditakse ja laaditakse maha tohutud andmeplokid. Paljud inimesed vĂ€idavad, et vahetusvÀÀrtus peaks olema kĂ”rge, kuid minu kogemuse kohaselt annab selle vÀÀrtuse â0â seadmine parema jĂ”udluse.
TĂ€psemalt saad lugeda siit -
Kuid jĂ€llegi tuleks neid seadeid kasutada ettevaatlikult ja alles pĂ€rast konkreetse rakenduse testimist. VĂ€ga koormatud voogedastusrakenduste puhul tuleks selle parameetri vÀÀrtuseks mÀÀrata "0". Kui muuta vÀÀrtuseks "0", paraneb sĂŒsteemi reageerimisvĂ”ime.
vm.vfs_cache_pressure
See sÀte juhib mÀlu, mida kernel kasutab kataloogiobjektide ja inoodide (dentry ja inode) vahemÀllu salvestamiseks.
VaikevÀÀrtusega 100 ĂŒritab kernel vabastada dentry- ja inode vahemĂ€lud Ă”iglasel viisil lehe- ja vahetusvahemĂ€llu. Vfs_cache_pressure vĂ€hendamine paneb kerneli sĂ€ilitama dentry ja inode vahemĂ€lu. Kui vÀÀrtus on "0", ei tĂŒhjenda kernel kunagi mĂ€lusurve tĂ”ttu dentry ja inode vahemĂ€lu ning see vĂ”ib kergesti pĂ”hjustada mĂ€lutĂ”rke. Kui vfs_cache_rĂ”hk tĂ”useb ĂŒle 100, annab kernel prioriteediks dentry ja inode pageouts.
GlusterFS-i kasutamisel saavad paljud suurte andmemahtude ja paljude vĂ€ikeste failidega kasutajad inode/dentry vahemĂ€llu tĂ”ttu hĂ”lpsasti kasutada serveris mĂ€rkimisvÀÀrsel hulgal RAM-i, mis vĂ”ib viia halva jĂ”udluseni, kuna kernel peab kĂ€sitlema sĂŒsteemi andmestruktuure. 40 GB mĂ€luga. Selle parameetri mÀÀramine suuremaks kui 100 on aidanud paljudel kasutajatel saavutada Ă”iglasemat vahemĂ€llu ja kerneli paremat reageerimisvĂ”imet.
vm.dirty_background_ratio ja vm.dirty_ratio
Esimene parameeter (vm.dirty_background_ratio) mÀÀrab mÀÀrdunud lehtedega mÀlu protsendi, milleni jÔudmisel tuleb alustada mÀÀrdunud lehtede taustal kettale loputamist. Kuni selle protsendi saavutamiseni lehti kettale ei loputata. Ja kui lÀhtestamine algab, töötab see taustal, katkestamata tööprotsesse.
Teine parameeter (vm.dirty_ratio) mÀÀrab mĂ€lu protsendi, mille mÀÀrdunud lehed vĂ”ivad hĂ”ivata enne sundvĂ€lgu algust. Kui see lĂ€vi on saavutatud, muutuvad kĂ”ik protsessid sĂŒnkroonseks (blokeeritakse) ja neil ei lubata jĂ€tkata töötamist enne, kui nende nĂ”utud sisend-/vĂ€ljundtoiming on tegelikult lĂ”pule viidud ja andmed on kettal. Suure I/O koormuse korral pĂ”hjustab see probleemi, kuna puudub andmete vahemĂ€llu salvestamine ja kĂ”ik sisend-/vĂ€ljundprotsessid blokeeritakse I/O ootamisel. Selle tulemuseks on suur hulk rippuvaid protsesse, suur koormus, sĂŒsteemi ebastabiilsus ja halb jĂ”udlus.
Nende parameetrite vÀÀrtuste vĂ€hendamine pĂ”hjustab andmete sagedamini kettale loputamist ja neid ei salvestata RAM-i. See vĂ”ib aidata suure mĂ€lumahuga sĂŒsteeme, kus on tavaline 45â90 GB lehe vahemĂ€lu kettale loputamine, mille tulemuseks on esiotsa rakenduste tohutu latentsusaeg, mis vĂ€hendab ĂŒldist reageerimisvĂ”imet ja interaktiivsust.
"1" > /proc/sys/vm/pagecache
Lehe vahemÀlu on vahemÀlu, mis salvestab andmeid failidest ja kÀivitatavatest programmidest, st need on lehed, millel on failide vÔi blokeerimisseadmete tegelik sisu. Seda vahemÀlu kasutatakse ketta lugemiste arvu vÀhendamiseks. VÀÀrtus "1" tÀhendab, et vahemÀlu kasutab 1% RAM-ist ja kettalt loetakse rohkem kui RAM-ist. Seda sÀtet pole vaja muuta, kuid kui olete lehe vahemÀlu juhtimise suhtes paranoiline, vÔite seda kasutada.
"tÀhtaeg" > /sys/block/sdc/queue/scheduler
I/O ajakava on kerneli komponent. Linux, mis haldab lugemis- ja kirjutamisjĂ€rjekordi. Teoreetiliselt on nutika RAID-kontrolleri puhul parem kasutada "noop", sest Linux Planeerija ei tea ketta fĂŒĂŒsilise geomeetria kohta midagi, seega on efektiivsem lasta kontrolleril, kellel on ketta geomeetriast head teadmised, pĂ€ringut vĂ”imalikult kiiresti töödelda. Siiski nĂ€ib "tĂ€htaeg" jĂ”udlust parandavat. Lisateavet planeerijate kohta leiate kerneli lĂ€htekoodi dokumentatsioonist. Linux: linux/Documentation/block/*osched.txt. Ja ma tĂ€heldasin ka lugemisvĂ”imsuse suurenemist segaoperatsioonide ajal (palju kirjutamist).
"256" > /sys/block/sdc/queue/nr_requests
I/O pĂ€ringute arv puhvris enne nende saatmist planeerijale. MĂ”nede kontrollerite sisemise jĂ€rjekorra suurus (queue_depth) on suurem kui I/O planeerija nr_requests, seega on I/O planeerijal vĂ€he vĂ”imalusi pĂ€ringuid Ă”igesti prioritiseerida ja liita. TĂ€htaja ja CFQ planeerijate jaoks on parem, kui nr_requests on 2 korda suurem kui kontrolleri sisemine jĂ€rjekord. PĂ€ringute ĂŒhendamine ja ĂŒmberjĂ€rjestamine aitab planeerijal suure koormuse korral paremini reageerida.
echo "16" > /proc/sys/vm/page-cluster
Leheklastri parameeter juhib lehekĂŒlgede arvu, mis korraga vahetusalasse kirjutatakse. Ălaltoodud nĂ€ites on vÀÀrtuseks seatud "16", et see vastaks RAID-riba suurusele 64 KB. Sellel pole mĂ”tet, kui swapiness = 0, kuid kui seate vahetusvÀÀrtuseks 10 vĂ”i 20, aitab selle vÀÀrtuse kasutamine teid, kui RAID-riba suurus on 64 KB.
blockdev --setra 4096 /dev/<devname> (-sdb, hdc vÔi dev_mapper)
Paljude RAID-kontrollerite vaikeblokeerimisseaded pĂ”hjustavad sageli kohutavat jĂ”udlust. Ălaltoodud suvandi lisamine konfigureerib ettelugemise 4096*512-baidiste sektorite jaoks. VĂ€hemalt voogedastustoimingute puhul suurendab kiirust kiibil oleva ketta vahemĂ€lu tĂ€itmine ettelugemise kaudu perioodil, mida kernel sisend-vĂ€ljundi ettevalmistamiseks kasutab. VahemĂ€lus vĂ”ib olla andmeid, mida kĂŒsitakse jĂ€rgmise lugemise ajal. Liiga palju ettelugemist vĂ”ib suurte failide puhul juhusliku sisendi/vĂ€ljundi hĂ€vitada, kui see kasutab potentsiaalselt kasulikku kettaaega vĂ”i laadib andmeid vĂ€ljaspool vahemĂ€lu.
Allpool on veel mĂ”ned soovitused failisĂŒsteemi tasemel. Kuid neid pole veel testitud. Veenduge, et teie failisĂŒsteem teaks triibu suurust ja massiivi ketaste arvu. NĂ€iteks, et see on raid5 massiiv, mille triibu suurus on 64K kuuest kettast (tegelikult viiest, sest ĂŒhte ketast kasutatakse paarsuse jaoks). Need soovitused pĂ”hinevad teoreetilistele eeldustele ja kogusid RAID-eksperdid erinevatest ajaveebidest/artiklitest.
-> ext4 fs, 5 disks, 64K stripe, units in 4K blocks
mkfs -text4 -E stride=$((64/4))
-> xfs, 5 disks, 64K stripe, units in 512-byte sectors
mkfs -txfs -d sunit=$((64*2)) -d swidth=$((5*64*2))Suuremate failide puhul vĂ”ite kaaluda ĂŒlaltoodud triipude suuruse suurendamist.
ETTEVAATUST KĂ”ik ĂŒlalkirjeldatud on teatud tĂŒĂŒpi rakenduste puhul ÀÀrmiselt subjektiivne. See artikkel ei garanteeri mingeid tĂ€iustusi, kui kasutaja pole vastavaid rakendusi eelnevalt testinud. Seda tuleks kasutada ainult siis, kui on vaja parandada sĂŒsteemi ĂŒldist reageerimisvĂ”imet vĂ”i kui see lahendab praegused probleemid.
Lisateave:
Loe rohkem
Allikas: www.habr.com
