Windows Memory Manager ve sistem önbelleği: paging, page combining ve lazy write
Sayfa içeriği
Kısa yanıt
Bölüm başlığı “Kısa yanıt”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.
Neler incelendi
Bölüm başlığı “Neler incelendi”Her değer için şunlar incelendi:
- Registry’deki tam yol ve tür;
- Windows 11 25H2 kodu tarafından belirlenen varsayılan değer;
- aynı alt sistemin ilgili değerleri;
- sistem okuma kodu ve çalışma zamanı;
- aralık sınırları, değer dönüşümü ve ölçü birimleri;
- 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.
Araştırma kapsamı ve kanıtlar
Bölüm başlığı “Araştırma kapsamı ve kanıtlar”- Windows 11 25H2 x64, build
26200.9168. - Çekirdek parametreleri, ana
ntoskrnl.exeyapı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.dlliçinde okunması ayrıca doğrulandı.HeapDeCommitFreeBlockThresholdiç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.
Kanonik parametreler
Bölüm başlığı “Kanonik parametreler”| 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 |
DisablePagingExecutive
Bölüm başlığı “DisablePagingExecutive”Ne yapar
Bölüm başlığı “Ne yapar”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.
Değerler ve sınırlar
Bölüm başlığı “Değerler ve sınırlar”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ı.
DisablePageCombining
Bölüm başlığı “DisablePageCombining”Ne yapar
Bölüm başlığı “Ne yapar”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.
Değerler ve sınırlar
Bölüm başlığı “Değerler ve sınırlar”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.
HeapDeCommitFreeBlockThreshold
Bölüm başlığı “HeapDeCommitFreeBlockThreshold”Ne yapar
Bölüm başlığı “Ne yapar”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ı.
Değerler ve sınırlar
Bölüm başlığı “Değerler ve sınırlar”- Ç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ı.
ModifiedWriteMaximum
Bölüm başlığı “ModifiedWriteMaximum”Ne yapar
Bölüm başlığı “Ne yapar”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:
01birime, yani 1 MB’a dönüştürülür;0x40değerinden büyük değerler0x40ile 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 ve ilgili değerler
Bölüm başlığı “EnableAsyncLazywrite ve ilgili değerler”Ne yapar
Bölüm başlığı “Ne yapar”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ı.
CacheUnmapBehindLengthInMB
Bölüm başlığı “CacheUnmapBehindLengthInMB”Ne yapar
Bölüm başlığı “Ne yapar”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.
Değerler ve clamp
Bölüm başlığı “Değerler ve clamp”0veya128değerinden büyük bir değer, kod tarafından8ile değiştirilir.- Çalışma aralığı:
1..128MB. - Koddaki default:
8MB. - 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ı.
SplitLargeCaches
Bölüm başlığı “SplitLargeCaches”Ne yapar
Bölüm başlığı “Ne yapar”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.
Değerler ve sınırlar
Bölüm başlığı “Değerler ve sınırlar”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ı.
Genel fayda
Bölüm başlığı “Genel fayda”| 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 |
Neler doğrulandı ve neler ölçülmedi
Bölüm başlığı “Neler doğrulandı ve neler ölçülmedi”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.
Durumu geri yükleme
Bölüm başlığı “Durumu geri yükleme”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.
Genel kaynaklar
Bölüm başlığı “Genel kaynaklar”- Memory combining, Microsoft Learn: page combining’in amacı ve CPU/RAM ödünleşimi, doğrulandı 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive:
DisablePagingExecutivesemantiği, doğrulandı 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, tarihsel Microsoft dokümantasyonu: eski user-mode senaryosu ve 256 KB eşiği, doğrulandı 2026-09-01.
- Windows system configuration descriptions,
SplitLargeCachesiçin genel RE açıklaması, doğrulandı 2026-09-01.
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.
Değişiklik geçmişi
Bölüm başlığı “Değişiklik geçmişi”- 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.
