Nastrojka jadra Linux för GlusterFS

ÖversĂ€ttningen av artikeln förbereddes strax före kursstart Administratör LinuxProfessionell».

Nastrojka jadra Linux för GlusterFS

DÄ och dÄ uppstÄr frÄgor om Glusters rekommendationer angÄende kÀrnjustering och om det Àr nödvÀndigt.

Detta behov uppstÄr sÀllan. Under de flesta arbetsbelastningar presterar kÀrnan mycket bra. Det finns dock en nackdel. Historiskt sett har kÀrnan Linux förbrukar villigt mycket minne om den ges möjlighet, inklusive för cachning som det frÀmsta sÀttet att förbÀttra prestanda.

I de flesta fall fungerar detta bra, men under hög belastning kan det orsaka problem.

Vi har lÄng erfarenhet av minnesintensiva system som CAD, EDA och liknande som skulle börja sakta ner under hög belastning. Och ibland stötte vi pÄ problem i Gluster. Efter att noggrant ha övervakat minnesanvÀndningen och diskens vÀntetid i mer Àn en dag, fick vi dem överbelastade, enorma iowait, kernel oops, fryser, etc.

Den hÀr artikeln Àr resultatet av mÄnga parameterinstÀllningsexperiment utförda i olika situationer. Tack vare dessa parametrar har inte bara den övergripande responsen förbÀttrats, utan klusterdriften har ocksÄ stabiliserats avsevÀrt.

NÀr det kommer till att konfigurera minne Àr det första att titta pÄ delsystemet virtuellt minne (VM), som har ett stort antal alternativ som kan vara förvirrande.

vm.byte

Parameter vm.swappiness bestÀmmer hur mycket kÀrnan anvÀnder swap jÀmfört med RAM. I kÀllkoden definieras det ocksÄ som "tendens att stjÀla mappat minne". Ett högt swappiness-vÀrde betyder att kÀrnan Àr mer benÀgen att byta ut mappade sidor. Ett lÄgt swappiness-vÀrde betyder motsatsen: kÀrnan kommer att byta ut fÀrre sidor frÄn minnet. Med andra ord, ju högre vÀrde vm.swappiness, desto mer kommer systemet att anvÀnda swap.

Stor swap-anvÀndning Àr oönskad eftersom enorma datablock laddas och laddas ur i RAM. MÄnga mÀnniskor hÀvdar att swapiness bör sÀttas högt, men min erfarenhet ger bÀttre prestanda att sÀtta den till 0.

Du kan lÀsa mer hÀr - lwn.net/Articles/100978

Men Äterigen, dessa instÀllningar bör anvÀndas med försiktighet och endast efter att ha testat den specifika applikationen. För streamingapplikationer med hög belastning bör denna parameter stÀllas in pÄ "0". Att Àndra till "0" förbÀttrar systemets lyhördhet.

vm.vfs_cache_pressure

Den hÀr parametern styr minnet som konsumeras av kÀrnan för cachelagring av katalogobjekt och inoder.

Med standardvÀrdet 100 kommer kÀrnan att försöka frigöra dentry- och inodcacher "ganska" med avseende pÄ pagecache och swapcache. Att reducera vfs_cache_pressure gör att kÀrnan bevarar dentry och inodcacher. NÀr vÀrdet Àr "0" kommer kÀrnan aldrig att spola tandborst och inodcache pÄ grund av minnestryck, och detta kan lÀtt leda till ett fel i minnet. Att öka vfs_cache_pressure över 100 gör att kÀrnan prioriterar urladdning av tandborst och inoder.

NÀr man anvÀnder GlusterFS kan mÄnga anvÀndare med stora mÀngder data och mÄnga smÄ filer lÀtt konsumera en betydande mÀngd RAM pÄ servern pÄ grund av inode/dentry-cache, vilket kan leda till prestandaförsÀmring dÄ kÀrnan mÄste bearbeta datastrukturer pÄ ett system med 40GB minne. Att stÀlla in den hÀr parametern till mer Àn 100 har hjÀlpt mÄnga anvÀndare att uppnÄ rÀttvisare cachelagring och förbÀttrad kÀnslighet för kÀrnan.

vm.dirty_background_ratio och vm.dirty_ratio

Första parametern (vm.dirty_background_ratio) definierar procentandelen minne med smutsiga sidor, nÀr man nÄr vilken det Àr nödvÀndigt att starta bakgrundsspolning av smutsiga sidor till disken. FörrÀn denna procentandel har uppnÄtts spolas inte sidor till disken. Och nÀr ÄterstÀllningen börjar utförs den i bakgrunden, utan att avbryta pÄgÄende processer.

Den andra parametern (vm.dirty_ratio) bestÀmmer procentandelen av minnet som kan upptas av smutsiga sidor innan en pÄtvingad blixt intrÀffar. NÀr detta tröskelvÀrde nÄs blir alla processer synkrona (blockerade) och tillÄts inte fortsÀtta köras förrÀn den I/O-operation de begÀrde faktiskt Àr slutförd och data finns pÄ disken. Under hög I/O-belastning orsakar detta ett problem eftersom det inte finns nÄgon datacachning och alla processer som utför I/O blockeras i vÀntan pÄ I/O. Detta resulterar i ett stort antal frusna processer, hög belastning, instabil systemdrift och dÄlig prestanda.

Att minska vÀrdena för dessa parametrar resulterar i att data spolas till disken oftare och inte lagras i RAM. Detta kan hjÀlpa minnesintensiva system som normalt spolar 45-90 GB sidcache till disken, vilket resulterar i enorm latens för front-end-applikationer, vilket minskar den övergripande responsen och interaktiviteten.

"1"> /proc/sys/vm/pagecache

En sidcache Àr en cache som lagrar data frÄn filer och körbara program, det vill sÀga sidor med det faktiska innehÄllet i filer eller blockenheter. Denna cache anvÀnds för att minska antalet disklÀsningar. Ett vÀrde pÄ "1" betyder att 1% av RAM-minnet anvÀnds för cache och det kommer att bli fler lÀsoperationer frÄn disk Àn frÄn RAM. Det Àr inte nödvÀndigt att Àndra den hÀr instÀllningen, men om du Àr paranoid med att kontrollera sidcachen kan du anvÀnda den.

"deadline" > /sys/block/sdc/queue/scheduler

I/O-schemalÀggaren Àr en kÀrnkomponent. Linux, som hanterar lÀs- och skrivköer. Teoretiskt sett Àr det bÀttre att anvÀnda "noop" för en smart RAID-kontroller eftersom Linux SchemalÀggaren vet ingenting om diskens fysiska geometri, sÄ det Àr mer effektivt att lÄta styrenheten, som har god kunskap om diskens geometri, bearbeta begÀran sÄ snabbt som möjligt. "Deadline" verkar dock förbÀttra prestandan. Mer information om schemalÀggare finns i kÀrnans kÀllkodsdokumentation. Linux: linux/Documentation/block/*osched.txt. Och jag sÄg ocksÄ en ökning av lÀskapaciteten under blandade operationer (mÄnga skrivningar).

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

Antalet I/O-förfrÄgningar i bufferten innan de skickas till schemalÀggaren. Vissa kontrollers interna köstorlek (queue_depth) Àr större Àn I/O-schemalÀggarens nr_requests, sÄ I/O-schemalÀggaren har liten chans att korrekt prioritera och slÄ samman förfrÄgningar. För deadline- och CFQ-schemalÀggare Àr det bÀttre nÀr nr_requests Àr 2 gÄnger den interna kön för regulatorn. Att kombinera och ordna om frÄgor hjÀlper planeraren att vara mer lyhörd under tung belastning.

echo "16" > /proc/sys/vm/page-cluster

Parametern page-cluster styr antalet sidor som skrivs för att byta pÄ en gÄng. I exemplet ovan Àr vÀrdet satt till "16" för att matcha RAID-randstorleken pÄ 64 KB. Det hÀr Àr inte vettigt med swappiness=0, men om du stÀller in swappiness till 10 eller 20, kommer det hÀr vÀrdet att hjÀlpa dig nÀr RAID-randstorleken Àr 64KB.

blockdev --setra 4096 /dev/<devname> (-sdb, hdc eller dev_mapper)

StandardinstĂ€llningarna för blockeringsenhet för mĂ„nga RAID-kontroller resulterar ofta i fruktansvĂ€rda prestanda. Genom att lĂ€gga till ovanstĂ„ende alternativ konfigureras lĂ€s framĂ„t för 4096*512-byte sektorer. Åtminstone för streamingoperationer ökas hastigheten genom att fylla pĂ„ diskcachen med read-ahead under den period kĂ€rnan anvĂ€nder för att förbereda I/O. Cachen kan lagra data som kommer att begĂ€ras nĂ€sta gĂ„ng den lĂ€ses. För mycket lĂ€sning framĂ„t kan döda slumpmĂ€ssig I/O pĂ„ stora filer om den anvĂ€nder potentiellt anvĂ€ndbar disktid eller laddar data utanför cachen.

Nedan finns nÄgra fler rekommendationer pÄ filsystemsnivÄ. Men de har inte testats Àn. Se till att ditt filsystem kÀnner till randstorleken och antalet diskar i arrayen. Till exempel Àr det en raid5-array med en 64K randstorlek pÄ sex diskar (faktiskt fem, eftersom en disk anvÀnds för paritet). Dessa rekommendationer Àr baserade pÄ teoretiska antaganden och samlade frÄn olika bloggar/artiklar av RAID-experter.

-> 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))

För större filer kan du övervÀga att öka randstorlekarna ovan.

FÖRSIKTIGHET Allt som beskrivs ovan Ă€r extremt subjektivt för vissa typer av applikationer. Denna artikel garanterar inga förbĂ€ttringar utan föregĂ„ende testning av respektive applikation av anvĂ€ndaren. Det bör endast anvĂ€ndas om det finns ett behov av att förbĂ€ttra systemets övergripande lyhördhet eller om det löser aktuella problem.

Ytterligare material:

Nastrojka jadra Linux för GlusterFS

LĂ€s mer

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster