{"id":21223,"date":"2026-09-01T08:32:24","date_gmt":"2026-09-01T06:32:24","guid":{"rendered":"https:\/\/webhosting.de\/ksm-linux-kernel-samepage-merging-virtualisierung-effizient-speichercloud\/"},"modified":"2026-09-01T08:32:24","modified_gmt":"2026-09-01T06:32:24","slug":"ksm-jadro-systemu-linux-scalanie-stron-pamieci-wirtualizacja-wydajna-pamiec-w-chmurze","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/ksm-linux-kernel-samepage-merging-virtualisierung-effizient-speichercloud\/","title":{"rendered":"Kernel Samepage Merging: KSM dla lepszej wydajno\u015bci wirtualizacji"},"content":{"rendered":"<p><strong>Wirtualizacja KSM<\/strong> zmniejsza fizyczne zapotrzebowanie na pami\u0119\u0107 RAM poprzez to, \u017ce j\u0105dro systemu Linux \u0142\u0105czy identyczne strony pami\u0119ci z r\u00f3\u017cnych maszyn wirtualnych i efektywnie je wsp\u00f3\u0142dzieli za pomoc\u0105 mechanizmu \u201ecopy-on-write\u201d. W ten spos\u00f3b zwi\u0119kszam g\u0119sto\u015b\u0107 maszyn wirtualnych, \u0142agodz\u0119 w\u0105skie gard\u0142a pami\u0119ci RAM i utrzymuj\u0119 <strong>Wydajno\u015b\u0107<\/strong> w r\u00f3wnowadze.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<p>Poni\u017csze kluczowe stwierdzenia pomagaj\u0105 mi szybko zrozumie\u0107, na czym polega KSM, i wykorzystywa\u0107 t\u0119 metod\u0119 w spos\u00f3b ukierunkowany na cel:<\/p>\n<ul>\n  <li><strong>Deduplikacja<\/strong> Identyczne strony pami\u0119ci znacznie zmniejszaj\u0105 zu\u017cycie pami\u0119ci RAM.<\/li>\n  <li><strong>Kopiowanie przy zapisie<\/strong> umo\u017cliwia wsp\u00f3lne przegl\u0105danie stron i rozdziela je dopiero w przypadku wprowadzenia zmian.<\/li>\n  <li><strong>Precyzyjna regulacja<\/strong> Parametry ksmd pozwalaj\u0105 zr\u00f3wnowa\u017cy\u0107 obci\u0105\u017cenie procesora i oszcz\u0119dno\u015bci.<\/li>\n  <li><strong>Lokalizacja NUMA<\/strong> zapobiega niepotrzebnym op\u00f3\u017anieniom w hostach z wieloma gniazdami.<\/li>\n  <li><strong>Bezpiecze\u0144stwo<\/strong> wymaga selektywnego udost\u0119pniania w \u015brodowiskach wielodost\u0119pnych.<\/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\/09\/rechenzentrum-ksm-7425.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym jest KSM? Podstawy i przebieg<\/h2>\n\n<p>Z <strong>\u0141\u0105czenie stron pami\u0119ci w j\u0105drze systemu<\/strong> W\u0105tek j\u0105dra ksmd regularnie przeszukuje anonimowe strony prywatne oznaczone jako \u201emergeable\u201c i \u0142\u0105czy tre\u015bci identyczne na poziomie bit\u00f3w. Korzystam z tego, \u017ce cz\u0119sto wiele maszyn wirtualnych przechowuje w pami\u0119ci identyczne biblioteki, kody programowe lub komponenty systemu operacyjnego. KSM oznacza po\u0142\u0105czone strony jako <strong>Kopiowanie przy zapisie<\/strong>, dzi\u0119ki czemu wszyscy go\u015bcie odczytuj\u0105 t\u0119 sam\u0105 stron\u0119 fizyczn\u0105, dop\u00f3ki jeden z nich nie wykona operacji zapisu. Dopiero w momencie dost\u0119pu zapisu j\u0105dro tworzy dla tego procesu w\u0142asn\u0105 stron\u0119, podczas gdy strona pierwotna pozostaje dalej wsp\u00f3\u0142dzielona. Wa\u017cne: KSM nie deduplikuje stron systemu plik\u00f3w ani pami\u0119ci podr\u0119cznej stron, a ja musz\u0119 jawnie zwolni\u0107 pami\u0119\u0107 na potrzeby scalania.<\/p>\n\n<h2>Wykorzystanie w \u015brodowiskach wirtualizacyjnych<\/h2>\n\n<p>W hostach z du\u017c\u0105 liczb\u0105 podobnych maszyn wirtualnych <strong>KSM<\/strong> daje najwi\u0119kszy efekt, poniewa\u017c strony redundantne wyst\u0119puj\u0105 bardzo cz\u0119sto. W konfiguracjach KVM i chmurowych scalanie znacznie zmniejsza efektywne obci\u0105\u017cenie pami\u0119ci RAM na go\u015bcia, zwi\u0119kszaj\u0105c w ten spos\u00f3b g\u0119sto\u015b\u0107 maszyn wirtualnych na serwerze. Praktyczne do\u015bwiadczenia wskazuj\u0105 na mo\u017cliwo\u015b\u0107 uzyskania nawet o 300 % wi\u0119cej system\u00f3w-go\u015bci przy odpowiednim dostrojeniu, bez zauwa\u017calnego pogorszenia czasu reakcji. Je\u015bli po\u0142\u0105cz\u0119 KSM z <a href=\"https:\/\/webhosting.de\/pl\/wirtualizacja-pamieci-ram-optimus\/\">Nadmierne zaanga\u017cowanie pami\u0119ci<\/a>, dzi\u0119ki czemu hosty s\u0105 lepiej obci\u0105\u017cone, a dost\u0119pna pami\u0119\u0107 operacyjna wykorzystywana jest w bardziej ukierunkowany spos\u00f3b. Dzi\u0119ki wsp\u00f3\u0142dzieleniu identycznych stron zmniejszam ryzyko wyst\u0105pienia szczyt\u00f3w obci\u0105\u017cenia pami\u0119ci wymiany i uzyskuj\u0119 p\u0142ynne <strong>Krzywa wydajno\u015bci<\/strong> przez wiele instancji.<\/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\/09\/virtualisierungksm4523.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Konfiguracja w systemie Linux i KVM<\/h2>\n\n<p>Aktywuj\u0119 <strong>KSM<\/strong> za pomoc\u0105 CONFIG_KSM w j\u0105drze i steruj\u0119 zachowaniem poprzez sysfs w katalogu \/sys\/kernel\/mm\/ksm\/. Tam uruchamiam skanowanie (run), ustawiam intensywno\u015b\u0107 (pages_to_scan, sleep_millisecs) i obserwuj\u0119 zyski stron (pages_sharing). W dystrybucjach klasy korporacyjnej korzystam z us\u0142ug takich jak ksm i ksmtuned, kt\u00f3re automatycznie zwi\u0119kszaj\u0105 lub zmniejszaj\u0105 intensywno\u015b\u0107 w oparciu o progi wolnej pami\u0119ci RAM. Aby uzyska\u0107 precyzyjn\u0105 kontrol\u0119, celowo oznaczam obszary pami\u0119ci jako mo\u017cliwe do scalania za pomoc\u0105 madvise(MADV_MERGEABLE) lub prctl(PR_SET_MEMORY_MERGE). W \u015brodowiskach dynamicznych ch\u0119tnie \u0142\u0105cz\u0119 KSM z <a href=\"https:\/\/webhosting.de\/pl\/dynamika-zarzadzania-pamiecia-ram-w-wirtualizacji-serwerow\/\">Memory Ballooning<\/a>aby zoptymalizowa\u0107 <strong>Przydzielanie pami\u0119ci RAM<\/strong> aby zachowa\u0107 elastyczno\u015b\u0107.<\/p>\n\n<h2>Osi\u0105gi i tuning: w\u0142a\u015bciwa r\u00f3wnowaga<\/h2>\n\n<p>Zyskuj\u0119 przede wszystkim tam, gdzie pami\u0119\u0107 RAM stanowi prawdziwe w\u0105skie gard\u0142o, a rdzenie procesora pozosta\u0142yby niewykorzystane \u2013 wtedy <strong>KSM<\/strong> og\u00f3ln\u0105 wydajno\u015b\u0107, poniewa\u017c uruchamiam r\u00f3wnolegle wi\u0119cej maszyn wirtualnych. W\u0105tek ksmd zu\u017cywa jednak czas procesora, dlatego zbyt agresywne parametry skanowania mog\u0105 zmniejszy\u0107 te korzy\u015bci. Zaczynam ostro\u017cnie, mierz\u0119 warto\u015bci pages_sharing i pages_scanned oraz obserwuj\u0119 op\u00f3\u017anienia pod obci\u0105\u017ceniem, zanim zwi\u0119ksz\u0119 cz\u0119stotliwo\u015b\u0107 skanowania. Przy wystarczaj\u0105cej ilo\u015bci wolnej pami\u0119ci RAM ograniczam aktywno\u015b\u0107 ksmd i zwi\u0119kszam obci\u0105\u017cenie dopiero wtedy, gdy zaczyna brakowa\u0107 host\u00f3w. W ten spos\u00f3b zachowuj\u0119 dobry stosunek mi\u0119dzy <strong>Zysk z pami\u0119ci<\/strong> oraz obci\u0105\u017cenie procesora.<\/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\/09\/ksvm-virtualization-performance-8273.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Bezpiecze\u0144stwo i izolacja z obiektywnego punktu widzenia<\/h2>\n\n<p>Poniewa\u017c kilku go\u015bci korzysta z tej samej strony fizycznej, bior\u0119 pod uwag\u0119 potencjalne <strong>Kana\u0142y boczne<\/strong>, kt\u00f3re mog\u0142yby pozyska\u0107 informacje na podstawie czasu dzia\u0142ania lub wzorc\u00f3w dost\u0119pu. W wra\u017cliwych konfiguracjach wielodost\u0119pnych (multi-tenant) selektywnie wy\u0142\u0105czam wsp\u00f3\u0142dzielenie stron (Page Sharing) dla okre\u015blonych instancji lub host\u00f3w. Natomiast w przypadku mniej wra\u017cliwych obci\u0105\u017ce\u0144 z du\u017c\u0105 liczb\u0105 podobnych go\u015bci KSM stanowi niezawodn\u0105 metod\u0119 obni\u017cania koszt\u00f3w i zwi\u0119kszania g\u0119sto\u015bci. Dokumentuj\u0119 t\u0119 decyzj\u0119 dla ka\u017cdego klastra i prowadz\u0119 list\u0119 wyj\u0105tk\u00f3w dla szczeg\u00f3lnie krytycznych maszyn wirtualnych. W ten spos\u00f3b zapewniam <strong>Przejrzysto\u015b\u0107<\/strong> i ograniczam powierzchni\u0119 ataku, nie trac\u0105c przy tym na wydajno\u015bci.<\/p>\n\n<h2>NUMA, strony o du\u017cej pojemno\u015bci i interakcja<\/h2>\n\n<p>W systemach NUMA zwracam uwag\u0119 na <strong>Miejsce przechowywania<\/strong> i najlepiej pozwalam na scalanie KSM tylko w obr\u0119bie jednego w\u0119z\u0142a, aby operacje dost\u0119pu nie przebiega\u0142y przez wolne \u015bcie\u017cki. Zmniejsza to op\u00f3\u017anienia i pozwala utrzyma\u0107 wysok\u0105 przepustowo\u015b\u0107 na gniazdo. W po\u0142\u0105czeniu z technologi\u0105 Huge Pages ograniczam liczb\u0119 nieudanych odwo\u0142a\u0144 do TLB, ale musz\u0119 pami\u0119ta\u0107, \u017ce du\u017ce strony zmieniaj\u0105 prawdopodobie\u0144stwo wyst\u0105pienia identycznych bitowo tre\u015bci. Niekt\u00f3re obci\u0105\u017cenia bardziej korzystaj\u0105 z Huge Pages, inne z deduplikacji; weryfikuj\u0119 to za pomoc\u0105 test\u00f3w por\u00f3wnawczych. Celem pozostaje maksymalizacja dost\u0119pu lokalnego oraz <strong>Pami\u0119\u0107 zdalna<\/strong> kt\u00f3rych nale\u017cy unika\u0107.<\/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\/09\/ksm_virtualisierung_3485.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitorowanie i zrozumienie wska\u017anik\u00f3w<\/h2>\n\n<p>Oceniam wp\u0142yw <strong>KSM<\/strong> na podstawie niewielkiej liczby, ale miarodajnych wska\u017anik\u00f3w: pages_sharing, pages_shared, pages_scanned, pages_unshared oraz full_scans. Je\u015bli warto\u015b\u0107 pages_sharing stabilnie ro\u015bnie, a obci\u0105\u017cenie procesora utrzymuje si\u0119 na umiarkowanym poziomie, oznacza to, \u017ce moja konfiguracja zmierza w po\u017c\u0105danym kierunku. Je\u015bli warto\u015bci pozostaj\u0105 na sta\u0142ym poziomie, sprawdzam, czy go\u015bcie w og\u00f3le oznaczaj\u0105 pami\u0119\u0107 jako \u201emergeable\u201d. Dodatkowo obserwuj\u0119 Host-Swap, op\u00f3\u017anienia maszyn wirtualnych (VM-Latenzen) oraz IO-Wait, aby na czas wykry\u0107 skutki uboczne. Pulpity nawigacyjne z szeregami czasowymi pokazuj\u0105 mi trendy, dzi\u0119ki czemu mog\u0119 <strong>Korekty<\/strong> podejmuj\u0119 decyzje w oparciu o dane.<\/p>\n\n<h2>Przyk\u0142ady z praktyki i potencja\u0142 oszcz\u0119dno\u015bci<\/h2>\n\n<p>W klastrach testowych, w kt\u00f3rych znajdowa\u0142y si\u0119 dziesi\u0105tki podobnych maszyn wirtualnych z systemem Linux, zauwa\u017cy\u0142em dzi\u0119ki <strong>KSM<\/strong> cz\u0119\u015bciowo dwucyfrowe oszcz\u0119dno\u015bci pami\u0119ci RAM wyra\u017cone w punktach procentowych, a tym samym zauwa\u017calnie wy\u017csza g\u0119sto\u015b\u0107. Obci\u0105\u017cenia Java zawieraj\u0105ce wiele identycznych klas i bibliotek przynios\u0142y szczeg\u00f3lnie sp\u00f3jne korzy\u015bci. Im bardziej jednorodne s\u0105 instancje, tym bardziej zmniejsza si\u0119 ich \u015blad pami\u0119ciowy; stosy heterogeniczne zapewniaj\u0105 mniejsze, ale nadal u\u017cyteczne wyniki. W po\u0142\u0105czeniu z prawid\u0142owo skonfigurowanym overcommitem utrzymuj\u0119 niskie koszty na instancj\u0119 i obs\u0142uguj\u0119 wi\u0119cej us\u0142ug na tym samym sprz\u0119cie. W ten spos\u00f3b powstaje wyra\u017any <strong>efekt gospodarczy<\/strong> przy przewidywalnej jako\u015bci.<\/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\/09\/ksm_virtualisierung_3127.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>KSM a alternatywy: r\u00f3\u017cnice i wzajemne oddzia\u0142ywanie<\/h2>\n\n<p>Stawiam na <strong>Portfolio<\/strong> uzupe\u0142niaj\u0105ce techniki pami\u0119ciowe, kt\u00f3re dzia\u0142aj\u0105 r\u00f3\u017cnie w zale\u017cno\u015bci od celu. KSM usuwa nadmiarowo\u015b\u0107 zawarto\u015bci pami\u0119ci RAM, podczas gdy ballooning dynamicznie odzyskuje pami\u0119\u0107 dla go\u015bci, a Huge Pages zwi\u0119ksza wydajno\u015b\u0107 procesora. \u017badna z tych technik nie zast\u0119puje drugiej; \u0142\u0105cz\u0119 je w spos\u00f3b ukierunkowany, w zale\u017cno\u015bci od profilu obci\u0105\u017cenia i docelowej g\u0119sto\u015bci. Pocz\u0105tkuj\u0105cym poni\u017cszy przegl\u0105d pomo\u017ce szybciej dokona\u0107 wyboru. Kolejnym krokiem warto zapozna\u0107 si\u0119 z <a href=\"https:\/\/webhosting.de\/pl\/wirtualizacja-serwerow-kvm-xen-openvz-hosting-kernelboost\/\">KVM i Xen<\/a> w por\u00f3wnaniu, aby <strong>Wyb\u00f3r platformy<\/strong> odpowiednio sklasyfikowa\u0107.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Technologia<\/th>\n      <th>Zadanie<\/th>\n      <th>Przewaga<\/th>\n      <th>Wada<\/th>\n      <th>Odpowiedni dla<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>KSM<\/td>\n      <td>Deduplikacja identycznych stron pami\u0119ci RAM<\/td>\n      <td>Wysoki <strong>Oszcz\u0119dno\u015b\u0107 pami\u0119ci RAM<\/strong> w przypadku podobnych maszyn wirtualnych<\/td>\n      <td>Dodatkowe obci\u0105\u017cenie procesora spowodowane skanowaniem<\/td>\n      <td>Wielu podobnych go\u015bci, hosty KVM<\/td>\n    <\/tr>\n    <tr>\n      <td>Memory Ballooning<\/td>\n      <td>Dynamiczne odzyskiwanie magazynu gazu<\/td>\n      <td>Lepiej <strong>Wykorzystanie<\/strong> przy zmiennym obci\u0105\u017ceniu<\/td>\n      <td>Ka\u017cdy go\u015b\u0107 musi mie\u0107 sterownik do balon\u00f3w<\/td>\n      <td>Zr\u00f3\u017cnicowane profile obci\u0105\u017cenia<\/td>\n    <\/tr>\n    <tr>\n      <td>Ogromne strony<\/td>\n      <td>Wi\u0119ksze rozmiary stron w celu zmniejszenia liczby nieudanych odwo\u0142a\u0144 do TLB<\/td>\n      <td>Wy\u017cszy <strong>Wydajno\u015b\u0107 procesora<\/strong> w przypadku aplikacji wymagaj\u0105cych du\u017cej ilo\u015bci pami\u0119ci<\/td>\n      <td>Mniejsza szansa na deduplikacj\u0119<\/td>\n      <td>Bazy danych, \u015brodowiska JVM, silniki dzia\u0142aj\u0105ce w pami\u0119ci<\/td>\n    <\/tr>\n    <tr>\n      <td>NUMA-pinning<\/td>\n      <td>Powi\u0105zanie maszyn wirtualnych z lokalnymi w\u0119z\u0142ami pami\u0119ci masowej<\/td>\n      <td>Sta\u0142a <strong>Op\u00f3\u017anienie<\/strong> oraz przepustowo\u015b\u0107<\/td>\n      <td>Mniejsza elastyczno\u015b\u0107 w planowaniu<\/td>\n      <td>Hosty wieloplatformowe, obci\u0105\u017cenia, w kt\u00f3rych op\u00f3\u017anienia maj\u0105 kluczowe znaczenie<\/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\/09\/virtualisierung-ksm-7429.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Praktyczna aktywacja i podr\u0119czniki dla host\u00f3w<\/h2>\n<p>Na poziomie hosta kieruj\u0119 si\u0119 pragmatyzmem: uruchamiam ksm\/ksmtuned i ustawiam warto\u015bci domy\u015blne, kt\u00f3re sprawdzi\u0142y si\u0119 w praktyce. Przyk\u0142ad:<\/p>\n<pre><code>W\u0142\u0105czanie us\u0142ug # (w zale\u017cno\u015bci od dystrybucji)\nsystemctl enable --now ksm ksmtuned\n\nR\u0119czne dostrajanie # (dzia\u0142a natychmiastowo, do momentu ponownego uruchomienia systemu)\necho 1 &gt; \/sys\/kernel\/mm\/ksm\/run\necho 1000 &gt; \/sys\/kernel\/mm\/ksm\/pages_to_scan\necho 50 &gt; \/sys\/kernel\/mm\/ksm\/sleep_millisecs\n<\/code><\/pre>\n<p>W libvirt zarz\u0105dzam wsp\u00f3\u0142dzieleniem pami\u0119ci dla poszczeg\u00f3lnych maszyn wirtualnych. Domy\u015blnie QEMU oznacza pami\u0119\u0107 RAM go\u015bci jako \u201emergeable\u201d. W przypadku szczeg\u00f3lnie wra\u017cliwych maszyn wirtualnych wyra\u017anie wy\u0142\u0105czam wsp\u00f3\u0142dzielenie:<\/p>\n<pre><code><!-- Wy\u0142\u0105cz KSM dla tej maszyny wirtualnej -->\n<\/code><\/pre>\n<p>W ten spos\u00f3b stosuj\u0119 jasn\u0105 strategi\u0119: szerokie wdra\u017canie na serwerach z jednorodnymi obci\u0105\u017ceniami oraz ukierunkowane wy\u0142\u0105czenia w przypadku wyj\u0105tk\u00f3w.<\/p>\n\n<h2>Szczeg\u00f3\u0142owe informacje na temat precyzyjnej regulacji parametr\u00f3w KSM<\/h2>\n<ul>\n  <li><strong>run<\/strong>: 0 = wy\u0142\u0105czone, 1 = w\u0142\u0105czone, 2 = wy\u0142\u0105czone i usuni\u0119cie powi\u0105za\u0144 ze stronami, kt\u00f3re zosta\u0142y ju\u017c usuni\u0119te. U\u017cywam opcji \u201e2\u201c wy\u0142\u0105cznie do konkretnych test\u00f3w lub gdy chc\u0119 bezpiecznie cofn\u0105\u0107 udost\u0119pnianie przed okresami konserwacji.<\/li>\n  <li><strong>liczba_stron_do_zeskanowania<\/strong>: Liczba stron sprawdzanych w jednym cyklu. Wy\u017csze warto\u015bci przyspieszaj\u0105 wykrywanie identycznych stron, ale zwi\u0119kszaj\u0105 obci\u0105\u017cenie procesora.<\/li>\n  <li><strong>sleep_millisecs<\/strong>: Przerwa mi\u0119dzy cyklami. D\u0142u\u017csze przerwy zmniejszaj\u0105 obci\u0105\u017cenie systemowe, ale osi\u0105gni\u0119cie poziomu stabilnych oszcz\u0119dno\u015bci zajmuje w tym przypadku wi\u0119cej czasu.<\/li>\n  <li><strong>merge_across_nodes<\/strong>: W przypadku host\u00f3w NUMA ustawiam t\u0119 warto\u015b\u0107 na 0, aby scalanie odbywa\u0142o si\u0119 wy\u0142\u0105cznie w obr\u0119bie jednego w\u0119z\u0142a NUMA. Pozwala to zachowa\u0107 lokalno\u015b\u0107.<\/li>\n  <li><strong>use_zero_pages<\/strong>: Je\u015bli ta opcja jest w\u0142\u0105czona, procesy efektywnie wsp\u00f3\u0142dziel\u0105 strony zerowe z stron\u0105 zerow\u0105 j\u0105dra. Zapewnia to \u201epewne\u201c oszcz\u0119dno\u015bci bez koszt\u00f3w zwi\u0105zanych z mechanizmem COW.<\/li>\n<\/ul>\n<p>Za pomoc\u0105 ksmtuned dynamicznie reguluj\u0119 ustawienia na podstawie prog\u00f3w pami\u0119ci RAM. Gdy tylko zaczyna brakowa\u0107 wolnej pami\u0119ci, ksmtuned zwi\u0119ksza pr\u0119dko\u015b\u0107 skanowania (Npagen-Boost); gdy obci\u0105\u017cenie spada, ponownie zmniejsza t\u0119 pr\u0119dko\u015b\u0107. W ten spos\u00f3b uzyskuje si\u0119 adaptacyjn\u0105, \u201eoddychaj\u0105c\u0105\u201c konfiguracj\u0119 bez konieczno\u015bci r\u0119cznej interwencji.<\/p>\n\n<h2>Interakcja z THP, Huge Pages i zjawiskiem ballooningu (zag\u0142\u0119bienie tematu)<\/h2>\n<p><strong>Transparent Huge Pages (THP)<\/strong> oraz <strong>Ogromne strony<\/strong> optymalizuj\u0105 wydajno\u015b\u0107 procesora, podczas gdy KSM zmniejsza nadmiarowo\u015b\u0107 w pami\u0119ci RAM. Bior\u0119 przy tym pod uwag\u0119:<\/p>\n<ul>\n  <li>KSM dzia\u0142a na standardowych stronach o rozmiarze 4 KB. Stron THP (zazwyczaj o rozmiarze 2 MB) nie da si\u0119 zduplikowa\u0107. Im intensywniej dzia\u0142a THP, tym mniej danych ma do dyspozycji KSM.<\/li>\n  <li>W przypadku obci\u0105\u017ce\u0144, w kt\u00f3rych kluczowe znaczenie ma op\u00f3\u017anienie lub kt\u00f3re s\u0105 ograniczone wydajno\u015bci\u0105 procesora, preferuj\u0119 THP\/Huge Pages. W przypadku host\u00f3w z ograniczon\u0105 pami\u0119ci\u0105 RAM i jednorodnymi maszynami wirtualnymi stawiam na KSM.<\/li>\n  <li>Funkcja Ballooning uzupe\u0142nia dzia\u0142anie KSM: sterownik Balloon zwraca woln\u0105 pami\u0119\u0107 gazow\u0105 do hosta. Jednocze\u015bnie KSM zmniejsza zapotrzebowanie poprzez konsolidacj\u0119 identycznych stron. Razem wyg\u0142adzaj\u0105 one szczytowe obci\u0105\u017cenia i zapobiegaj\u0105 przedwczesnemu swapowaniu.<\/li>\n<\/ul>\n<p>Podejmuj\u0119 decyzj\u0119 na podstawie wynik\u00f3w test\u00f3w: testy por\u00f3wnawcze z w\u0142\u0105czon\u0105 i wy\u0142\u0105czon\u0105 funkcj\u0105 THP\/Huge Pages oraz z aktywnym KSM pokazuj\u0105 mi, kt\u00f3ra kombinacja zapewnia najlepszy stosunek koszt\u00f3w do wydajno\u015bci.<\/p>\n\n<h2>Modele zabezpiecze\u0144 i nowoczesne funkcje procesora<\/h2>\n<p>W \u015brodowiskach, w kt\u00f3rych <strong>\u015bcis\u0142e rozdzielenie klient\u00f3w<\/strong> konsekwentnie wy\u0142\u0105czam funkcj\u0119 wsp\u00f3\u0142dzielenia dla ka\u017cdej maszyny wirtualnej i ka\u017cdego hosta. Minimalizuje to boczne kana\u0142y przep\u0142ywu informacji wynikaj\u0105ce ze wsp\u00f3\u0142dzielonych stron i u\u0142atwia kontrole zgodno\u015bci. Nowoczesne <strong>Szyfrowanie pami\u0119ci<\/strong> Na poziomie hosta\/go\u015bcia (np. klucz na maszyn\u0119 wirtualn\u0105) uniemo\u017cliwia to w praktyce sensowne scalanie KSM mi\u0119dzy go\u015b\u0107mi, poniewa\u017c identyczne tre\u015bci nie s\u0105 ju\u017c przechowywane w fizycznej pami\u0119ci RAM w postaci bitowo identycznej. W takich klastrach rezygnuj\u0119 z intensywnego skanowania i utrzymuj\u0119 ksmd raczej w trybie pasywnym, aby nie marnowa\u0107 zasob\u00f3w procesora na pr\u00f3\u017cno.<\/p>\n<p>W przypadku mniej wra\u017cliwych, ale jednorodnych klastr\u00f3w pozostaj\u0119 przy KSM jako ustawieniu domy\u015blnym. Dokumentuj\u0119 zasady dla ka\u017cdego klastra: \u201eDomy\u015blnie w\u0142\u0105czone, wyj\u0105tki za pomoc\u0105 nosharepages\u201c lub \u201eDomy\u015blnie wy\u0142\u0105czone, udost\u0119pnianie tylko dla zdefiniowanych pul\u201c \u2013 oba rozwi\u0105zania s\u0105 prawid\u0142owe, o ile s\u0105 wdra\u017cane w spos\u00f3b przejrzysty i powtarzalny.<\/p>\n\n<h2>Odpowiednio\u015b\u0107 obci\u0105\u017cenia i antywzorce<\/h2>\n<p>KSM sprawdza si\u0119 doskonale w przypadku jednolitych obci\u0105\u017ce\u0144 z du\u017c\u0105 liczb\u0105 instancji (np. wiele identycznych serwer\u00f3w aplikacji, us\u0142ug opartych na JVM, agent\u00f3w). Mniejsze korzy\u015bci odnosz\u0105:<\/p>\n<ul>\n  <li><strong>Bardzo zmienne, kr\u00f3tkotrwa\u0142e alokacje<\/strong> (np. wiele ma\u0142ych, szybko zmieniaj\u0105cych si\u0119 bufor\u00f3w), poniewa\u017c prawdopodobie\u0144stwo wyst\u0105pienia zjawiska COW jest wysokie.<\/li>\n  <li><strong>Dane skompresowane, zaszyfrowane lub pseudolosowe<\/strong> \u2013 rzadko zdarzaj\u0105 si\u0119 identyczne strony.<\/li>\n  <li><strong>Du\u017ce bazy danych w pami\u0119ci<\/strong> z agresywnym od\u015bwie\u017caniem stron, gdy dane szybko si\u0119 zmieniaj\u0105. W takich przypadkach cz\u0119sto przewa\u017caj\u0105 zalety Huge Pages\/THP.<\/li>\n<\/ul>\n<p>W farmach kontenerowych KSM mo\u017ce r\u00f3wnie\u017c dzia\u0142a\u0107, o ile procesy oznaczaj\u0105 pami\u0119\u0107 jako \u201emergeable\u201d. W praktyce jednak skupiam si\u0119 na KSM przede wszystkim w przypadku maszyn wirtualnych, poniewa\u017c tam QEMU ju\u017c ustawia niezb\u0119dne flagi madvise.<\/p>\n\n<h2>Rozwi\u0105zywanie problem\u00f3w i typowe przeszkody<\/h2>\n<ul>\n  <li><strong>udost\u0119pnianie stron utkn\u0119\u0142o w martwym punkcie<\/strong>: Sprawdzam, czy QEMU\/maszyny wirtualne faktycznie tworz\u0105 pami\u0119\u0107, kt\u00f3r\u0105 mo\u017cna scalac (brak dyrektywy nosharepages w pliku XML libvirt), oraz czy dzia\u0142a ksmd. Je\u015bli wyniki pozostaj\u0105 niezmienne, obci\u0105\u017cenie jest prawdopodobnie zbyt zr\u00f3\u017cnicowane.<\/li>\n  <li><strong>Zbyt du\u017ce obci\u0105\u017cenie procesora<\/strong>: Zwi\u0119kszam warto\u015b\u0107 sleep_millisecs i\/lub zmniejszam warto\u015b\u0107 pages_to_scan. Dodatkowo mog\u0119 wy\u0142\u0105czy\u0107 scalanie mi\u0119dzy obszarami NUMA, aby zmniejszy\u0107 obszar przeszukiwania.<\/li>\n  <li><strong>Nieoczekiwane skoki op\u00f3\u017anie\u0144<\/strong>: Sprawdzam, czy zdarzenia COW koreluj\u0105 ze szczytami obci\u0105\u017cenia. W takich przypadkach zmniejszam cz\u0119stotliwo\u015b\u0107 skanowania lub tymczasowo wy\u0142\u0105czam dane maszyny wirtualne z udzia\u0142u w zasobach.<\/li>\n  <li><strong>Przekroczenie limitu prowadzi do eskalacji w pami\u0119ci wymiany<\/strong>: KSM nie zast\u0119puje planowania wydajno\u015bci. Zawsze utrzymuj\u0119 rezerw\u0119 wolnej pami\u0119ci RAM i reguluj\u0119 ksmd wy\u0142\u0105cznie jako bufor, a nie jako rozwi\u0105zanie awaryjne.<\/li>\n<\/ul>\n\n<h2>Planowanie, dob\u00f3r rozmiar\u00f3w i automatyzacja<\/h2>\n<p>Aby uzyska\u0107 przewidywalne wyniki, definiuj\u0119 warto\u015bci docelowe dla ka\u017cdego hosta:<\/p>\n<ul>\n  <li><strong>Headroom<\/strong>: Sta\u0142y procentowy bufor wolnej pami\u0119ci RAM, poni\u017cej kt\u00f3rego ksmtuned zaczyna dzia\u0142a\u0107 bardziej agresywnie. W ten spos\u00f3b przesuwam deduplikacj\u0119 na okresy rzeczywistego zapotrzebowania.<\/li>\n  <li><strong>Sprawiedliwo\u015b\u0107<\/strong>: W przypadku nier\u00f3wnomiernego obci\u0105\u017cenia dziel\u0119 pule (np. wed\u0142ug projektu\/\u015brodowiska), aby jednorodne maszyny wirtualne mog\u0142y wsp\u00f3lnie czerpa\u0107 korzy\u015bci, a heterogeniczne nie \u201eos\u0142abia\u0142y\u201c ich wydajno\u015bci.<\/li>\n  <li><strong>Warto\u015bci graniczne<\/strong>: Ustalam limity maksymalnej cz\u0119stotliwo\u015bci skanowania i regularnie sprawdzam, czy oszcz\u0119dno\u015bci uzasadniaj\u0105 obci\u0105\u017cenie procesora.<\/li>\n<\/ul>\n<p>W dziedzinie automatyzacji traktuj\u0119 KSM jako powtarzalny, wersjonowany zbi\u00f3r procedur (np. modu\u0142y Systemd lub fragmenty kodu Cloud Init). W ten spos\u00f3b zapewniam, \u017ce nowe hosty s\u0105 uruchamiane z identycznym zestawem parametr\u00f3w, a wszelkie odchylenia s\u0105 szybko wykrywane.<\/p>\n\n<h2>Podsumowanie dla administrator\u00f3w<\/h2>\n\n<p>U\u017cywam <strong>KSM<\/strong>, gdy hosty obs\u0142uguj\u0105 wiele podobnych maszyn wirtualnych, a pami\u0119\u0107 RAM jest zasobem ograniczaj\u0105cym. W\u00f3wczas deduplikacja zapewnia najwi\u0119kszy efekt, podczas gdy za pomoc\u0105 ksmtuned i parametr\u00f3w sysfs precyzyjnie kontroluj\u0119 obci\u0105\u017cenie procesora. W konfiguracjach NUMA ograniczam scalanie do poziomu lokalnego, \u0142\u0105cz\u0119 KSM z ballooningiem i ogromnymi stronami pami\u0119ci oraz mierz\u0119 efekty za pomoc\u0105 wska\u017anik\u00f3w pages_sharing i op\u00f3\u017anie\u0144. W przypadku wra\u017cliwych system\u00f3w-go\u015bci celowo wy\u0142\u0105czam wsp\u00f3\u0142dzielenie i w przejrzysty spos\u00f3b dokumentuj\u0119 wyj\u0105tki. W ten spos\u00f3b zwi\u0119kszam <strong>g\u0119sto\u015b\u0107<\/strong>, zapewni\u0107 niezawodne czasy reakcji i trwale obni\u017cy\u0107 koszty w euro na instancj\u0119.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, w jaki spos\u00f3b funkcja Kernel Samepage Merging (KSM) w j\u0105drze systemu Linux optymalizuje wykorzystanie pami\u0119ci RAM i umo\u017cliwia uruchamianie wi\u0119kszej liczby maszyn wirtualnych na tym samym sprz\u0119cie. Artyku\u0142 wyja\u015bnia spos\u00f3b dzia\u0142ania tej funkcji, jej konfiguracj\u0119 oraz wp\u0142yw na wydajno\u015b\u0107 wirtualizacji \u2013 zawiera r\u00f3wnie\u017c praktyczne wskaz\u00f3wki dla administrator\u00f3w.<\/p>","protected":false},"author":1,"featured_media":21216,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21223","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":"123","_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":"KSM Virtualisierung","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":"21216","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=21223"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21216"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}