{"id":20220,"date":"2026-08-01T11:48:52","date_gmt":"2026-08-01T09:48:52","guid":{"rendered":"https:\/\/webhosting.de\/transparent-huge-pages-linux-performance-booster-oder-problem-optimierung\/"},"modified":"2026-08-01T11:48:52","modified_gmt":"2026-08-01T09:48:52","slug":"transparent-huge-pages-optimisation-des-performances-sous-linux-ou-source-de-problemes","status":"publish","type":"post","link":"https:\/\/webhosting.de\/fr\/transparent-huge-pages-linux-performance-booster-oder-problem-optimierung\/","title":{"rendered":"Les \u00ab Huge Pages \u00bb transparentes sous Linux : un gain de performances ou un probl\u00e8me ?"},"content":{"rendered":"<p><strong>transparent hugepages<\/strong> versprechen in Linux weniger TLB\u2011Misses, weniger Page\u2011Table\u2011Overhead und damit mehr Durchsatz \u2013 zugleich berichten Admins \u00fcber Latenzspitzen und schwankende Antwortzeiten. Ich zeige klar, wann THP als <strong>Performance\u2011Booster<\/strong> wirkt, wo Risiken lauern und wie ich es so konfiguriere, dass Workloads verl\u00e4sslich laufen.<\/p>\n\n<h2>Zentrale Punkte<\/h2>\n<p>Die folgenden Kernaussagen helfen mir, THP schnell einzuordnen und richtig zu konfigurieren; jede Zeile markiert den wichtigsten <strong>Schwerpunkt<\/strong>.<\/p>\n<ul>\n  <li><strong>Dynamik<\/strong>: THP fasst 4\u2011KB\u2011Seiten automatisch zu 2\u2011MB\u2011Pages zusammen und l\u00f6st sie wieder auf.<\/li>\n  <li><strong>Vorteile<\/strong>: Weniger TLB\u2011Misses und geringerer CPU\u2011Overhead bei gro\u00dfen, sequenziellen Datenbereichen.<\/li>\n  <li><strong>Nachteile<\/strong>: Kompaktierung kann Latenzspr\u00fcnge erzeugen \u2013 heikel f\u00fcr Datenbanken und VMs.<\/li>\n  <li><strong>Modi<\/strong>: always, madvise, never \u2013 Setups profitieren meist von \u201emadvise\u201c oder \u201enever\u201c.<\/li>\n  <li><strong>Praxis<\/strong>: Hybrider Ansatz mit statischen HugePages f\u00fcr kritische DBs, THP selektiv f\u00fcr Apps.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverraum-optimierung-8572.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wie THP im Kernel arbeitet<\/h2>\n<p>Ich verstehe THP als zus\u00e4tzliche <strong>Abstraktion<\/strong> im Speichermanagement: Der Kernel \u201ecollapst\u201c benachbarte 4\u2011KB\u2011Seiten zu 2\u2011MB\u2011Folios, sobald Zugriffsmuster und Speicherlage dazu passen. Diese Promotion reduziert Eintr\u00e4ge in den Page Tables, was die <strong>MMU<\/strong> entlastet und TLB\u2011Trefferquoten erh\u00f6ht. Wenn sich Muster \u00e4ndern oder Speicher fragmentiert, demotiert der Kernel wieder zu 4\u2011KB\u2011Pages, damit Hot\u2011 und Cold\u2011Daten flexibel bleiben. Dieser Fluss aus Promotion und Demotion passiert transparent f\u00fcr Anwendungen, die ihr virtuelles Adresslayout unver\u00e4ndert sehen. Auf moderner Hardware kann das sp\u00fcrbar helfen, solange der Hintergrundaufwand nicht in den Vordergrund rutscht.<\/p>\n\n<h2>Workloads, die sichtbar profitieren<\/h2>\n<p>Gro\u00dfe, zusammenh\u00e4ngende Speicherbereiche mit eher <strong>sequenziellen<\/strong> Zugriffen profitieren von THP besonders deutlich. Ich sehe Vorteile bei In\u2011Memory\u2011Caches, Analytik\u2011Engines und numerischen HPC\u2011Codes mit gro\u00dfem Array\u2011Fu\u00dfabdruck. Erfahrungsberichte zu C++\u2011Hash\u2011Tabellen zeigen zweistellige Zugewinne, wenn TLB\u2011Misses seltener auftreten und die CPU weniger Verwaltungsarbeit leisten muss. Auch Datenbanken mit \u00fcberwiegend lesenden, cachefreundlichen Mustern k\u00f6nnen zulegen, solange der Kernel keine teuren Kompaktierungen ausl\u00f6st. In Summe steigt oft der <strong>Durchsatz<\/strong>, wenn Daten \u201ebreit\u201c im Speicher liegen und die TLB\u2011Last sinkt.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux_pages_meeting_4302.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Warum Latenzspitzen auftreten<\/h2>\n<p>THP braucht zusammenh\u00e4ngende physische <strong>Speicherbl\u00f6cke<\/strong>; bei hoher Fragmentierung muss der Kernel Bereiche verschieben und komprimieren. Diese Kompaktierung l\u00e4uft meist im Hintergrund, kann aber unter Druck in den Vordergrund treten und Pausen erzeugen. Genau diese Momente treiben P99\u2011Latenzen nach oben, obwohl der Median gut aussieht. Ich pr\u00fcfe deshalb regelm\u00e4\u00dfig die <a href=\"https:\/\/webhosting.de\/memory-fragmentation-serverbetrieb-cacheboost\/\">Speicherfragmentierung<\/a>, bevor ich THP aggressiv einschalte. Wer latenzkritische Dienste betreibt, sollte solche Spikes im Blick behalten und bei Bedarf die Defragmentierung drosseln oder THP abschalten, um <strong>Jitter<\/strong> zu vermeiden.<\/p>\n\n<h2>Datenbanken, Virtualisierung und mysql performance<\/h2>\n<p>Relationale <strong>Datenbanken<\/strong> wie MySQL und PostgreSQL reagieren empfindlich auf unvorhersehbare Pausen durch Speicherkompaktierung. Ich habe mehrfach beobachtet, dass \u201emysql performance\u201c unter THP schwankt, obwohl der Mittelwert stabil wirkt. In Virtualisierung multiplizieren sich kurze H\u00e4nger durch zus\u00e4tzliche Schichten, was verl\u00e4ssliche Antwortzeiten erschwert. Wer Oracle\u2011 oder gro\u00dfe MySQL\u2011Instanzen betreibt, f\u00e4hrt meist besser mit statischen HugePages und deaktiviert THP, um konsistente Latenzen zu erreichen. F\u00fcr kritische VMs und Echtzeitdienste gilt das Gleiche, weil deterministisches Verhalten hier klar Vorrang vor <strong>Durchsatz<\/strong> hat.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux-performance-boost-problems-7290.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>THP richtig einstellen: Modi und Schalter<\/h2>\n<p>Ich steuere THP \u00fcber Sysfs und den <strong>Kernel<\/strong>-Cmdline\u2011Parameter. Der Modus steht in <code>\/sys\/kernel\/mm\/transparent_hugepage\/enabled<\/code> und zeigt z. B. \u201ealways madvise [never]\u201c, wobei der eckige Eintrag aktiv ist. F\u00fcr latenzkritische Knoten setze ich <code>echo never &gt; \/sys\/kernel\/mm\/transparent_hugepage\/enabled<\/code> und gleiche Einstellung in <code>...\/defrag<\/code>, damit keine aggressive Kompaktierung l\u00e4uft. F\u00fcr gemischte Workloads nutze ich gern <code>madvise<\/code> und markiere nur geeignete Bereiche mit <code>MADV_HUGEPAGE<\/code>. F\u00fcr eine dauerhafte Deaktivierung trage ich <strong>transparent_hugepage=never<\/strong> in die Kernel\u2011Cmdline ein und aktualisiere den Bootloader.<\/p>\n\n<h2>THP\u2011Modi im Vergleich und empfohlene Settings<\/h2>\n<p>Die folgende Tabelle ordnet die g\u00e4ngigen <strong>Modi<\/strong> ein und hilft mir, je Serverrolle z\u00fcgig zu entscheiden.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Modus<\/th>\n      <th>Vorteile<\/th>\n      <th>Risiken<\/th>\n      <th>Geeignet f\u00fcr<\/th>\n      <th>Hinweis<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>always<\/td>\n      <td>Maximaler Automatik\u2011Effekt, breiter <strong>TLB<\/strong>-Entlastung<\/td>\n      <td>H\u00f6here Chance auf Kompaktierungs\u2011Latenzen<\/td>\n      <td>App\u2011Server ohne harte P99\u2011Ziele<\/td>\n      <td>NUR nach Lasttests einsetzen<\/td>\n    <\/tr>\n    <tr>\n      <td>madvise<\/td>\n      <td>Gezielte Vorteile, weniger \u00dcberraschungen<\/td>\n      <td>Erfordert App\/Lib\u2011Opt\u2011in<\/td>\n      <td>Gemischte Workloads, Caches, Analytik<\/td>\n      <td>Guter <strong>Default<\/strong> f\u00fcr Hosting<\/td>\n    <\/tr>\n    <tr>\n      <td>never<\/td>\n      <td>Konstante Latenz, keine THP\u2011Nebenwirkungen<\/td>\n      <td>Kein THP\u2011Boost<\/td>\n      <td>Datenbanken, VMs, Echtzeitdienste<\/td>\n      <td>Mit statischen HugePages kombinieren<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/THPLinuxPerformance3489.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>THP vs. statische HugePages im Hosting<\/h2>\n<p>Statische HugePages liefern mir sehr <strong>konstante<\/strong> Latenzen, weil ich sie vorab reserviere und der Kernel nicht im Hintergrund kompaktiert. F\u00fcr gro\u00dfe Datenbanken und lang laufende JVMs plane ich die Anzahl gro\u00dfz\u00fcgig und halte so die Speicherwege kurz. THP punktet dagegen mit Bequemlichkeit und automatischen Gewinnen bei weniger sensiblen Lasten. In vielen Setups kombiniere ich beides: THP f\u00fcr Web\u2011 und App\u2011Knoten, statische HugePages f\u00fcr DB\u2011Server. Eine gute Einf\u00fchrung liefert dieser \u00dcberblick zu <a href=\"https:\/\/webhosting.de\/server-hugepages-speicheroptimierung-hosting-performant\/\">HugePages im Hosting<\/a>, den ich als Startpunkt nutze, bevor ich an Feineinstellungen gehe und <strong>Profile<\/strong> pro Rolle festlege.<\/p>\n\n<h2>Praxisleitfaden f\u00fcr WordPress, Shops und Microservices<\/h2>\n<p>F\u00fcr kleine bis mittlere <strong>WordPress<\/strong>-Sites aktiviere ich h\u00e4ufig THP im Modus \u201emadvise\u201c und pr\u00fcfe Latenzen unter realer Last. Sp\u00fcrbare Vorteile treten auf, wenn PHP\u2011FPM, Caches und Webprozesse gro\u00dfe, lesende Bereiche halten. Bei dicken Shop\u2011Datenbanken oder Multi\u2011Tenant\u2011Stacks teste ich THP aus, aber schalte es z\u00fcgig ab, sobald P95\/P99 anziehen. F\u00fcr produktive Datenbank\u2011Hosts setze ich fast immer auf statische HugePages und lasse THP aus. Diese Linie schafft verl\u00e4ssliche Antwortzeiten, w\u00e4hrend App\u2011Server den Automatik\u2011Effekt mit wenig <strong>Risiko<\/strong> nutzen.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/dev_desk_linux_code_3892.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitoring und Kennzahlen, die z\u00e4hlen<\/h2>\n<p>Ich integriere THP\u2011Statistiken, Kompaktierungsz\u00e4hler und <strong>TLB<\/strong>-Miss\u2011Raten in mein Observability\u2011Setup. Dateien unter <code>\/sys\/kernel\/mm\/transparent_hugepage\/<\/code>, <code>vmstat<\/code> und Tools wie <code>perf<\/code> helfen mir, Hotspots schnell zu erkennen. Ich achte auf P95\/P99\u2011Latenzen, Collapses pro Sekunde und CPU\u2011Zeit in Kcompactd. Auf NUMA\u2011Systemen pr\u00fcfe ich zudem Speicher\u2011Lokalit\u00e4t, weil falsche Zuordnung Effekte verdeckt; ein guter Einstieg ist dieser Leitfaden zur <a href=\"https:\/\/webhosting.de\/server-numa-locality-cpu-memory-affinity-optimierung-core\/\">NUMA\u2011Locality<\/a>. So belege ich mit Zahlen, ob THP n\u00fctzt oder <strong>schadet<\/strong>, statt mich auf Bauchgef\u00fchl zu verlassen.<\/p>\n\n<h2>Troubleshooting und schneller Rollback<\/h2>\n<p>Steigen Latenzen pl\u00f6tzlich, schalte ich THP tempor\u00e4r mit <strong>never<\/strong> ab und vergleiche Messwerte vor\/nach dem Wechsel. Bleibt der Effekt bestehen, pr\u00fcfe ich Fragmentierung, I\/O\u2011Wartezeiten und Garbage\u2011Collector\u2011Phasen bei JVMs. Sobald THP als Ursache feststeht, setze ich dauerhaft <code>transparent_hugepage=never<\/code> oder gehe auf \u201emadvise\u201c mit gezieltem Opt\u2011in. In stark ausgelasteten Fenstern stoppe ich aggressive Defragmentierung, um Spitzen zu gl\u00e4tten. Erst wenn der <strong>Jitter<\/strong> verschwindet, rolle ich schrittweise zur\u00fcck und dokumentiere die Entscheidung pro Serverrolle.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux-server-performance-5732.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Was oft fehlt: anonyme vs. dateibasierte THP und Folios<\/h2>\n<p>Ich unterscheide zwischen anonymem Speicher (Heaps, Stacks, Mappings ohne Datei) und dateibasierten Seiten (Page Cache). THP ist f\u00fcr anonymen Speicher etabliert und wird durch <code>enabled<\/code>\/<code>defrag<\/code> und den User\u2011Space\u2011Hint <code>MADV_HUGEPAGE<\/code> gesteuert. F\u00fcr geteilte Speicherbereiche (tmpfs\/shmem) existiert ein eigener Schalter <code>\/sys\/kernel\/mm\/transparent_hugepage\/shmem_enabled<\/code>, der \u00e4hnliche Regeln anwendet. Der seit neueren Kernel\u2011Generationen fl\u00e4chig genutzte Folio\u2011Ansatz fasst interne Repr\u00e4sentationen effizienter zusammen und ebnet der Kernel\u2011Seite den Weg f\u00fcr variable, gr\u00f6\u00dfere Einheiten \u2013 im Alltag merke ich das als robustere THP\u2011Promotion, solange Fragmentierung und Druck nicht dominieren.<\/p>\n\n<h2>Feineinstellungen: relevante Kernel\u2011 und Sysfs\u2011Parameter<\/h2>\n<p>F\u00fcr wiederholbare Ergebnisse drehe ich an gezielten Reglern statt pauschal \u201ealways\/never\u201c:<\/p>\n<ul>\n  <li><code>\/sys\/kernel\/mm\/transparent_hugepage\/enabled<\/code>: Grundmodus f\u00fcr anonyme THP.<\/li>\n  <li><code>\/sys\/kernel\/mm\/transparent_hugepage\/defrag<\/code>: Aggressivit\u00e4t der Defragmentierung (bei Latenzproblemen konservativer stellen oder deaktivieren).<\/li>\n  <li><code>\/sys\/kernel\/mm\/transparent_hugepage\/khugepaged\/<\/code>: Scan\u2011Takt und Grenzen des Hintergrundthreads (z. B. <code>scan_sleep_millisecs<\/code>, <code>pages_to_scan<\/code>), um CPU\u2011Last und Collapses zu balancieren.<\/li>\n  <li><code>\/proc\/sys\/vm\/compaction_proactiveness<\/code>: Proaktive Kompaktierung fr\u00fchzeitig drosseln, wenn Spikes st\u00f6ren.<\/li>\n  <li><code>\/proc\/sys\/vm\/compact_unevictable_allowed<\/code>: Ob auch schwerverdr\u00e4ngbare Seiten kompaktiert werden d\u00fcrfen \u2013 konservativer ist oft stabiler.<\/li>\n  <li><code>\/proc\/sys\/vm\/swappiness<\/code>: Hohe Swappiness f\u00fchrt bei Druck zu mehr Reclaim; THP m\u00fcssen dabei h\u00e4ufig gesplittet werden \u2013 ich setze f\u00fcr Latenzziele niedrige Werte.<\/li>\n<\/ul>\n<p>Messgr\u00f6\u00dfen lese ich erg\u00e4nzend aus <code>\/proc\/vmstat<\/code> (z. B. <code>thp_fault_alloc<\/code>, <code>thp_collapse_alloc<\/code>, <code>thp_split<\/code>, <code>compact_stall<\/code>) sowie <code>\/proc\/meminfo<\/code> (<code>AnonHugePages<\/code>, <code>ShmemHugePages<\/code>). Damit sehe ich, ob THP tats\u00e4chlich genutzt werden und ob Splits\/Kompaktierungen in Spitzenzeiten zunehmen.<\/p>\n\n<h2>Swap, Reclaim und \u201eDeferred Split\u201c<\/h2>\n<p>Unter Speicherdruck wird die Illusion \u201egro\u00dfer, zusammenh\u00e4ngender\u201c Pages br\u00fcchig: Reclaim und Swap k\u00f6nnen 2\u2011MB\u2011Pages nicht direkt auslagern \u2013 zuerst werden sie in 4\u2011KB\u2011Seiten gesplittet. Diese Splits passieren \u00fcber eine Deferred\u2011Queue, die sp\u00e4ter abgearbeitet wird. In der Praxis hei\u00dft das: Kurze Lastspitzen k\u00f6nnen Sekunden sp\u00e4ter Latenzartefakte ausl\u00f6sen, wenn Splits nachtr\u00e4glich abgearbeitet werden. Ich entsch\u00e4rfe das durch:<\/p>\n<ul>\n  <li>niedrige <code>vm.swappiness<\/code> oder Swap\u2011Verzicht auf Latenz\u2011Knoten,<\/li>\n  <li>reservierte Headroom\u2011Budgets im Memory\u2011Sizing (keine 99\u2011%\u2011Belegung),<\/li>\n  <li>konservative <code>defrag<\/code>\u2011Einstellungen, damit sp\u00e4tere Splits seltener n\u00f6tig werden.<\/li>\n<\/ul>\n\n<h2>NUMA\u2011Effekte und AutoNUMA<\/h2>\n<p>THP entfaltet seine Wirkung nur, wenn Speicher auch <strong>lokal<\/strong> zur CPU liegt. Auf NUMA\u2011Hosts beobachte ich, dass aggressive Kompaktierung lokale Reserven verknappt und dann Remote\u2011Allokationen ausl\u00f6st \u2013 die Latenz steigt, obwohl THP an sich aktiv ist. Ich gehe so vor:<\/p>\n<ul>\n  <li>CPU\u2011 und Speicher\u2011Affinity pro Dienst definieren (z. B. <em>numactl<\/em> im Service\u2011Wrapper),<\/li>\n  <li><code>kernel.numa_balancing<\/code> bewusst w\u00e4hlen: Bei stabil gepinnten Diensten oft besser aus, bei dynamischen Lasten kann es helfen,<\/li>\n  <li>Monitoring der NUMA\u2011Lokalisierung mit in die THP\u2011Auswertung nehmen (siehe Link zur NUMA\u2011Locality oben).<\/li>\n<\/ul>\n<p>Wenn Remote\u2011Anteile steigen, relativiert das die TLB\u2011Gewinne von THP \u2013 dann ist zuerst die Lokalit\u00e4t, danach THP\u2011Tuning zu priorisieren.<\/p>\n\n<h2>Virtualisierung: Host vs. Gast sauber trennen<\/h2>\n<p>Im KVM\u2011Umfeld trenne ich strikt zwischen Host\u2011 und Gast\u2011Entscheidungen. Auf dem Host sichere ich deterministische Latenzen f\u00fcr alle VMs, typischerweise mit statischen HugePages (1\u202fGB\/2\u202fMB via hugetlbfs) und deaktiviertem THP, damit Kompaktierung nicht alle G\u00e4ste gleichzeitig trifft. Innerhalb des Gasts verhalte ich mich wie auf Bare\u2011Metal: Datenbank\u2011VMs bekommen statische HugePages und THP \u201enever\u201c, Web\u2011\/App\u2011VMs d\u00fcrfen \u201emadvise\u201c nutzen. Ich ber\u00fccksichtige zudem, dass <strong>Ballooning<\/strong> und Overcommit im Gast Speicher zerschneiden und THP\u2011Quoten dr\u00fccken \u2013 bei Latenz\u2011Zielen reduziere ich Ballooning oder plane mehr festen RAM ein. KSM\u2011Deduplikation spart zwar Speicher, harmoniert aber nur bedingt mit gro\u00dfen Pages; ich aktiviere KSM nicht auf Hosts mit strengen Latenzbudgets.<\/p>\n\n<h2>Container und Kubernetes<\/h2>\n<p>In Containern gilt: THP ist eine Kernel\u2011Eigenschaft des Nodes. Ich lege den Systemmodus auf dem Worker fest und akzeptiere, dass einzelne Pods kein eigenes THP\u2011Policy\u2011Override besitzen. Praxistipps:<\/p>\n<ul>\n  <li>Nodes mit gemischter Last: <code>madvise<\/code> als Grundmodus, Libraries wie <em>jemalloc<\/em> oder Anwendungen gezielt per <code>madvise()<\/code> opt\u2011in lassen.<\/li>\n  <li>Memory\u2011Limits mit Headroom: in engen cgroups f\u00fchrt Reclaim h\u00e4ufiger zu Splits; etwas Puffer stabilisiert P99.<\/li>\n  <li>Rollouts in Wellen: Node\u2011Pool A mit THP\u2011\u00c4nderung, B als Control \u2013 P95\/P99 und CPU\u2011Zeit in <em>kcompactd<\/em> vergleichen.<\/li>\n<\/ul>\n\n<h2>JVM, malloc und Laufzeitumgebungen<\/h2>\n<p>JVM\u2011Heaps profitieren von weniger TLB\u2011Misses, allerdings m\u00f6gen ML\/GC\u2011Phasen keine unplanbaren Pausen. F\u00fcr konsistente Pausenzeiten auf gro\u00dfen Heaps setze ich statische HugePages (<code>-XX:+UseLargePages<\/code> nutzt hugetlbfs) und lasse THP aus. In weniger sensiblen JVM\u2011Diensten kann <code>madvise<\/code> THP\u2011Vorteile heben, solange ich GC\u2011Metriken eng begleite. <em>malloc<\/em>\u2011Implementierungen verhalten sich unterschiedlich: <em>jemalloc<\/em> kann per <code>madvise<\/code>\u2011Hints gro\u00dfe Arenen besser f\u00fcr THP vorbereiten; glibc\u2011malloc skaliert mit vielen Arenen, was Fragmentierung treiben kann \u2013 hier reduziere ich die Arenenanzahl in latenzkritischen Prozessen, um THP\u2011Promotion zu erleichtern.<\/p>\n\n<h2>Teststrategie und sicherer Rollout<\/h2>\n<p>Ich befolge eine klare Reihenfolge, um Gewinne sauber von Nebenwirkungen zu trennen:<\/p>\n<ol>\n  <li>Baseline aufnehmen: P50\/P95\/P99, CPU\u2011Zyklen, <code>perf stat -e dTLB-load-misses,iTLB-load-misses<\/code>, <code>\/proc\/vmstat<\/code>\u2011Z\u00e4hler.<\/li>\n  <li>Modus \u201emadvise\u201c aktivieren, gezielt eine Komponente opt\u2011in, erneut messen.<\/li>\n  <li>Kompaktierung drosseln (<code>defrag<\/code> konservativer, <code>compaction_proactiveness<\/code> senken) und erneut messen.<\/li>\n  <li>Spitzenlast und Hintergrundjobs (Backups, Reindizes, Deployments) explizit im Test abbilden \u2013 genau dann zeigen sich Jitter.<\/li>\n  <li>Nur wenn P95\/P99 stabil sind, Wirkung auf mehr Dienste ausrollen. Sonst zur\u00fcck auf \u201enever\u201c oder statische HugePages.<\/li>\n<\/ol>\n\n<h2>Checkliste f\u00fcr den Alltag<\/h2>\n<ul>\n  <li>Ziel klar: Durchsatz oder Latenzkonstanz? Danach Modus w\u00e4hlen.<\/li>\n  <li>Fragmentierung pr\u00fcfen, bevor \u201ealways\u201c in Produktion geht.<\/li>\n  <li>NUMA\u2011Lokalit\u00e4t zuerst fixen, dann THP feintunen.<\/li>\n  <li>Swap und Reclaim im Blick: niedrige Swappiness f\u00fcr Latenz\u2011Dienste.<\/li>\n  <li>khugepaged\u2011Parameter an Workload anpassen, nicht blind Standards nutzen.<\/li>\n  <li>Bei Datenbanken\/VMs: statische HugePages bevorzugen, THP \u201enever\u201c.<\/li>\n  <li>Rollback\u2011Plan dokumentieren und automatisieren.<\/li>\n<\/ul>\n\n<h2>Kurz zusammengefasst<\/h2>\n<p>THP kann ein klarer <strong>Booster<\/strong> sein, wenn Workloads gro\u00dfe, lesende Speicherbereiche nutzen und keine harten P99\u2011Ziele haben. Bei Datenbanken, Virtualisierung und Echtzeitdiensten bevorzuge ich konsistente Latenzen und setze auf statische HugePages. Ich w\u00e4hle \u201emadvise\u201c als sicheren Mittelweg f\u00fcr gemischte Server und lasse Anwendungen gezielt optieren. Gr\u00fcndliche Messungen, gutes Monitoring und eine eindeutige Rollback\u2011Strategie verhindern teure \u00dcberraschungen. So lie\u00dfe sich der Nutzen von <strong>transparent hugepages<\/strong> heben, ohne die Verl\u00e4sslichkeit produktiver Systeme zu gef\u00e4hrden.<\/p>","protected":false},"excerpt":{"rendered":"<p>Les \u00ab Transparent Huge Pages \u00bb optimisent le noyau Linux gr\u00e2ce \u00e0 des pages m\u00e9moire de grande taille. D\u00e9couvrez dans quels cas les \u00ab Transparent Huge Pages \u00bb acc\u00e9l\u00e8rent vos serveurs et dans quels cas elles constituent un d\u00e9fi pour les bases de donn\u00e9es.<\/p>","protected":false},"author":1,"featured_media":20213,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"102","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"transparent hugepages","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20213","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/20220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/comments?post=20220"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/20220\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media\/20213"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media?parent=20220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/categories?post=20220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/tags?post=20220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}