Oversettelsen av artikkelen ble utarbeidet like fĂžr kursstart .

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 -
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:
Les mer
Kilde: www.habr.com
