Kjerneoppsett Linux for GlusterFS

Oversettelsen av artikkelen ble utarbeidet like fÞr kursstart Administrator LinuxProfesjonell».

Kjerneoppsett Linux for GlusterFS

Fra tid til annen dukker det opp spÞrsmÄl her og der om Glusters anbefalinger angÄende kjernetilpasning og om det er nÞdvendig.

Dette behovet oppstÄr sjelden. Kjernen yter svÊrt bra under de fleste arbeidsbelastninger. Det er imidlertid en ulempe. Historisk sett har kjernen Linux bruker villig mye minne hvis de fÄr muligheten, inkludert for mellomlagring som den viktigste mÄten Ä forbedre ytelsen pÄ.

I de fleste tilfeller fungerer dette utmerket, men under stor belastning kan det skape problemer.

Vi har lang erfaring med Ä jobbe med systemer som bruker mye minne, som CAD, EDA og lignende, som begynte Ä avta under hÞy belastning. Og noen ganger mÞtte vi problemer i Gluster. Etter nÞye overvÄking av minnet brukt og diskens ventetid i mer enn én dag, fikk vi diskoverbelastning, enorm iowait, kjernefeil (kernel oops), fryser osv.

Denne artikkelen er resultatet av mange parameterinnstillingseksperimenter utfÞrt i forskjellige situasjoner. Takket vÊre disse parameterne ble ikke bare responsen generelt forbedret, men ogsÄ driften av klyngen ble betydelig stabilisert.

NÄr det kommer til Ä konfigurere minne, er det fÞrste stedet Ä se pÄ det virtuelle minnesubsystemet (VM), som har et stort antall alternativer som kan forvirre deg.

vm.bytte

Parameter vm.swappiness bestemmer hvor mye kjernen bruker swap sammenlignet med RAM. Det er ogsÄ definert i kildekoden som "tendens til Ä stjele kartlagt minne." En hÞy bytteverdi betyr at kjernen vil vÊre mer utsatt for Ä bytte kartlagte sider. En lav bytteverdi betyr det motsatte: Kjernen vil bytte sider ut av minnet mindre. Med andre ord, jo hÞyere verdi vm.swappiness, jo mer vil systemet bruke swap.

Utstrakt bruk av swapping er uĂžnsket, siden enorme blokker med data lastes og losses i RAM. Mange hevder at bytteverdien bĂžr vĂŠre hĂžy, men min erfaring gir bedre ytelse Ă„ sette den til "0".

Du kan lese mer her - lwn.net/Articles/100978

Men igjen, disse innstillingene bÞr brukes med forsiktighet og bare etter Ä ha testet den spesifikke applikasjonen. For hÞyt belastede strÞmmeapplikasjoner bÞr denne parameteren settes til "0". NÄr endret til "0", forbedres systemets reaksjonsevne.

vm.vfs_cache_pressure

Denne innstillingen kontrollerer minnet som forbrukes av kjernen for caching av katalogobjekter og inoder (dentry og inode).

Med standardverdien pÄ 100 vil kjernen forsÞke Ä frigjÞre dentry- og inodebufferen pÄ en rettferdig mÄte til sidecachen og swapcachen. Redusering av vfs_cache_pressure fÞrer til at kjernen bevarer dentry og inode cacher. NÄr verdien er "0", vil kjernen aldri tÞmme dentry- og inodebufferen pÄ grunn av minnetrykk, og dette kan lett fÞre til en minnefeil. Økning av vfs_cache_pressure over 100 fÞrer til at kjernen prioriterer dentry og inode pageouts.

Ved bruk av GlusterFS kan mange brukere med store datamengder og mange smĂ„ filer enkelt bruke en betydelig mengde RAM pĂ„ serveren pĂ„ grunn av inode/dentry caching, noe som kan fĂžre til dĂ„rlig ytelse da kjernen mĂ„ hĂ„ndtere datastrukturer pĂ„ et system med 40 GB minne. Å sette denne parameteren til mer enn 100 har hjulpet mange brukere med Ă„ oppnĂ„ mer rettferdig hurtigbufring og forbedret kjernerespons.

vm.dirty_background_ratio og vm.dirty_ratio

FÞrste parameter (vm.dirty_background_ratio) bestemmer prosentandelen av minnet med skitne sider, nÄr det er nÄdd, er det nÞdvendig Ä starte bakgrunnsspyling av skitne sider til disk. Inntil denne prosentandelen er nÄdd, blir ikke sider tÞmt til disk. Og nÄr tilbakestillingen starter, kjÞrer den i bakgrunnen uten Ä avbryte lÞpende prosesser.

Andre parameter (vm.dirty_ratio) bestemmer prosentandelen av minnet som kan okkuperes av skitne sider fÞr en tvungen blits begynner. NÄr denne terskelen er nÄdd, blir alle prosesser synkrone (blokkert) og fÄr ikke fortsette Ä kjÞre fÞr I/O-operasjonen de ba om, faktisk er fullfÞrt og dataene er pÄ disken. Med hÞy I/O-belastning forÄrsaker dette et problem fordi det ikke er databufring og alle prosesser som utfÞrer I/O er blokkert og venter pÄ I/O. Dette resulterer i et stort antall hengte prosesser, hÞy belastning, systemustabilitet og dÄrlig ytelse.

Redusering av verdiene til disse parameterne fĂžrer til at data skylles til disken oftere og ikke lagres i RAM. Dette kan hjelpe minnetunge systemer der det er normalt Ă„ skylle 45-90 GB sidebuffer til disken, noe som resulterer i enorm ventetid for front-end-applikasjoner, noe som reduserer den generelle responsen og interaktiviteten.

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

Sidebuffer er en hurtigbuffer som lagrer data fra filer og kjÞrbare programmer, det vil si at dette er sider med det faktiske innholdet i filer eller blokker enheter. Denne cachen brukes til Ä redusere antall diskavlesninger. En verdi pÄ "1" betyr at cachen bruker 1% av RAM og det vil vÊre flere lesninger fra disk enn fra RAM. Det er ikke nÞdvendig Ä endre denne innstillingen, men hvis du er paranoid med Ä kontrollere sidebufferen, kan du bruke den.

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

I/O-planleggeren er en kjernekomponent. Linux, som hÄndterer lese- og skrivekÞer. Teoretisk sett er det bedre Ä bruke «noop» for en smart RAID-kontroller fordi Linux Planleggeren vet ingenting om diskens fysiske geometri, sÄ det er mer effektivt Ä la kontrolleren, som har god kunnskap om diskens geometri, behandle forespÞrselen sÄ raskt som mulig. Imidlertid ser det ut til at "fristen" forbedrer ytelsen. Mer informasjon om planleggere finnes i kjernens kildedokumentasjon. Linux: linux/Documentation/block/*osched.txt. Og jeg observerte ogsÄ en Þkning i lesegjennomstrÞmning under blandede operasjoner (mange skrivinger).

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

Antallet I/O-forespÞrsler i bufferen fÞr de sendes til planleggeren. Noen kontrolleres interne kÞstÞrrelse (queue_depth) er stÞrre enn I/O-planleggerens nr_requests, sÄ I/O-planleggeren har liten sjanse til Ä riktig prioritere og slÄ sammen forespÞrsler. For tidsfrister og CFQ-planleggere er det bedre nÄr nr_requests er 2 ganger stÞrre enn kontrollerens interne kÞ. SammenslÄing og omorganisering av spÞrringer hjelper planleggeren til Ä vÊre mer responsiv under stor belastning.

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

Sideklynge-parameteren kontrollerer antall sider som skrives til byttet pÄ en gang. I eksemplet ovenfor er verdien satt til "16" for Ä matche RAID-stripestÞrrelsen pÄ 64 KB. Dette gir ikke mening nÄr swappiness = 0, men hvis du setter swappiness til 10 eller 20, vil bruk av denne verdien hjelpe deg nÄr RAID-stripestÞrrelsen er 64 KB.

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

Standard blokkeringsenhetsinnstillinger for mange RAID-kontrollere resulterer ofte i forferdelig ytelse. Ved Ä legge til alternativet ovenfor konfigurerer du forhÄndslesing for 4096*512 bytesektorer. I det minste for strÞmmeoperasjoner Þkes hastigheten ved Ä fylle diskbufferen pÄ brikken via read-ahead i perioden kjernen bruker til Ä forberede I/O. Cachen kan inneholde data som vil bli forespurt ved neste lesing. For mye lesing fremover kan drepe tilfeldig I/O for store filer hvis den bruker opp potensielt nyttig disktid eller laster data utenfor hurtigbufferen.

Nedenfor er noen flere anbefalinger pÄ filsystemnivÄ. Men de er ikke testet enda. SÞrg for at filsystemet ditt kjenner stripestÞrrelsen og antall disker i matrisen. For eksempel at dette er en raid5-array med en stripestÞrrelse pÄ 64K pÄ seks disker (faktisk fem, fordi en disk brukes for paritet). Disse anbefalingene er basert pÄ teoretiske forutsetninger og samlet fra ulike blogger/artikler av RAID-eksperter.

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

For stĂžrre filer kan du vurdere Ă„ Ăžke stripestĂžrrelsene ovenfor.

FORSIKTIG Alt beskrevet ovenfor er ekstremt subjektivt for noen typer applikasjoner. Denne artikkelen garanterer ingen forbedringer uten fĂžrst Ă„ teste de respektive applikasjonene av brukeren. Den skal bare brukes hvis det er behov for Ă„ forbedre systemets generelle reaksjonsevne eller hvis den lĂžser aktuelle problemer.

Tilleggsmateriell:

Kjerneoppsett Linux for GlusterFS

Les mer

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster