Перейти к содержимому

Memory Manager اور Windows کا سسٹم cache: paging، page combining اور lazy write

На этой странице

اس سلسلے میں سات paging، ایک جیسے صفحات کے انضمام، kernel heap اور فائل cache کے پیرامیٹرز جانچے گئے۔ Windows 11 25H2 میں ان میں سے ہر ایک کو پڑھنے کا کوڈ ملا۔ عملی فائدہ پیرامیٹر اور کام کے حالات پر منحصر ہے۔

DisablePageCombining پس منظر میں صفحات کے انضمام کو غیر فعال کرتا ہے: memory manager یہ کام کرنا چھوڑ دیتا ہے، لیکن RAM کا استعمال بڑھ سکتا ہے۔ DisablePagingExecutive drivers کے unload ہونے والے کوڈ کو فزیکل میموری میں روکے رکھتا ہے؛ فائدہ عام طور پر بہت کم ہوتا ہے۔ باقی پیرامیٹرز صرف kernel یا اسٹوریج کے مخصوص کاموں پر لاگو ہوتے ہیں یا 25H2 میں پہلے سے موزوں default اقدار رکھتے ہیں۔

ہر قدر کے لیے جانچا گیا:

  1. Registry میں درست path اور type؛
  2. Windows 11 25H2 کے کوڈ کی مقرر کردہ default قدر؛
  3. اسی subsystem کی متعلقہ اقدار؛
  4. پڑھنے کا system code اور اس کے عمل میں آنے کا وقت؛
  5. range کی حدود، اقدار کی تبدیلی اور پیمائش کی اکائیاں؛
  6. براہ راست اثر اور اطلاق کی حدود۔

پڑھنے کے کوڈ کے علاوہ ہم نے یہ بھی جانچا کہ پیرامیٹر کہاں لاگو ہوتا ہے، اس کی تبدیلی کے کیا نتائج ہوتے ہیں اور کون سے منظرناموں میں یہ مفید ہو سکتا ہے۔ سفارش کے لیے صرف پیرامیٹر کا موجود ہونا کافی نہیں۔

  • Windows 11 25H2 x64، build 26200.9168۔
  • Kernel پیرامیٹرز کا موازنہ ntoskrnl.exe کے بنیادی configuration table اور Memory Manager اور Cache Manager میں ان کے اطلاق کے کوڈ سے کیا گیا۔
  • دورانِ کار رسائی کو system registry tracing سے جانچا گیا۔ phase 0 اور phase 1 کے آغاز میں ہونے والی readings عام boot trace میں موجود نہیں ہو سکتیں: tracing driver بعد میں لکھنا شروع کرتا ہے۔
  • صارف کے processes کے لیے ntdll.dll میں قدر پڑھنا الگ سے جانچا گیا۔ HeapDeCommitFreeBlockThreshold کے لیے 25H2 میں kernel میں reading ملی، لیکن صارف کے processes کے heaps یہ پیرامیٹر استعمال نہیں کرتے۔
  • System components کا static analysis کسی فزیکل PC، دوسرے build یا دوسرے قسم کے اسٹوریج پر دہرانے کا متبادل نہیں۔
Registry path Value Type Default Windows 11 25H2 اطلاق
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management DisablePagingExecutive REG_DWORD 0 System drivers کے pageable کوڈ کی paging
وہی path DisablePageCombining REG_DWORD 0 ایک جیسے فزیکل صفحات کا پس منظر میں انضمام
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager HeapDeCommitFreeBlockThreshold REG_DWORD 0x1000 (4 KB) برائے kernel heap kernel-mode heap کے آزاد blocks کے decommit کی حد
وہی path ModifiedWriteMaximum REG_DWORD 1 اکائی = 1 MB clamp کے بعد modified page writer کی بالائی حد
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management EnableAsyncLazywrite REG_DWORD 2 Cache Manager کا asynchronous mode
وہی path CacheUnmapBehindLengthInMB REG_DWORD 8 MB sequential reading کے پیچھے unmap کی window
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel SplitLargeCaches REG_DWORD 0 processor groups کے درمیان cache topology کی نمائش

0 پر Windows کا memory manager system code اور drivers کے اجازت دینے والے sections کو backup storage میں unload کر سکتا ہے۔ 1 پر system drivers کا unload ہونے والا کوڈ فزیکل میموری میں روکے رکھا جاتا ہے۔

پڑھنے کا کوڈ ntoskrnl.exe میں kernel کی initialization کے ابتدائی مرحلے میں ملا۔ قدر MmResetDriverPaging، MmPageEntireDriver اور system images کی loading میں استعمال ہوتی ہے۔ یہ عام صارف کی registry tracing شروع ہونے سے پہلے لاگو ہوتی ہے۔ نئی حالت کے اطلاق کے لیے restart ضروری ہے۔

  • 0: Windows کی طے شدہ حالت، paging کی اجازت ہے۔
  • 1: system drivers کے unload ہونے والے sections RAM میں روکے رکھے جاتے ہیں۔
  • یہ setting RAM خرچ کرتی ہے تاکہ system code کی بعد کی loading میموری میں کم کرے؛ خود disk تیز نہیں ہوتی۔

یہ setting ان driver sections کے بعد میں unload اور load ہونے کو روکتی ہے۔ یہ CPU کا کوئی الگ مستقل جانچنے والا thread بند نہیں کرتی۔ جدید system میں کافی RAM کے ساتھ فائدہ عام طور پر بہت کم ہوتا ہے: کوڈ بغیر setting کے بھی دیر تک میموری میں رہ سکتا ہے۔ RAM کی کمی پر اسے زبردستی روکے رکھنا میموری کی کمی کو بڑھاتا ہے۔

پیرامیٹر کی reading اور system effect کی سمت ntoskrnl.exe کے کوڈ سے تصدیق شدہ ہے۔

0 پر memory manager ایک پس منظر کا کام شروع کرتا ہے جو ایک جیسے فزیکل صفحات ڈھونڈ کر انضمام کرتا ہے۔ 1 پر یہ کام انضمام نہیں کرتا۔

ntoskrnl.exe میں pool tag MmCb کے ساتھ پس منظر میں صفحات کے انضمام کا کوڈ ملا، جو اس mechanism کی موجودگی کی تصدیق کرتا ہے۔

  • 0: صفحات کا انضمام اجازت یافتہ، Windows کی طے شدہ حالت۔
  • 1: انضمام غیر فعال۔
  • غیر فعال کرنا memory manager کے پس منظر کے کام کو کم کرتا ہے، لیکن RAM کا استعمال بڑھ سکتا ہے۔

غیر فعال کرنا اس وقت مفید ہے جب صفحات کا انضمام نمایاں پس منظر بوجھ پیدا کرے اور system کے پاس آزاد RAM ہو۔ عام طور پر یہ کام کم فعال ہوتا ہے، اس لیے اثر بہت کم ہوتا ہے۔ محدود میموری پر انضمام سے RAM کی بچت بچائے گئے processor وقت سے زیادہ مفید ہے۔

پڑھنے اور پس منظر کے کام کا کوڈ ntoskrnl.exe میں تصدیق شدہ ہے۔ Microsoft صفحات کے انضمام اور processor کام اور RAM کی بچت کے درمیان trade-off بیان کرتا ہے۔

قدر kernel heap کے آزاد block کے لیے مختص میموری کے decommit کی حد مقرر کرتی ہے۔ بڑی حد پر بڑے آزاد blocks کے لیے ایسے operations کم ہوتے ہیں۔

Windows 11 25H2 میں پڑھنے کا کوڈ ntoskrnl.exe میں ہے، اور پیرامیٹر کا اطلاق kernel function RtlCreateHeap سے منسلک ہے۔ ntdll.dll میں عام processes کے heaps کے لیے متعلقہ reading کا کوڈ نہیں ملا۔

  • kernel heap کے کوڈ میں default قدر: 0x1000 (4 KB)۔
  • 0x40000 (256 KB) kernel heap کے لیے قابل قبول حد ہے۔
  • Microsoft کی تاریخی دستاویزات نے Windows کے پرانے versions کے اسی نام کے user-mode منظرنامے کو بیان کیا تھا، اس لیے اسے خود بخود Windows 11 25H2 پر منتقل نہیں کیا جا سکتا۔

عام applications کے لیے عملی طور پر کوئی فائدہ نہیں: ان کے heaps یہ قدر استعمال نہیں کرتے۔ پیرامیٹر صرف kernel heap میں میموری کے decommit کی تعدد بدل سکتا ہے۔ اسی کے ساتھ کوئی ماپا ہوا مسئلہ نہ ہو تو متوقع اثر بہت کم ہے۔

Kernel mode میں reading کی تصدیق ntoskrnl.exe میں ہوئی۔ 25H2 میں صارف کے processes کے لیے اثر کی تصدیق نہیں ہوئی۔

پیرامیٹر modified page writer کے mechanism کے لیے بالائی حد مقرر کرتا ہے۔ کوڈ میں 256 صفحات کی اکائیاں استعمال ہوتی ہیں، یعنی ایک اکائی 1 MB کے برابر ہے۔

Windows 11 25H2 میں normalization:

  • 0 کو 1 اکائی میں تبدیل کیا جاتا ہے، یعنی 1 MB؛
  • 0x40 سے بڑی اقدار 0x40 تک محدود کی جاتی ہیں؛
  • زیادہ سے زیادہ مؤثر حد 64 MB، یا 16 384 صفحات ہے۔

یہ mechanism مقررہ limit کے تقریباً ایک چوتھائی پر فعال writing شروع کرتا ہے۔ Limit بڑھانے سے writing کے آغاز کا وقت اور جمع شدہ modified pages کا حجم بدلتا ہے۔ اس سے خود disk کی رفتار نہیں بڑھتی۔

بڑی limit پر فعال writing شروع ہونے سے پہلے زیادہ modified pages جمع ہوتے ہیں۔ Writing کم بار شروع ہو سکتی ہے، لیکن ابھی محفوظ نہ ہوئے ڈیٹا کا حجم اور اگلی writing کا سائز بڑھتا ہے۔ اگر writing کے ساتھ کوئی مخصوص مسئلہ نہ ہو تو default قدر رکھیں۔ مؤثر حد 64 MB تک محدود ہے۔

پڑھنے کا کوڈ، پیمائش کی اکائیاں اور range کی حد ntoskrnl.exe میں تصدیق شدہ ہیں۔ BitLocker کے بارے میں Microsoft کی پرانی دستاویزات کا اسی نام کا پیرامیٹر کسی دوسرے subsystem سے متعلق ہے؛ یہ دستاویزات یہاں بطور ماخذ استعمال نہیں ہوتیں۔

EnableAsyncLazywrite Cache Manager کی asynchronous deferred writing کو کنٹرول کرتا ہے۔ 25H2 کے کوڈ میں default قدر 2 مقرر ہے: یہ mode پہلے سے فعال ہے۔

اسی subsystem کی متعلقہ اقدار:

Value Default 25H2 کردار
EnableAsyncLazywrite 2 عمومی async lazy-write mode
EnableAsyncLazywriteMulti 2 ملحقہ multi-volume mode
EnablePerVolumeLazyWriter 2 Per-volume lazy writer

0 asynchronous deferred writing کو غیر فعال کرتا ہے۔ 1 کے لیے ہر volume پر deferred writing کے الگ handler کا mode درکار ہے۔ 2 اس شرط کے بغیر asynchronous mode فعال کرتا ہے۔ Cache Manager volume configurations پر کام کرتے وقت اقدار دوبارہ پڑھتا ہے۔

2 کی واضح writing Windows 11 25H2 کی طے شدہ configuration کو دہراتی ہے اور کچھ اضافی بہتر نہیں کرتی۔ یہ setting بنیادی طور پر diagnostics کے لیے موزوں ہے: قدر 0 default طور پر چلنے والے mechanism کو غیر فعال کرنے دیتی ہے۔

Reading system tracing میں دیکھی گئی اور ntoskrnl.exe میں تصدیق شدہ ہے۔ Default قدر 2 کوڈ اور reverse engineering کے نتائج پر مبنی registry parameters کی آزاد وضاحت سے تصدیق شدہ ہے۔

پیرامیٹر میگا بائٹ میں وہ فاصلہ مقرر کرتا ہے جس کے بعد Cache Manager sequential reading کی موجودہ پوزیشن کے پیچھے رہ جانے والے cached views آزاد کرتا ہے۔

پیرامیٹر کو پڑھنے اور لاگو کرنے کا کوڈ ntoskrnl.exe میں ہے اور cache کی mapping اور reading پر بلایا جاتا ہے۔ پیرامیٹر بڑی فائلوں کی sequential reading سے متعلق ہے؛ یہ پورے file cache کو غیر فعال نہیں کرتا۔

  • 0 یا 128 سے بڑی قدر کو کوڈ 8 سے بدل دیتا ہے۔
  • کام کرنے کی range: 1..128 MB۔
  • کوڈ کا default: 8 MB۔
  • Registry value کی اکائیاں بالکل MB ہیں، bytes نہیں۔

پیرامیٹر صرف بڑی فائلوں کی sequential reading کے مخصوص کاموں کے لیے معنی رکھتا ہے۔ بڑی window پر موجودہ پوزیشن کے پیچھے cache کی mapping دیر تک برقرار رہتی ہے، چھوٹی پر جلد آزاد ہو جاتی ہے۔ عام کام کے لیے طے شدہ قدر 8 MB موزوں ہے؛ دستی setting کا فائدہ عام طور پر کم ہوتا ہے۔

پڑھنے، لاگو کرنے اور range کی حد کا کوڈ ntoskrnl.exe میں تصدیق شدہ ہے۔ اس اندرونی پیرامیٹر کے لیے Microsoft کی جدید عوامی دستاویزات نہیں ملیں۔

0 پر cache topology بیان کرنے والا API متعلقہ structure کے لیے ایک واحد entry واپس کرتا ہے جو کئی processor groups پر محیط ہوتی ہے۔ 1 پر entries processor groups کے لحاظ سے الگ ہو جاتی ہیں۔

پڑھنے کا کوڈ ntoskrnl.exe میں ہے۔ پیرامیٹر KeQueryLogicalProcessorRelationship میں relation RelationCache کی processing میں استعمال ہوتا ہے۔

صرف وہ topology description بدلتی ہے جو system API واپس کرتا ہے۔ مختص فزیکل میموری blocks الگ نہیں ہوتے، اور مسلسل block کی کمی کا امکان بذات خود کم نہیں ہوتا۔

  • 0: default قدر۔
  • 1: topology entries کو processor groups کے لحاظ سے الگ کریں۔
  • عملی اثر بنیادی طور پر کئی processor groups والے systems پر ممکن ہے، عام طور پر 64 سے زیادہ logical processors پر۔
  • عام ایک group والے system پر اثر نہیں ہوتا۔

پیرامیٹر صرف ان programs کے لیے ضروری ہے جو کئی processor groups والی machine پر cache topology طلب کرتے ہیں۔ یہ cache کے کام اور میموری کی allocation کو نہیں بدلتا۔ عام desktop computer کے لیے کوئی فائدہ نہیں۔

پڑھنے اور لاگو کرنے کا کوڈ ntoskrnl.exe میں تصدیق شدہ ہے۔ قدر اور مقصد KiSplitLargeCaches کی عوامی reverse engineering وضاحت سے ملائے گئے۔

پیرامیٹر عملی جائزہ
DisablePagingExecutive عام طور پر بہت کم فائدہ دیتا ہے، زیادہ کوڈ RAM میں روکے رکھتے ہوئے
DisablePageCombining پس منظر میں صفحات کے انضمام کے تصدیق شدہ بوجھ اور RAM کی بڑی بچت پر مفید
HeapDeCommitFreeBlockThreshold صرف kernel میں اثر کرتا ہے؛ عام applications کے لیے عملی فائدہ نہیں
ModifiedWriteMaximum Modified pages کی writing کے حالات بدلتا ہے؛ کوئی نمایاں مسئلہ نہ ہو تو طے شدہ قدر رکھیں
EnableAsyncLazywrite طے شدہ قدر 2 پہلے ہی mechanism فعال کرتی ہے؛ دوبارہ لکھنا کچھ بہتر نہیں کرتا
CacheUnmapBehindLengthInMB Sequential reading کی setting؛ طے شدہ 8 MB عام کام کے لیے موزوں ہیں
SplitLargeCaches کئی processor groups کے لیے topology description بدلتا ہے؛ عام system پر اثر نہیں ہوتا

اوپر دیے گئے paths، types، default اقدار، پیرامیٹرز کو پڑھنے کا کوڈ اور وقت، نیز ranges کی حدود تصدیق شدہ ہیں۔ نتائج Windows 11 25H2 build 26200.9168 سے متعلق ہیں۔ Windows کے کسی دوسرے update، RAM کے حجم، اسٹوریج کی قسم یا CPU topology پر رویہ مختلف ہو سکتا ہے۔

مشاہدات کے dynamic حصے کو کیسے دہرایا جائے — دیکھیں خود کیسے جانچیں۔

واپسی کے لیے پیرامیٹرز کی طے شدہ اقدار بحال کریں یا غیر ضروری entries حذف کریں۔ کچھ اقدار Windows کی اگلی boot پر لاگو ہوتی ہیں۔

تحقیق اور اس میں استعمال ہونے والے tools BoosterX کے developer کی ملکیت ہیں، اس لیے developer کا نتائج میں براہ راست مفاد ہے۔ طریقہ کار اور اطلاق کی حدود اس مضمون میں بیان کیے گئے ہیں؛ نتائج کو عوامی ڈیٹا اور نیچے دیے گئے عوامی ماخذوں سے جانچا جا سکتا ہے۔

کوڈ کے بارے میں دعوے Windows 11 25H2 کے system components کے static analysis سے تصدیق شدہ ہیں۔ Decompiled code، offsets، اصل traces اور اندرونی مواد شائع نہیں کیے جاتے۔

عوامی ماخذ جانچے گئے: 2026-09-02۔

  • 2026-09-20: مفادات کے تصادم کے بارے میں disclaimer اور طریقہ کار میں dynamic مشاہدات کی خود جانچ کے لنک کا اضافہ۔
  • 2026-09-02: پہلی اشاعت؛ paths، defaults، clamps اور پیرامیٹرز کو پڑھنے کے کوڈ کی تصدیق، عملی افادیت کی حدود کا اضافہ۔