Memory Manager ומטמון המערכת של Windows: paging, page combining ו-lazy write
בדף זה
תשובה קצרה
Section titled “תשובה קצרה”בסדרה זו נבדקו שבעה פרמטרים של החלפה (paging), איחוד עמודים זהים, ערימות ליבה ומטמון קבצים. ב-Windows 11 25H2 נמצא קוד הקריאה של כל אחד מהם. התועלת המעשית תלויה בפרמטר ובתנאי העבודה.
DisablePageCombining משבית את איחוד העמודים ברקע: מנהל הזיכרון מפסיק לבצע עבודה זו, אך צריכת ה-RAM עשויה לגדול. DisablePagingExecutive מחזיק קוד דרייברים הניתן להחלפה בזיכרון הפיזי; התועלת בדרך כלל קטנה. שאר הפרמטרים חלים רק על משימות ליבה או התקני אחסון מסוימים, או שכבר יש להם ערכי ברירת מחדל מתאימים ב-25H2.
מה נבדק
Section titled “מה נבדק”עבור כל ערך נבדקו:
- הנתיב המדויק ב-Registry והסוג;
- ערך ברירת המחדל שנקבע בקוד של Windows 11 25H2;
- ערכים קשורים של אותה תת-מערכת;
- קוד הקריאה במערכת ומועד ביצועו;
- מגבלות הטווח, המרת ערכים ויחידות המדידה;
- ההשפעה הישירה וגבולות התחולה.
מלבד קוד הקריאה בדקנו היכן מיושם הפרמטר, אילו השלכות יש לשינוי שלו ובאילו תרחישים הוא עשוי להיות שימושי. עצם קיומו של פרמטר אינו מספיק להמלצה.
תחום המחקר והראיות
Section titled “תחום המחקר והראיות”- Windows 11 25H2 x64, build
26200.9168. - פרמטרי הליבה הושוו לטבלת התצורה הראשית של
ntoskrnl.exeולקוד היישום שלהם ב-Memory Manager וב-Cache Manager. - גישות בזמן ריצה נבדקו באמצעות מעקב Registry מערכתי. ייתכן שקריאות בשלב 0 ובתחילת שלב 1 לא יופיעו במעקב אתחול רגיל: דרייבר המעקב מתחיל לכתוב מאוחר יותר.
- עבור תהליכי משתמש נבדקה בנפרד קריאת הערך ב-
ntdll.dll. עבורHeapDeCommitFreeBlockThresholdב-25H2 נמצאה קריאה בליבה, אך ערימות של תהליכי משתמש אינן משתמשות בפרמטר זה. - ניתוח סטטי של רכיבי מערכת אינו מחליף חזרה על מחשב פיזי, build אחר או סוג התקן אחסון אחר.
פרמטרים קנוניים
Section titled “פרמטרים קנוניים”| Registry path | Value | Type | Default Windows 11 25H2 | יישום |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
החלפת קוד pageable של דרייברים מערכתיים |
| אותו נתיב | DisablePageCombining |
REG_DWORD |
0 |
איחוד רקע של עמודים פיזיים זהים |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) עבור kernel heap |
סף decommit של בלוקים פנויים ב-kernel-mode heap |
| אותו נתיב | ModifiedWriteMaximum |
REG_DWORD |
1 יחידה = 1 MB |
גבול עליון של modified page writer לאחר clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
מצב אסינכרוני של Cache Manager |
| אותו נתיב | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
חלון unmap מאחורי קריאה סדרתית |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
הצגת cache topology בין processor groups |
DisablePagingExecutive
Section titled “DisablePagingExecutive”מה עושה
Section titled “מה עושה”כאשר 0 מנהל הזיכרון של Windows יכול להחליף מקטעים של קוד מערכת ודרייברים המאפשרים זאת לאחסון גיבוי. כאשר 1 קוד דרייברים מערכתיים הניתן להחלפה מוחזק בזיכרון הפיזי.
קוד הקריאה נמצא ב-ntoskrnl.exe בשלב מוקדם של אתחול הליבה. הערך משמש ב-MmResetDriverPaging, ב-MmPageEntireDriver ובטעינת תמונות מערכת. הוא מיושם לפני שמתחיל מעקב Registry רגיל של משתמש. כדי ליישם מצב חדש נדרש אתחול מחדש.
ערכים ומגבלות
Section titled “ערכים ומגבלות”0: מצב תקין של Windows, החלפה מותרת.1: מקטעים הניתנים להחלפה של דרייברים מערכתיים מוחזקים ב-RAM.- ההגדרה צורכת RAM כדי לצמצם טעינות עתידיות של קוד מערכת חזרה לזיכרון; הדיסק עצמו אינו עובד מהר יותר.
ההגדרה מונעת החלפה וטעינה עתידיות של מקטעי דרייברים אלה. היא אינה משביתה תהליך CPU קבוע נפרד שבודק. במערכת מודרנית עם כמות מספקת של RAM התועלת בדרך כלל קטנה מאוד: הקוד יכול להישאר בזיכרון זמן רב גם ללא ההגדרה. במצב של מחסור ב-RAM החזקתו הכפויה מחריפה את המחסור בזיכרון.
קריאת הפרמטר וכיוון ההשפעה המערכתית אושרו בקוד של ntoskrnl.exe.
DisablePageCombining
Section titled “DisablePageCombining”מה עושה
Section titled “מה עושה”כאשר 0 מנהל הזיכרון מפעיל משימת רקע שמחפשת ומאחדת עמודים פיזיים זהים. כאשר 1 משימה זו אינה מבצעת איחוד.
ב-ntoskrnl.exe נמצא קוד איחוד עמודים ברקע עם תג pool MmCb, מה שמאשר את קיומו של המנגנון.
ערכים ומגבלות
Section titled “ערכים ומגבלות”0: איחוד עמודים מותר, מצב תקין של Windows.1: האיחוד מושבת.- ההשבתה מצמצמת את עבודת הרקע של מנהל הזיכרון, אך עשויה להגדיל את צריכת ה-RAM.
ההשבתה מועילה אם איחוד העמודים יוצר עומס רקע מורגש ולמערכת יש RAM פנוי. בדרך כלל משימה זו פעילה מעט, ולכן ההשפעה קטנה מאוד. כאשר כמות הזיכרון מוגבלת, החיסכון ב-RAM מאיחוד מועיל יותר מזמן המעבד שנחסך.
קוד הקריאה ומשימת הרקע אושרו ב-ntoskrnl.exe. Microsoft מתארת את איחוד העמודים ואת הפשרה בין עבודת מעבד לחיסכון ב-RAM.
HeapDeCommitFreeBlockThreshold
Section titled “HeapDeCommitFreeBlockThreshold”מה עושה
Section titled “מה עושה”הערך קובע את סף שחרור הזיכרון שהוקצה (decommit) עבור בלוק פנוי של ערימת הליבה. בסף גדול יותר פעולות כאלה עבור בלוקים פנויים גדולים מתרחשות בתדירות נמוכה יותר.
ב-Windows 11 25H2 קוד הקריאה נמצא ב-ntoskrnl.exe, ויישום הפרמטר קשור לפונקציית הליבה RtlCreateHeap. ב-ntdll.dll לא נמצא קוד קריאה מתאים עבור ערימות של תהליכים רגילים.
ערכים ומגבלות
Section titled “ערכים ומגבלות”- ערך ברירת המחדל בקוד עבור ערימת הליבה:
0x1000(4 KB). 0x40000(256 KB) הוא סף חוקי עבור ערימת הליבה.- מסמכים היסטוריים של Microsoft תיארו תרחיש user-mode בעל שם זהה בגרסאות ישנות של Windows, ולכן אין להעבירו אוטומטית ל-Windows 11 25H2.
עבור יישומים רגילים אין כמעט תועלת: הערימות שלהם אינן משתמשות בערך זה. הפרמטר יכול לשנות את תדירות שחרור הזיכרון רק בערימת הליבה. ללא בעיה מדודה בדיוק בתחום זה, ההשפעה הצפויה קטנה מאוד.
הקריאה במצב ליבה אושרה ב-ntoskrnl.exe. ההשפעה על תהליכי משתמש ב-25H2 לא אושרה.
ModifiedWriteMaximum
Section titled “ModifiedWriteMaximum”מה עושה
Section titled “מה עושה”הפרמטר קובע את הגבול העליון עבור מנגנון כתיבת העמודים שהשתנו (modified page writer). בקוד משתמשים ביחידות של 256 עמודים, כלומר יחידה אחת שווה 1 MB.
הנרמול ב-Windows 11 25H2:
0מומר ל-1יחידה, כלומר 1 MB;- ערכים גדולים מ-
0x40מוגבלים ל-0x40; - הגבול האפקטיבי המרבי הוא 64 MB, או 16 384 עמודים.
המנגנון מתחיל כתיבה פעילה בערך בהגיעו לרבע מהמגבלה שנקבעה. הגדלת המגבלה משנה את מועד תחילת הכתיבה ואת נפח העמודים שהשתנו שנצברו. מהירות הדיסק עצמו אינה עולה מכך.
במגבלה גדולה יותר נאספים יותר עמודים שהשתנו לפני תחילת הכתיבה הפעילה. הכתיבה עשויה להתחיל בתדירות נמוכה יותר, אך נפח הנתונים שטרם נשמרו וגודל המנה הבאה של הכתיבה גדלים. אם אין בעיה ספציפית בכתיבה, השאר את ערך ברירת המחדל. הגבול האפקטיבי מוגבל ל-64 MB.
קוד הקריאה, יחידות המדידה והגבלת הטווח אושרו ב-ntoskrnl.exe. פרמטר בעל שם זהה ממסמכים ישנים של Microsoft על BitLocker שייך לתת-מערכת אחרת; מסמכים אלה אינם משמשים כאן כמקור.
EnableAsyncLazywrite וערכים קשורים
Section titled “EnableAsyncLazywrite וערכים קשורים”מה עושה
Section titled “מה עושה”EnableAsyncLazywrite שולט בכתיבה אסינכרונית מושהית של Cache Manager. בקוד של 25H2 נקבע ערך ברירת מחדל 2: מצב זה כבר מופעל.
ערכים קשורים של אותה תת-מערכת:
| Value | Default 25H2 | תפקיד |
|---|---|---|
EnableAsyncLazywrite |
2 |
מצב async lazy-write כללי |
EnableAsyncLazywriteMulti |
2 |
מצב multi-volume שכן |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 משבית כתיבה אסינכרונית מושהית. עבור 1 נדרש מצב של מטפל כתיבה מושהית נפרד בכל volume. 2 מפעיל מצב אסינכרוני ללא דרישה זו. Cache Manager קורא מחדש את הערכים בעת עבודה עם תצורת volumes.
כתיבה מפורשת של 2 משחזרת את תצורת ברירת המחדל של Windows 11 25H2 ואינה משפרת דבר נוסף. ההגדרה מתאימה בעיקר לאבחון: הערך 0 מאפשר להשבית את המנגנון הפועל כברירת מחדל.
הקריאה נצפתה במעקב מערכתי ואושרה ב-ntoskrnl.exe. ערך ברירת המחדל 2 אושר בקוד ובתיאור בלתי תלוי של פרמטרי Registry שנערך לפי תוצאות הנדסה הפוכה.
CacheUnmapBehindLengthInMB
Section titled “CacheUnmapBehindLengthInMB”מה עושה
Section titled “מה עושה”הפרמטר קובע מרחק במגה-בייט שלאחריו Cache Manager משחרר תצוגות מטמון שנשארו מאחורי המיקום הנוכחי של קריאה סדרתית.
קוד הקריאה והיישום של הפרמטר נמצא ב-ntoskrnl.exe ומופעל בעת מיפוי וקריאת מטמון. הפרמטר מתייחס לקריאה סדרתית של קבצים גדולים; הוא אינו משבית את כל מטמון הקבצים.
ערכים ו-clamp
Section titled “ערכים ו-clamp”0או ערך גדול מ-128מוחלף בקוד ב-8.- טווח עבודה:
1..128MB. - ברירת מחדל בקוד:
8MB. - יחידות ה-Registry value הן MB ממש, ולא בייטים.
הפרמטר הגיוני רק עבור משימות מיוחדות של קריאה סדרתית של קבצים גדולים. בחלון גדול יותר מיפוי המטמון מאחורי המיקום הנוכחי נשמר זמן רב יותר, ובקטן יותר הוא משוחרר מוקדם יותר. לעבודה רגילה מתאים הערך התקין 8 MB; התועלת של הגדרה ידנית בדרך כלל קטנה.
קוד הקריאה, היישום והגבלת הטווח אושרו ב-ntoskrnl.exe. תיעוד ציבורי מודרני של Microsoft עבור פרמטר פנימי זה לא נמצא.
SplitLargeCaches
Section titled “SplitLargeCaches”מה עושה
Section titled “מה עושה”כאשר 0 ה-API של תיאור cache topology מחזיר רשומה אחודה עבור המבנה המתאים, המשתרע על כמה processor groups. כאשר 1 הרשומות מופרדות לפי processor groups.
קוד הקריאה נמצא ב-ntoskrnl.exe. הפרמטר משמש בעת עיבוד היחס RelationCache ב-KeQueryLogicalProcessorRelationship.
רק תיאור הטופולוגיה שמוחזר על ידי API המערכת משתנה. בלוקים פיזיים של זיכרון שהוקצו אינם מופרדים, והסבירות למחסור בבלוק רציף כשלעצמה אינה פוחתת.
ערכים ומגבלות
Section titled “ערכים ומגבלות”0: ערך ברירת המחדל.1: להפריד רשומות טופולוגיה לפי processor groups.- השפעה מעשית אפשרית בעיקר במערכות עם כמה processor groups, בדרך כלל ביותר מ-64 מעבדים לוגיים.
- במערכת רגילה עם קבוצה אחת אין השפעה.
הפרמטר נחוץ רק לתוכנות שמבקשות cache topology במחשב עם כמה processor groups. הוא אינו משנה את פעולת המטמון או הקצאת הזיכרון. עבור מחשב שולחני רגיל אין תועלת.
קוד הקריאה והיישום אושרו ב-ntoskrnl.exe. הערך והייעוד הושוו לתיאור ציבורי של הנדסה הפוכה KiSplitLargeCaches.
תועלת כללית
Section titled “תועלת כללית”| פרמטר | הערכה מעשית |
|---|---|
DisablePagingExecutive |
בדרך כלל נותן תועלת קטנה מאוד, בכך שהוא מחזיק יותר קוד ב-RAM |
DisablePageCombining |
מועיל בעומס מאושר של איחוד עמודים ברקע ובמלאי RAM גדול |
HeapDeCommitFreeBlockThreshold |
פועל רק בליבה; עבור יישומים רגילים אין תועלת מעשית |
ModifiedWriteMaximum |
משנה את תנאי הכתיבה של עמודים שהשתנו; ללא בעיה שזוהתה השאר את הערך התקין |
EnableAsyncLazywrite |
הערך התקין 2 כבר מפעיל את המנגנון; כתיבה חוזרת אינה משפרת דבר |
CacheUnmapBehindLengthInMB |
הגדרה של קריאה סדרתית; הערכים התקינים 8 MB מתאימים לעבודה רגילה |
SplitLargeCaches |
משנה את תיאור הטופולוגיה עבור כמה processor groups; במערכת רגילה אין השפעה |
מה אושר ומה לא נמדד
Section titled “מה אושר ומה לא נמדד”אושרו הנתיבים, הסוגים, ערכי ברירת המחדל, קוד הקריאה ומועד קריאת הפרמטרים שהוזכרו לעיל, וכן מגבלות הטווחים. התוצאות מתייחסות ל-Windows 11 25H2 build 26200.9168. ההתנהגות עשויה להיות שונה בעדכון Windows אחר, בכמות RAM אחרת, בסוג התקן אחסון אחר או בטופולוגיית CPU אחרת.
כיצד לחזור על החלק הדינמי של התצפיות — ראו כיצד לבדוק בעצמך.
שחזור המצב
Section titled “שחזור המצב”לשחזור יש להחזיר את ערכי ברירת המחדל של הפרמטרים או למחוק רשומות אופציונליות. חלק מהערכים מיושמים באתחול Windows הבא.
המחקר והכלים ששימשו בו שייכים למפתח BoosterX, ולכן למפתח יש אינטרס ישיר בתוצאות. השיטה וגבולות התחולה מתוארים במאמר זה; את המסקנות ניתן לאמת לפי נתונים פתוחים ולפי המקורות הציבוריים המפורטים להלן.
מקורות ציבוריים
Section titled “מקורות ציבוריים”- Memory combining, Microsoft Learn: ייעוד page combining והפשרה בין CPU ל-RAM, נבדק 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: הסמנטיקה של
DisablePagingExecutive, נבדק 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, תיעוד היסטורי של Microsoft: תרחיש user-mode ישן והסף 256 KB, נבדק 2026-09-01.
- Windows system configuration descriptions, תיאור RE ציבורי של
SplitLargeCaches, נבדק 2026-09-01.
הקביעות על הקוד אומתו בניתוח סטטי של רכיבי המערכת של Windows 11 25H2. קוד מפורק, היסטים, מעקבים מקוריים וחומרים פנימיים אינם מפורסמים.
המקורות הציבוריים נבדקו: 2026-09-02.
היסטוריית שינויים
Section titled “היסטוריית שינויים”- 2026-09-20: נוסף כתב ויתור על ניגוד עניינים וקישור לבדיקה עצמאית של התצפיות הדינמיות במתודולוגיה.
- 2026-09-02: פרסום ראשון; אושרו נתיבים, defaults, clamps וקוד הקריאה של הפרמטרים, נוספו גבולות התועלת המעשית.
