İçeriğe geç

Windows Memory Manager ve sistem önbelleği: paging, page combining ve lazy write

Sayfa içeriği

Bu seride yedi takas (paging) parametresi, aynı sayfaların birleştirilmesi, çekirdek yığını ve dosya önbelleği incelendi. Windows 11 25H2’de bunların her birinin okuma kodu bulundu. Pratik fayda parametreye ve çalışma koşullarına bağlıdır.

DisablePageCombining arka planda sayfa birleştirmeyi devre dışı bırakır: bellek yöneticisi bu işi yapmayı bırakır, ancak RAM tüketimi artabilir. DisablePagingExecutive sürücülerin çıkarılabilir kodunu fiziksel bellekte tutar; faydası genellikle azdır. Kalan parametreler yalnızca belirli çekirdek veya depolama görevlerine uygulanabilir ya da 25H2’de zaten uygun varsayılan değerlere sahiptir.

Her değer için şunlar incelendi:

  1. Registry’deki tam yol ve tür;
  2. Windows 11 25H2 kodu tarafından belirlenen varsayılan değer;
  3. aynı alt sistemin ilgili değerleri;
  4. sistem okuma kodu ve çalışma zamanı;
  5. aralık sınırları, değer dönüşümü ve ölçü birimleri;
  6. doğrudan etki ve uygulanabilirlik sınırları.

Okuma kodunun yanı sıra parametrenin nerede uygulandığını, değiştirilmesinin ne gibi sonuçları olduğunu ve hangi senaryolarda faydalı olabileceğini inceledik. Bir öneri için parametrenin varlığı tek başına yeterli değildir.

  • Windows 11 25H2 x64, build 26200.9168.
  • Çekirdek parametreleri, ana ntoskrnl.exe yapılandırma tablosu ve bunların Memory Manager ile Cache Manager’daki uygulama koduyla eşleştirildi.
  • Çalışma sırasındaki erişimler sistem Registry izlemesiyle doğrulandı. Faz 0 ve faz 1’in başındaki okumalar normal önyükleme izlemesinde bulunmayabilir: izleme sürücüsü kaydı daha sonra başlatır.
  • Kullanıcı işlemleri için değerin ntdll.dll içinde okunması ayrıca doğrulandı. HeapDeCommitFreeBlockThreshold için 25H2’de çekirdekte okuma bulundu, ancak kullanıcı işlemlerinin yığınları bu parametreyi kullanmaz.
  • Sistem bileşenlerinin statik analizi, fiziksel bir PC’de, başka bir build’de veya başka bir depolama türünde tekrarlamanın yerini tutmaz.
Registry path Value Type Default Windows 11 25H2 Uygulama
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management DisablePagingExecutive REG_DWORD 0 Sistem sürücülerinin pageable kodunun takas edilmesi
aynı yol DisablePageCombining REG_DWORD 0 Aynı fiziksel sayfaların arka planda birleştirilmesi
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager HeapDeCommitFreeBlockThreshold REG_DWORD 0x1000 (4 KB) kernel heap için Kernel-mode heap’in boş bloklarının decommit eşiği
aynı yol ModifiedWriteMaximum REG_DWORD 1 birim = 1 MB Clamp sonrası modified page writer üst sınırı
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management EnableAsyncLazywrite REG_DWORD 2 Cache Manager’ın asenkron modu
aynı yol CacheUnmapBehindLengthInMB REG_DWORD 8 MB Sıralı okumanın arkasındaki unmap penceresi
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel SplitLargeCaches REG_DWORD 0 Processor groups arasında cache topology gösterimi

0 olduğunda Windows bellek yöneticisi, izin veren sistem kodu ve sürücü bölümlerini yedek depolamaya çıkarabilir. 1 olduğunda sistem sürücülerinin çıkarılabilir kodu fiziksel bellekte tutulur.

Okuma kodu, çekirdek başlatmanın erken aşamasında ntoskrnl.exe içinde bulundu. Değer MmResetDriverPaging, MmPageEntireDriver ve sistem görüntülerinin yüklenmesi sırasında kullanılır. Normal kullanıcı Registry izlemesi başlamadan önce uygulanır. Yeni durumun uygulanması için yeniden başlatma gerekir.

  • 0: Windows’un varsayılan durumu, takas etme izinli.
  • 1: sistem sürücülerinin çıkarılabilir bölümleri RAM’de tutulur.
  • Ayar, sistem kodunun sonraki yüklemelerini azaltmak için RAM harcar; diskin kendisi daha hızlı çalışmaz.

Ayar, bu sürücü bölümlerinin sonraki çıkarılmasını ve yüklenmesini önler. Ayrı bir sürekli denetleyici CPU iş parçacığını devre dışı bırakmaz. Yeterli RAM’e sahip modern bir sistemde fayda genellikle çok azdır: kod, ayar olmadan da uzun süre bellekte kalabilir. RAM yetersiz olduğunda zorla tutulması bellek açığını artırır.

Parametrenin okunması ve sistem etkisinin yönü ntoskrnl.exe koduyla doğrulandı.

0 olduğunda bellek yöneticisi, aynı fiziksel sayfaları arayan ve birleştiren bir arka plan görevi başlatır. 1 olduğunda bu görev birleştirme yapmaz.

ntoskrnl.exe içinde MmCb pool etiketli arka plan sayfa birleştirme kodu bulundu; bu da mekanizmanın varlığını doğrular.

  • 0: sayfa birleştirme izinli, Windows’un varsayılan durumu.
  • 1: birleştirme devre dışı.
  • Devre dışı bırakma, bellek yöneticisinin arka plan işini azaltır, ancak RAM tüketimini artırabilir.

Devre dışı bırakma, sayfa birleştirme belirgin bir arka plan yükü oluşturuyorsa ve sistemde boş RAM varsa faydalıdır. Genellikle bu görev az etkindir, bu nedenle etki çok küçüktür. Bellek kısıtlı olduğunda birleştirmenin sağladığı RAM tasarrufu, kazanılan işlemci zamanından daha faydalıdır.

Okuma kodu ve arka plan görevi ntoskrnl.exe içinde doğrulandı. Microsoft, sayfa birleştirmeyi ve işlemci işi ile RAM tasarrufu arasındaki ödünleşimi açıklar.

Değer, çekirdek yığınının boş bir bloğu için ayrılan belleğin serbest bırakılması (decommit) eşiğini belirler. Daha büyük bir eşikte bu işlemler büyük boş bloklar için daha seyrek gerçekleşir.

Windows 11 25H2’de okuma kodu ntoskrnl.exe içinde bulunur ve parametrenin uygulanması RtlCreateHeap çekirdek işleviyle ilişkilidir. ntdll.dll içinde normal işlemlerin yığınları için ilgili okuma kodu bulunamadı.

  • Çekirdek yığını için koddaki varsayılan değer: 0x1000 (4 KB).
  • 0x40000 (256 KB) çekirdek yığını için geçerli bir eşiktir.
  • Microsoft’un tarihsel belgeleri, eski Windows sürümlerinin aynı adlı user-mode senaryosunu tanımlıyordu, bu nedenle bu otomatik olarak Windows 11 25H2’ye taşınamaz.

Normal uygulamalar için neredeyse hiç faydası yoktur: yığınları bu değeri kullanmaz. Parametre, bellek serbest bırakma sıklığını yalnızca çekirdek yığınında değiştirebilir. Tam olarak bununla ilgili ölçülmüş bir sorun yoksa beklenen etki çok azdır.

Çekirdek modunda okuma ntoskrnl.exe içinde doğrulandı. 25H2’de kullanıcı işlemleri için etki doğrulanmadı.

Parametre, değiştirilmiş sayfaların yazma mekanizması (modified page writer) için üst sınırı belirler. Kodda 256 sayfalık birimler kullanılır, yani bir birim 1 MB’a eşittir.

Windows 11 25H2’de normalleştirme:

  • 0 1 birime, yani 1 MB’a dönüştürülür;
  • 0x40 değerinden büyük değerler 0x40 ile sınırlanır;
  • maksimum etkin sınır 64 MB veya 16 384 sayfadır.

Mekanizma, belirlenen sınırın yaklaşık dörtte birine ulaşıldığında etkin yazmaya başlar. Sınırın artırılması, yazmanın başlama anını ve biriken değiştirilmiş sayfa hacmini değiştirir. Diskin kendi hızı bundan artmaz.

Daha büyük bir sınırla, etkin yazma başlamadan önce daha fazla değiştirilmiş sayfa birikir. Yazma daha seyrek başlatılabilir, ancak henüz kaydedilmemiş veri hacmi ve sonraki yazma partisinin boyutu artar. Belirli bir yazma sorunu yoksa varsayılan değeri bırakın. Etkin sınır 64 MB ile sınırlıdır.

Okuma kodu, ölçü birimleri ve aralık sınırlaması ntoskrnl.exe içinde doğrulandı. Microsoft’un BitLocker hakkındaki eski belgelerindeki aynı adlı parametre başka bir alt sisteme aittir; bu belgeler burada kaynak olarak kullanılmaz.

EnableAsyncLazywrite Cache Manager’ın asenkron ertelenmiş yazmasını yönetir. 25H2 kodunda varsayılan değer 2 olarak belirlenmiştir: bu mod zaten etkindir.

Aynı alt sistemin ilgili değerleri:

Value Default 25H2 Rol
EnableAsyncLazywrite 2 Genel async lazy-write mode
EnableAsyncLazywriteMulti 2 Komşu multi-volume modu
EnablePerVolumeLazyWriter 2 Per-volume lazy writer

0 asenkron ertelenmiş yazmayı devre dışı bırakır. 1 için her birimde ayrı bir ertelenmiş yazma işleyicisi modu gerekir. 2 bu gereksinim olmadan asenkron modu etkinleştirir. Cache Manager, birim yapılandırmasıyla çalışırken değerleri yeniden okur.

2 değerinin açıkça yazılması, Windows 11 25H2’nin varsayılan yapılandırmasını tekrarlar ve ek olarak hiçbir şeyi iyileştirmez. Ayar öncelikle tanılama için uygundur: 0 değeri, varsayılan olarak çalışan mekanizmayı devre dışı bırakmaya olanak tanır.

Okuma, sistem izlemesinde gözlemlendi ve ntoskrnl.exe içinde doğrulandı. 2 varsayılan değeri, kod ve tersine mühendislik sonuçlarına göre hazırlanmış bağımsız Registry parametreleri açıklamasıyla doğrulandı.

Parametre, Cache Manager’ın sıralı okumanın geçerli konumunun arkasında kalan önbelleğe alınmış görünümleri kaç megabayt sonra serbest bıraktığını belirler.

Parametrenin okuma ve uygulama kodu ntoskrnl.exe içinde bulunur ve önbelleğin eşlenmesi ve okunması sırasında çağrılır. Parametre büyük dosyaların sıralı okunmasıyla ilgilidir; tüm dosya önbelleğini devre dışı bırakmaz.

  • 0 veya 128 değerinden büyük bir değer, kod tarafından 8 ile değiştirilir.
  • Çalışma aralığı: 1..128 MB.
  • Koddaki default: 8 MB.
  • Registry value birimleri bayt değil, tam olarak MB’dir.

Parametre yalnızca büyük dosyaların sıralı okunmasına yönelik özel görevler için anlamlıdır. Daha büyük bir pencerede, geçerli konumun arkasındaki önbellek eşlemesi daha uzun süre korunur, daha küçük bir pencerede daha erken serbest bırakılır. Normal çalışma için varsayılan 8 MB değeri uygundur; manuel ayarın faydası genellikle azdır.

Okuma, uygulama ve aralık sınırlaması kodu ntoskrnl.exe içinde doğrulandı. Microsoft’un bu dahili parametre için güncel bir genel dokümantasyonu bulunamadı.

0 olduğunda cache topology açıklama API’si, ilgili yapı için birden çok processor group’u kapsayan tek bir kayıt döndürür. 1 olduğunda kayıtlar processor group’lara göre ayrılır.

Okuma kodu ntoskrnl.exe içinde bulunur. Parametre, KeQueryLogicalProcessorRelationship içindeki RelationCache ilişkisinin işlenmesi sırasında kullanılır.

Yalnızca sistem API’sinin döndürdüğü topoloji açıklaması değişir. Ayrılmış fiziksel bellek blokları bölünmez ve tek bir bitişik blok eksikliği olasılığı tek başına azalmaz.

  • 0: varsayılan değer.
  • 1: topoloji kayıtlarını processor group’lara göre ayır.
  • Pratik etki öncelikle birden çok processor group’lu sistemlerde, genellikle 64’ten fazla mantıksal işlemcide mümkündür.
  • Normal tek gruplu bir sistemde etki yoktur.

Parametre yalnızca birden çok processor group’lu bir makinede cache topology’sini sorgulayan programlar için gereklidir. Önbelleğin çalışmasını ve bellek ayırmayı değiştirmez. Normal bir masaüstü bilgisayar için faydası yoktur.

Okuma ve uygulama kodu ntoskrnl.exe içinde doğrulandı. Değer ve amacı, KiSplitLargeCaches için genel tersine mühendislik açıklamasıyla karşılaştırıldı.

Parametre Pratik değerlendirme
DisablePagingExecutive Genellikle daha fazla kodu RAM’de tutarak çok az fayda sağlar
DisablePageCombining Doğrulanmış arka plan sayfa birleştirme yükü ve büyük RAM rezervi varsa faydalıdır
HeapDeCommitFreeBlockThreshold Yalnızca çekirdekte etkilidir; normal uygulamalar için pratik faydası yoktur
ModifiedWriteMaximum Değiştirilmiş sayfaların yazma koşullarını değiştirir; tespit edilmiş bir sorun yoksa varsayılan değeri bırakın
EnableAsyncLazywrite Varsayılan 2 değeri mekanizmayı zaten etkinleştirir; yeniden yazmak hiçbir şeyi iyileştirmez
CacheUnmapBehindLengthInMB Sıralı okuma ayarı; varsayılan 8 MB normal çalışma için uygundur
SplitLargeCaches Birden çok processor group için topoloji açıklamasını değiştirir; normal bir sistemde etki yoktur

Yukarıda belirtilen yollar, türler, varsayılan değerler, parametrelerin okuma kodu ve zamanı ile aralık sınırlamaları doğrulandı. Sonuçlar Windows 11 25H2 build 26200.9168 için geçerlidir. Davranış, başka bir Windows güncellemesinde, RAM miktarında, depolama türünde veya CPU topolojisinde farklılık gösterebilir.

Gözlemlerin dinamik kısmının nasıl tekrarlanacağı — bkz. Kendiniz nasıl doğrularsınız.

Geri dönmek için parametrelerin varsayılan değerlerini geri yükleyin veya isteğe bağlı kayıtları silin. Değerlerin bir kısmı Windows’un sonraki önyüklemesinde uygulanır.

Araştırma ve içinde kullanılan araçlar BoosterX geliştiricisine aittir, bu nedenle geliştiricinin sonuçlarda doğrudan çıkarı vardır. Yöntem ve uygulanabilirlik sınırları bu makalede açıklanmıştır; sonuçlar açık veriler ve aşağıda listelenen genel kaynaklarla doğrulanabilir.

Kod hakkındaki iddialar, Windows 11 25H2 sistem bileşenlerinin statik analiziyle doğrulandı. Derlenmiş kod, offsetler, kaynak izlemeleri ve dahili materyaller yayımlanmaz.

Genel kaynaklar doğrulandı: 2026-09-02.

  • 2026-09-20: çıkar çatışması hakkında feragatname ve yöntemde dinamik gözlemlerin bağımsız doğrulamasına bağlantı eklendi.
  • 2026-09-02: ilk yayın; yollar, defaults, clamps ve parametrelerin okuma kodu doğrulandı, pratik fayda sınırları eklendi.