Geavanceerde Linux-kerneloptimalisatie met sysctl

Laatste update: 25 maart 2026
  • Geavanceerde kerneloptimalisatie met sysctl stelt u in staat om netwerk, geheugen, bestanden en de scheduler aan te passen om de prestaties en stabiliteit te maximaliseren.
  • Het is essentieel om de situatie vóór en na de verandering te meten aan de hand van benchmarks en monitoring om de werkelijke impact van elke verandering te valideren.
  • Specifieke profielen (web, databases, lage latentie, Kubernetes) leveren betere resultaten op dan één generieke configuratie.
  • Tools zoals perf, ftrace, vmstat en iostat maken iteratieve, veilige en objectieve datagestuurde optimalisatie mogelijk.

geavanceerde Linux-kerneloptimalisatie

Als je al een tijdje Linux-servers beheert, kom je er vroeg of laat achter dat het verschil tussen een gewoon systeem en een systeem dat... vliegen onder zware belasting Het draait allemaal om hoe je je kernel hebt afgesteld. Het gaat niet alleen om het installeren van meer RAM of een krachtigere CPU: veel knelpunten worden opgelost door een paar zorgvuldig gekozen parameters aan te passen.

De kernel biedt honderden opties voor netwerk, geheugen, bestandssysteem en procesplanning die direct kunnen worden aangepast. Met behulp van de tool sysctl en enkele aanpassingen in /procHet is mogelijk om het maximale uit de hardware te halen en resultaten te behalen. lagere latentie, hogere doorvoer en betere stabiliteit Dit geldt voor webservers en databases, maar ook voor realtime-omgevingen en Kubernetes. Het is echter essentieel om precies te weten wat je doet en hoe je het kunt meten.

Wat is sysctl en hoe organiseert het kernelparameters?

Nut sysctl Het is de toegangspoort tot het wijzigen van kernelparameters zonder dat hercompilatie of herstart nodig is, waardoor Waarden lezen en wijzigen tijdens de uitvoering. om configuraties direct te testen. Deze parameters zijn georganiseerd in een laag hiërarchische boomstructuur. /proc/sys/en elk ervan stuurt een specifiek gedrag van het systeem aan.

De instellingen zijn gegroepeerd in verschillende categorieën, waardoor het gemakkelijk is om te vinden wat u moet aanpassen wanneer u een specifiek prestatie- of stabiliteitsprobleem ondervindt. Dankzij deze structuur kunt u zich bijvoorbeeld alleen richten op netwerk (net.*), geheugen (vm.*) of bestandssysteem (fs.*) zonder te verdwalen in de rest van de kernelopties.

De belangrijkste categorieën die u zult vinden in /proc/sys/ Deze omvatten onder meer:

  • kernel.*: algemene kernelopties (scheduler, PID, berichten, NUMA, enz.).
  • vm.*: virtueel geheugenbeheer, swap, caches en overcommitbeleid.
  • netto.*: IPv4/IPv6-netwerkstack, TCP/UDP-buffers, wachtrijen, congestiebeheer.
  • fs.*: beperkingen van descriptors, inodes, inotify, AIO en VFS-gedrag.
  • dev.*: specifieke parameters van bepaalde apparaten en stuurprogramma's.

met sysctl -a Je kunt alle beschikbare parameters weergeven, en met commando's zoals sysctl vm.swappiness o sysctl net.ipv4.tcp_tw_reuse het uitlezen van specifieke waarden, wat essentieel is voor controleer de huidige configuratie voordat je iets verandert. Om iets specifieks te vinden, is het gebruikelijk om te filteren met grep, bijvoorbeeld: sysctl -a | grep tcp.

Het aanpassen van een parameter tijdens de uitvoering is net zo eenvoudig als het gebruiken van sysctl -w clave=valorHet is echter belangrijk te begrijpen dat deze wijzigingen tijdelijk zijn. Om ze na een herstart te behouden, is het essentieel om een ​​back-up van de configuratie te maken. /etc/sysctl.conf of in bestanden van /etc/sysctl.d/, meestal met behulp van genummerde bestanden (bijvoorbeeld 10-network.conf, 20-memory.conf, 99-custom.conf) die de volgorde bepalen waarin ze worden toegepast.

geavanceerde Linux-kernelparameters

Meten voordat je aan de slag gaat: benchmarks en systeembasislijn

Voordat je als een gek aan knoppen begint te draaien, is het verstandig om eerst vast te stellen... objectieve prestatiebasislijnZonder voorafgaande gegevens is het onmogelijk om te weten of de veranderingen het systeem hebben verbeterd of verslechterd, en verval je al snel in de klassieke gedachte "het lijkt beter te gaan", wat nutteloos is voor het nemen van belangrijke beslissingen.

Op systeemniveau is het een goed idee om gedurende enkele minuten onder een representatieve belasting statistieken te verzamelen over CPU, belasting, geheugen, schijfgebruik en netwerk. Hulpmiddelen zoals uptime, mpstat, vmstat, iostat -x o sar -n DEV Ze geven je inzicht in hoe de standaardkernel zich gedraagt, hoeveel swapgeheugen deze gebruikt, hoe de schijf-I/O reageert en of het netwerk overbelast is of bandbreedte verspilt.

Naast dat overzicht is het cruciaal om specifieke benchmarks uit te voeren voor de applicatie die u wilt optimaliseren. Op webservers kunt u bijvoorbeeld gebruikmaken van ab (Apache Bench) of vergelijkbare tools voor het meten verzoeken per seconde, gemiddelde latentie en foutenIn databases worden hulpprogramma's zoals mysqlslap o sysbench Ze helpen bij het evalueren van transacties per seconde en querytijden.

In een scenario zonder optimalisatie zien we bijvoorbeeld vaak cijfers als 500 HTTP-verzoeken per seconde met een gemiddelde responstijd van 200 ms, ongeveer 250 SQL-query's per seconde met een latentie van 40 ms, een netwerksnelheid van circa 500 Mbps en een systeembelasting die onder stress de limiet nadert. Deze cijfers worden gebruikt om te controleren of er na het toepassen van kernelwijzigingen daadwerkelijk een significante verbetering is bereikt. meetbare toename van de doorvoer en een afname van de latentie.

Documenteer tot slot de commando's en de verkregen resultaten voordat u iets aanpast. Een geschiedenis stelt u in staat om verschillende instellingen nauwkeurig met elkaar te vergelijken en is bovendien nuttig voor Detecteer regressies na een kernelupdate. of na het introduceren van een nieuw sysctl-profiel in productie.

Geavanceerde geheugeninstellingen: vm.*

Linux kernel geheugenoptimalisatie

Geheugen is een van de subsystemen waar kernelwijzigingen het meest merkbaar zijn. Een server met veel RAM, maar slecht geconfigureerd, kan onnodig veel swapruimte gebruiken, wat kan leiden tot... I/O-pieken en drastische prestatiedalingenDaarom zijn parameters zoals vm.swappinessDe verhouding tussen ongebruikte en ongewenste pagina's en het gedrag van de VFS-cache zijn net zo belangrijk.

Parameter vm.swappiness Dit bepaalt hoeveel geheugenpagina's de kernel naar de swap stuurt. In veel distributies is dit ingesteld op 60, een waarde die bedoeld is voor gemengde desktopomgevingen. Voor databaseservers of applicaties met een lage latentie is het meestal beter om deze waarde te verlagen naar 10 of zelfs minder, wat resulteert in een efficiënter systeem. Geef prioriteit aan het bewaren van gegevens in het RAM-geheugen en verminder het wisselen van geheugen.Het is niet ongebruikelijk dat het schijfverkeer drastisch afneemt en dat applicaties na deze aanpassing veel minder haperingen vertonen.

  Geneste hardwarevirtualisatie: vereisten, toepassingen en configuratie

Een andere fundamentele bouwsteen is vm.dirty_ratio y vm.dirty_background_ratioDeze waarden bepalen welk percentage van het geheugen gevuld mag worden met gewijzigde pagina's voordat de kernel deze naar de schijf wegschrijft. Extreem hoge waarden kunnen leiden tot grote schrijfpieken, met enorme vertragingen voor alle applicaties wanneer het wegschrijven plaatsvindt. Het verlagen van deze percentages naar waarden zoals 15 en 5 resulteert doorgaans in een een consistenter en voorspelbaarder I/O-patroon.

De instelling van vm.vfs_cache_pressure Dit bepaalt hoe agressief de kernel de inode- en directorycaches leegt. Een standaardwaarde van 100 zorgt ervoor dat de cache snel wordt geleegd, terwijl instellingen rond de 50 ervoor zorgen dat metadata langer bewaard blijven, waardoor de hitrate voor bestandsbewerkingen toeneemt en de prestaties verbeteren. de waargenomen prestaties van het bestandssysteem, iets wat cruciaal is voor servers die miljoenen kleine bestanden verwerken.

Van haar kant, vm.min_free_kbytes Reserveer een minimale hoeveelheid vrij geheugen om ervoor te zorgen dat het systeem kan reageren op pieken in de geheugentoewijzing zonder dat er plotselinge out-of-box (OOB) situaties optreden. Een reserve van ongeveer 0,5% tot 1% van het totale RAM-geheugen is doorgaans een effectieve veiligheidsmaatregel om te voorkomen dat de kernel onder extreme belasting geen geheugen meer heeft en kritieke processen afsluit, waardoor de prestaties verbeteren. algehele stabiliteit van de gastheer.

Tot slot verdient het overcommit-beleid aandacht: parameters zoals vm.overcommit_memory y vm.overcommit_ratio Ze bepalen hoeveel virtueel geheugen aan processen wordt toegewezen ten opzichte van het beschikbare RAM-geheugen en swapgeheugen. In sommige gevallen (bijvoorbeeld bij Redis of bepaalde databases) is een agressieve overtoewijzing toegestaan, terwijl in andere gevallen een conservatiever beleid de voorkeur heeft om het risico te beperken. OOM en situaties van ernstig gecompromitteerd geheugenRaadpleeg voor technieken voor het analyseren en diagnosticeren van complexe gevallen. Geheugendebugging in Linux.

Geavanceerde netwerkoptimalisatie: net.* en TCP/IP

De netwerkstack is wellicht het onderdeel waar optimalisatie in productieomgevingen het meest merkbaar is. Een simpele wijziging in de verbindingswachtrijen of buffers kan het verschil maken tussen een server die vastloopt bij 500 Mbps en een server die dat wel doet. Het overbelast de gigabitverbinding met gemak.De parameters onder net.core.* y net.ipv4.* Op dit gebied zijn zij je beste bondgenoten.

Om te beginnen hebben de buffergroottes van sockets direct invloed op de maximale doorvoer van een verbinding, vooral bij hoge latentie of verbindingen met een hoge capaciteit. Aanpassen net.core.rmem_max y net.core.wmem_max naar ruime waarden (tientallen of honderden megabytes) en definieer ze correct. net.ipv4.tcp_rmem y net.ipv4.tcp_wmem (minimum, standaardwaarde en maximum) zorgt ervoor dat elke socket de Benodigde ruimte om verkeerspieken op te vangen. zonder te vervallen in kunstmatige beperkingen opgelegd door zeer conservatieve fabriekswaarden.

Een ander belangrijk punt is de grootte van de verbindingswachtrijen. Parameters zoals net.core.somaxconn, net.core.netdev_max_backlog y net.ipv4.tcp_max_syn_backlog Deze limieten bepalen hoeveel openstaande verbindingen het systeem kan verwerken voordat pakketten worden gedropt of handshakes worden geweigerd. Op webservers met veel verkeer kan het verhogen van deze limieten overvolle wachtrijen voorkomen en de belasting drastisch verminderen. verbindingsfouten tijdens piekbelastingen.

Het gedrag van TCP-verbindingen kan ook nauwkeurig worden afgesteld met een groot aantal opties: inschakelen net.ipv4.tcp_window_scaling Om grote vensters op verbindingen met hoge bandbreedte te ondersteunen, moet u dit inschakelen. net.ipv4.tcp_sack y net.ipv4.tcp_timestamps om het beheer van verlies en herverzending te verbeteren, of om aanpassingen te maken. net.ipv4.tcp_fin_timeout en het beheer van TIME_WAIT (net.ipv4.tcp_tw_reuse, net.ipv4.tcp_max_tw_buckets) om het resourceverbruik op servers te beheersen met miljoenen korte verbindingen per minuut.

Ook de keuze van het congestiebeheersingsalgoritme is van belang. Hoewel cubic Het blijft de standaardwaarde in veel distributies; wijzigen naar bbr in moderne kernels (4.9 en later) door net.ipv4.tcp_congestion_control y net.core.default_qdisc=fq Het kan de TCP-doorvoer in omgevingen met complexe verliezen of latenties vermenigvuldigen, waardoor in bepaalde scenario's verbeteringen van 2 tot 25 keer ten opzichte van klassieke configuraties worden behaald, ten koste van... enigszins ander gedrag in overbelaste netwerken..

We mogen de veiligheids- en betrouwbaarheidsparameters zoals niet vergeten. net.ipv4.tcp_syncookies, de afhandeling van omleidingen (net.ipv4.conf.all.accept_redirects, send_redirects) of filtering in bruggen (net.bridge.bridge-nf-call-iptables in Kubernetes-omgevingen). Mits correct geconfigureerd, stellen ze u in staat het systeem te beschermen tegen veelvoorkomende aanvallen (SYN-flood, spoofing, enz.) zonder dat dit ten koste gaat van de prestaties. solide netwerkprestatiesVoor een praktische handleiding over regels en detectie, raadpleeg de Netfilter- en Suricata-implementatie.

Bestandssysteem, descriptors en globale limieten: fs.* en ulimit

Op moderne servers is een lage limiet voor bestandsdescriptors de snelste manier om een ​​systeem te laten crashen tijdens piekuren. Wanneer een webserver, reverse proxy of database de klassieke foutmelding "te veel open bestanden" tegenkomt, komt dat meestal doordat... De kernelparameters en gebruikerslimieten waren niet gedimensioneerd. voor de werkelijke belasting.

wereldwijd fs.file-max Dit specificeert hoeveel descriptors de kernel in totaal open kan hebben. Voor applicaties met duizenden gelijktijdige verbindingen is het gebruikelijk om deze waarde te verhogen naar enkele miljoenen, samen met een verhoging van fs.nr_openDit stelt een harde bovengrens vast voor beschrijvingen per proces. Daarnaast zijn aanpassingen nodig. /etc/security/limits.conf zodat gebruikers (of services beheerd door systemd) beschikken over zachte en harde waarden die overeenkomen met de kernelconfiguratie.

  Ontdek hoe educatieve informatie- en managementsystemen het onderwijs revolutioneren

Het inotify-subsysteem, dat veelvuldig wordt gebruikt door IDE's, webontwikkeltools en bestandsbewakingssystemen, wordt aangestuurd door parameters zoals fs.inotify.max_user_watches y fs.inotify.max_user_instancesAls u fouten tegenkomt met betrekking tot watchers of processen die stoppen met het bewaken van schijfwijzigingen, hebt u waarschijnlijk het volgende nodig: Verhoog deze limieten om stille knelpunten te voorkomen..

Een andere relevante eigenschap is asynchrone I/O (AIO), waarvan het globale maximum wordt gedefinieerd met fs.aio-max-nrIn applicaties die sterk afhankelijk zijn van asynchrone I/O (bepaalde database-engines, wachtrijsystemen, enz.), voorkomt het verhogen ervan dat de kernel onder een zeer hoge aanvraagbelasting geen beschikbare slots meer heeft voor AIO-bewerkingen.

Naast deze parameters wordt de prestatie van het schijfsubsysteem beïnvloed door de I/O-planner geconfigureerd op elk blokapparaat. In systemen met SSD's of NVMe wordt meestal aanbevolen om lichtgewicht schedulers te gebruiken, zoals none o mq-deadlineBij mechanische schijven kunnen andere opties echter zinvol zijn, zoals bfq afhankelijk van het type belasting. Pas de planner aan via /sys/block/<disco>/queue/scheduler en opties zoals de wachtrijdiepte nauwkeurig afstellen (nr_requests) of de read_ahead_kb kan een merkbaar verschil maken in lees-/schrijflatentie en doorvoerHet is ook belangrijk om te kijken welke bestandssystemen en stuurprogramma's worden gebruikt; bijvoorbeeld artikelen over NTFSplus op Linux En andere systemen kunnen helpen bij het ontwerpen van systemen met heterogene belastingen.

Tot slot mag niet worden vergeten dat deze kernelbeperkingen hand in hand moeten gaan met systeemconfiguraties zoals die van ulimit en systemd-eenheden, om ervoor te zorgen dat services daadwerkelijk gebruik kunnen maken van de gedefinieerde extra resources en niet worden geblokkeerd door beperkingen in de bovenste lagen.

Kernel algemeen, NUMA, CPU-affiniteit en grote pagina's

Naast netwerken, geheugen en bestandssystemen biedt de kernel zelf een reeks afstemmingsopties die van invloed zijn op hoe processen worden gepland, hoe de werklast over cores en NUMA-nodes wordt verdeeld en hoe het geheugen op grote schaal wordt beheerd. Op moderne machines met veel cores en zelfs meerdere sockets maken deze details vaak het verschil tussen een gebalanceerde server en een server met... Sommige kernen zijn verzadigd, terwijl andere onderbenut worden.Het is ook de moeite waard om alternatieve kernels te proberen, zoals kernel Liquorix in omgevingen waar een ander latentieprofiel gewenst is.

Parameters zoals kernel.pid_max Ze bepalen het maximale bereik van proces-ID's dat het systeem kan toewijzen, wat relevant is voor knooppunten die een groot aantal containers of tijdelijke processen uitvoeren. Het aanpassen van de kernel-logboekregistratieopties (kernel.printk) helpt om overmatige ruis in dmesg te verminderen, terwijl cruciale gebeurtenissen nog steeds worden vastgelegd, wat ook indirect invloed heeft op de diagnostische mogelijkheden en stabiliteit.

Wat betreft de geheugentopologie, de parameter kernel.numa_balancing Het bepaalt in hoeverre de kernel automatisch pagina's verplaatst tussen NUMA-nodes. Door het in bepaalde omgevingen uit te schakelen, kan de proces- en geheugenaffiniteit explicieter worden beheerd met behulp van tools zoals... numactl om ervoor te zorgen dat CPU- en RAM-intensieve processen op dezelfde node blijven, waardoor de belasting wordt verminderd latentie als gevolg van toegang op afstandOm de interactie tussen hardware en core-scheduling beter te begrijpen, is het ook nuttig om technologieën zoals te bekijken. Intel Thread-directeur.

De enorme pagina's (vm.nr_hugepagesDit is een ander belangrijk onderdeel in databasesystemen of andere workloads die grote, aaneengesloten geheugengebieden verwerken. Door een passend aantal gigantische pagina's te reserveren (2 MB of zelfs 1 GB, afhankelijk van de architectuur) kan de TLB-overhead worden verminderd en de prestaties van applicaties die erop draaien aanzienlijk worden verbeterd. veel bewerkingen op grote geheugenblokkenOm dit effectief te laten zijn, moet de kernelconfiguratie afgestemd zijn op de applicatie zelf, zodat deze dat geheugen expliciet gebruikt.

Op het gebied van latentie en planning zijn er planningsparameters zoals kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns o kernel.sched_migration_cost_nsDeze instellingen verfijnen de grootte van de CPU-"chunks" die aan elke taak worden toegewezen en de agressiviteit waarmee de kernel processen tussen cores verplaatst. Kleinere waarden vertegenwoordigen een meer preemptief systeem, wat doorgaans zorgt voor een snellere werking. beste antwoord voor interactieve taken soms ten koste van een iets lagere doorvoer.

In systemen waar geheugen een gevoelige bron is, kiezen sommige beheerders ervoor om de paniekmodus te activeren in geval van een fout direct na installatie.vm.panic_on_oom) en stel vast kernel.panic met een automatische herstarttijd. Deze strategie, hoewel enigszins drastisch, kan nuttig zijn in omgevingen met hoge beschikbaarheid waar Een snelle en gecontroleerde herstart heeft de voorkeur boven een vastgelopen en instabiele host. tijdens uren.

Gespecialiseerde profielen: web, databases, lage latentie en Kubernetes

In plaats van één wondermiddel te gebruiken, is het effectiever om sysctl-profielen te maken die zijn afgestemd op verschillende soorten workloads: webservers, databases, containerplatforms of systemen met lage latentie. Het verspreiden van deze instellingen in bestanden zoals 99-webserver.conf, 99-database.conf o 90-kubernetes.conf helpen om Zorg voor een overzichtelijke en eenvoudig te beheren configuratie.Je kunt ook prestatiegerichte distributies en edities overwegen, zoals CachyOS Server Edition voor zeer specifieke omgevingen.

Voor webservers (Nginx, Apache, proxies, enz.) is het essentieel om grote aantallen gelijktijdige verbindingen met lange wachtrijen en responstijden te kunnen verwerken. FIN_WAIT Door middel van fijnafstemming, een uitgebreider bereik voor tijdelijke poorten en zeer hoge descriptorlimieten is het gebruikelijk om het aantal HTTP-verzoeken per seconde te verhogen van enkele honderden naar enkele duizenden, waardoor de gemiddelde latentie afneemt en fouten worden geëlimineerd. overvolle wachtrijen of volle poorten.

  SAP: kenmerken en voordelen

Aan de databasekant (MySQL, PostgreSQL en vergelijkbare databases) wordt prioriteit gegeven aan minimaal swapgebruik, het optimaliseren van het schrijven naar gewijzigde pagina's en de juiste instellingen voor gedeeld geheugen en semaforen voor de database-engine. Parameters zoals kernel.shmmax, kernel.shmall, kernel.sem en de enorme pagina-indeling maakt een verschil qua... transacties per seconde en responstijdwaardoor de prestaties in veel gevallen twee of drie keer zo hoog zijn als bij de standaardwaarden.

Voor toepassingen met extreem lage latentie (handel, online gaming, realtime verwerking) worden nog specifiekere instellingen toegevoegd: net.ipv4.tcp_low_latency, deactivering van de langzame start na inactiviteit, gebruik van tcp_fastopen, drukke pollparameters (net.core.busy_poll, busy_read) en, in veel gevallen, de deactivering van transparante, grote pagina's door /sys/kernel/mm/transparent_hugepage/enabledDit alles is erop gericht de vermindering van de De verwerkingswachtrij en latentie pieken bij hoge percentielen.waardoor spectaculaire verbeteringen in P99 werden bereikt.

In container- en Kubernetes-omgevingen staan ​​de netwerkstack en de verbindingsbewaking onder bijzondere druk. Parameters zoals net.ipv4.ip_forward, net.bridge.bridge-nf-call-iptables, net.netfilter.nf_conntrack_maxHet gebruik van gereserveerde poorten voor NodePort of het aanpassen van ARP-tabellen is gebruikelijk op nodes die honderden of duizenden pods verwerken. Door deze correct aan te passen, worden problemen voorkomen. Verbroken verbindingen, time-outs of tabelverzadiging met conntrack.

Naast deze specifieke profielen kiezen sommige organisaties voor een prestatiegericht archief met verbeterde beveiliging, waarbij grote netwerkbuffers en een lagere swappiness worden gecombineerd met maatregelen zoals... tcp_syncookies of het blokkeren van gevaarlijke omleidingen. Het doel is om een evenwichtspunt tussen agressieve prestaties en redelijke versteviging.

Kernelprofilerings- en monitoringtools

Het afstellen van de kernel zonder metingen is als blindelings een audiomixer bedienen. Linux biedt een scala aan tools om te begrijpen wat het systeem daadwerkelijk doet, van eenvoudige tellers tot gedetailleerde traceringen van kernelfuncties, waardoor u correleer configuratiewijzigingen met meetbare effecten.

Tot de alledaagse gebruiksvoorwerpen behoren: vmstat, iostat, sar, ss, slabtop, htop o pidstatdie snel informatie verschaffen over processen, CPU-, I/O-, socket- en cachegebruik. Gecombineerd met systeemlogboeken en statistieken die geëxporteerd worden naar Prometheus, Grafana of collectd, en met bronnen zoals geavanceerde systeemmonitor voor LinuxZe geven een vrij compleet beeld van hoe de host zich gedraagt ​​vóór en na elke afstemming.

Om dit nader toe te lichten, tools zoals perf Ze maken het mogelijk om het CPU-gebruik op functieniveau te profileren, zowel voor de gebruiker als de kernel, gebeurtenissen gedurende enkele seconden of minuten te loggen en vervolgens een interactief rapport te leveren. perf stat, perf record y perf report u kunt zien waar de CPU-tijd daadwerkelijk wordt verbruikt en welk deel overeenkomt met de kern.waarbij bijvoorbeeld een storingsgolf of een slecht afgestelde planner wordt geïdentificeerd.

Als u nog meer detail nodig heeft, ftrace Het traceersubsysteem van de kernel biedt de mogelijkheid om specifieke tracers te activeren (bijvoorbeeld de functietracer) en in realtime of achteraf te onderzoeken welke aanroepen er plaatsvinden. Door de juiste tracer in te schakelen en de inhoud ervan te analyseren, kunnen we de resultaten bekijken. /sys/kernel/debug/tracing/trace het onthult het aan jou hotspots binnen de kernel zelfDit is erg handig wanneer algemene meetwaarden niet volstaan.

Parallel daaraan is het raadzaam om geautomatiseerde monitoringscripts te implementeren die periodiek belangrijke gegevens (netwerkstatistieken, geheugentellers, aantal geopende bestandsdescriptors, enz.) naar roterende logbestanden schrijven. Zodra bepaalde drempelwaarden worden bereikt (bijvoorbeeld het overschrijden van een gespecificeerd aantal geopende bestandsdescriptors), kunnen deze scripts waarschuwingen genereren via e-mail of andere kanalen, waardoor... Gevaarlijke trends signaleren voordat het probleem escaleert..

Ten slotte, bij langdurige stresstestfasen (24 uur of langer), kunnen hulpmiddelen zoals stress-ng gecombineerd met de continue verzameling van meetgegevens (via vmstat, iostat, sarHiermee kunt u de stabiliteit van het systeem met de nieuwe kernelconfiguratie beoordelen en controleren of er geen OOM-gebeurtenissen, crashes, onverwachte herstarts of progressieve prestatieverminderingen optreden bij aanhoudende belasting.

Het optimaliseren van de Linux-kernel met sysctl en andere mechanismen is geen eenmalige taak, maar een iteratief proces waarbij resultaten worden gemeten, parameters worden aangepast en alles nauwgezet wordt gedocumenteerd. Met een duidelijke methodologie, specifieke profielen voor elk type workload, een goede set profilingtools en strikte wijzigingscontrole is het mogelijk om servers te realiseren die het maximale uit hun hardware halen. Hogere doorvoersnelheid, lagere latentie en aanzienlijk betere stabiliteit. in vergelijking met wat de standaard fabrieksconfiguratie biedt.

Optimalisatie van de latentie van de Linux-kernel
Gerelateerd artikel:
Geavanceerde handleiding voor het optimaliseren van de Linux-kernel en het verminderen van latentie.