تخطَّ إلى المحتوى

DPC وعمال Kernel Executive في Windows 11 25H2

على هذه الصفحة

غالبًا ما يُنظر إلى مجموعة DpcQueueDepth، وحدود worker، ومعاملات watchdog على أنها مجموعة من تحسينات latency الشاملة. في الواقع، هذه حدود داخلية وآليات حماية في النواة. لا يظهر تأثيرها إلا في حالة وجود قائمة انتظار DPC محددة، أو عدد معين من المعالجات، أو نوع معين من برامج التشغيل، أو خطأ في worker.

تم فحص الحدود التي تقرأها النواة لـ DPC، وworker threads، وwatchdog، وكيفية تسوية القيم، وأين تُطبَّق هذه الآليات فعليًا.

Windows 11 25H2 build 26200.9168، الفرعان Session Manager\Kernel وSession Manager\Executive. لم تشمل القياسات الوظائف المعتمدة على العتاد ولا برامج التشغيل المحددة.

تحليل ساكن لـ ntoskrnl.exe: البحث عن readers والمستهلكين، والتحقق من النطاقات وتسوية القيم؛ ومطابقتها مع وثائق Microsoft العامة.

مسار DPC وwatchdog:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel

Value Type Default/normalization ما الذي يتحكم به
DpcQueueDepth REG_DWORD 4 عمق قائمة انتظار DPC
MinimumDpcRate REG_DWORD 3 الحد الأدنى لمعدل معالجة DPC
IdealDpcRate REG_DWORD 20 معدل DPC المستهدف
AdjustDpcThreshold REG_DWORD 20 عتبة تكيّف سياسة DPC
ThreadDpcEnable REG_DWORD 1 معالجة thread-DPC
DpcWatchdogPeriod REG_DWORD 120000 فترة DPC watchdog
DpcCumulativeSoftTimeout REG_DWORD 120000 في البنية المفحوصة الميزانية الناعمة المتراكمة
PassiveWatchdogTimeout REG_DWORD 300 ثوانٍ watchdog على مستوى passive عند KD
ForceIdleGracePeriod REG_DWORD 5 ثوانٍ فترة السماح force-idle
PerfIsoEnabled REG_DWORD 0 عزل الأداء
CacheIsoBitmap REG_DWORD 0 قناع Intel CAT L3
SchedulerAssistThreadFlagOverride REG_DWORD 0 تجاوز مساعد المجدول
VpThreadSystemWorkPriority REG_DWORD 30، النطاق 1..31 أولوية عمل المعالج الافتراضي
AlwaysTrackIoBoosting REG_DWORD 0 تتبع تعزيز الإدخال/الإخراج التشخيصي

مسار Kernel Executive workers:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive

Value Type Default/normalization ما الذي يتحكم به
AdditionalCriticalWorkerThreads REG_DWORD 0، clamp 0..100 عمال critical إضافيون
AdditionalDelayedWorkerThreads REG_DWORD 0، clamp 0..100 عمال delayed
MaximumKernelWorkerThreads REG_DWORD 4096، 32..16384 الحد الأعلى لعمال kernel
ForceEnableMutantAutoboost REG_DWORD 0 تعزيز تلقائي لـ mutant
WorkerThreadTimeoutInSeconds REG_DWORD 600، 60..3600 مهلة worker

Session Manager\Kernel وSession Manager\Executive فرعان مختلفان من الإعدادات. لكل قيمة، المسار الذي يفتحه reader النواة في هذه البنية هو المهم.

قائمة انتظار DPC والمعدلات

Section titled “قائمة انتظار DPC والمعدلات”

تستخدم النواة DpcQueueDepth، وMinimumDpcRate، وIdealDpcRate، وAdjustDpcThreshold للتحكم في قائمة الانتظار وتكيّف معالجة DPC. القيم الافتراضية المفحوصة 4/3/20/20 تتوافق بالفعل مع الحالة القياسية لـ Windows 11 25H2؛ وإعادة كتابة هذه الأرقام لا تغيّر شيئًا.

الفائدة: قد تكون هذه المعاملات مفيدة عند تحليل تراكم DPC محدد، لكن دون تتبع ETW/WPR، فإن التغيير الأعمى لا يشخّص السبب. قد تؤخر قائمة الانتظار الكبيرة المعالجة وتزيد ذيل التأخير.

ThreadDpcEnable=1 يفعّل بنية threaded-DPC، و0 يعيد العمل إلى مسار DIRQL العادي وقد يطيل نوافذ إيقاف المقاطعات. MaximumKernelWorkerThreads يحدّ من التجمع العام لعمال kernel. يُضاف AdditionalCriticalWorkerThreads وAdditionalDelayedWorkerThreads إلى التجمعات الأساسية: على Windows للعملاء، هذا يعني 5 من عمال critical و7 من عمال delayed قبل تطبيق التجاوز.

المزيد من الخيوط لا يعني تأخيرًا أقل: يستهلك العمال الإضافيون stack، ووقت المجدول، وموارد cache، وقد تكون قائمة الانتظار محدودة بمكوّن آخر. AdditionalDelayedWorkerThreads=32 يضيف بالفعل عمال delayed، لكن لا يوجد مكسب عام مقيس.

DpcCumulativeSoftTimeout يحدّ من الوقت المتراكم لـ DPC. DpcWatchdogPeriod=0 مقبول ويعطّل هذا watchdog؛ وأي قيمة غير صفرية أقل من 2000 تصبح 2000 ms. يُستخدم PassiveWatchdogTimeout فقط عند تفعيل kernel debugger، لذلك على نظام عادي لا يكون هذا timer نشطًا حتى مع 300 ثوانٍ القياسية. WorkerThreadTimeoutInSeconds يحدّ من تعليق عملية worker.

DpcCumulativeSoftTimeout له حد أدنى 2000 ms ولا يمكن أن يتجاوز DpcWatchdogPeriod. للحصول على القيمة 240000، يجب أن تكون فترة watchdog أيضًا 240000. يتم تسوية WorkerThreadTimeoutInSeconds إلى النطاق 60..3600 ثوانٍ؛ وكتابة 0 لا تعطّل المهلة، بل تؤدي إلى القيمة الدنيا.

تعطيل مهلة الحماية يزيل التشخيص، لكنه لا يصلح سبب التعليق. بالنسبة لنظام production، يُعدّ watchdog جزءًا من آلية اكتشاف برامج التشغيل المعطوبة.

ForceEnableMutantAutoboost موجود في الفرع Executive، بينما يُقرأ ForceIdleGracePeriod، وPerfIsoEnabled، وCacheIsoBitmap، وSchedulerAssistThreadFlagOverride، وVpThreadSystemWorkPriority، وAlwaysTrackIoBoosting من الفرع Kernel. هذا الفرق حاسم: الإدخال الذي يحمل الاسم نفسه في المفتاح المجاور لا يُطبَّق.

يُستخدم CacheIsoBitmap فقط عند دعم Intel Resource Director/CAT؛ بدون CAT، لا تُنشئ القيمة أي عزل. SchedulerAssistThreadFlagOverride=0 و1 يتركان التفعيل التلقائي، و2 يعطّل الفرع قسريًا. VpThreadSystemWorkPriority يسمح بـ 1..31، وإلا يُعاد ضبطه إلى 1؛ القيمة الافتراضية 30، و31 هو مجرد الحد الأعلى. AlwaysTrackIoBoosting=1 يفعّل allocation وstack-capture التشخيصيين على مسارات boost، ولا يُبقي أولوية الإدخال/الإخراج مرتفعة.

الفائدة: دون تأثير consumer مؤكد، يكون التأثير عادةً غائبًا أو أصغر من أن يبرر قرارًا عمليًا. هذه القيم مفيدة كموضوع تشخيص kernel منفصل، وليس كمجموعة تحسين عامة.

القيم الافتراضية المفحوصة 4/3/20/20 تتوافق مع الحالة القياسية لـ Windows 11 25H2. العمال الإضافيون افتراضيًا يساوون صفرًا، والحد الأعلى لعمال kernel هو 4096 بنطاق 32..16384. تُسوَّى معاملات watchdog: قيمة أقل من 2000 ms تصبح 2000، وDpcCumulativeSoftTimeout لا يتجاوز فترة watchdog. الفرعان Kernel وExecutive غير قابلين للتبادل.

  • Readers ومستهلكو المعاملات في ntoskrnl.exe البنية المفحوصة.
  • القيم الافتراضية وحدود التسوية، بما في ذلك التبعيات بين معاملات watchdog.
  • فصل الفرعين Kernel وExecutive: الإدخال الذي يحمل الاسم نفسه في المفتاح المجاور لا يُطبَّق.
  • تأثير تغيير المعاملات على FPS أو التأخير أو الاستجابة.
  • فائدة تغيير الحدود دون مشكلة مؤكدة في قائمة انتظار DPC أو worker.

لا تغيّر هذه المعاملات بشكل أعمى: دون تتبع ETW/WPR، لا يمكن تحديد سبب التراكم. بالنسبة لنظام عامل، أبقِ watchdog مفعّلًا، واستخدم المعاملات للتشخيص، لا كمجموعة تحسين.

أعِد القيم القياسية أو احذف الإدخالات الاختيارية. تُطبَّق معاملات النواة عند التحميل التالي لـ Windows.

تم فحص readers وconsumers في ntoskrnl.exe Windows 11 25H2 build 26200.9168. لا تُنشر offsets أو pseudocode. لم تشمل هذه السلسلة مقاييس المستخدم النهائي.

لمعرفة كيفية تكرار الجزء الديناميكي من الملاحظات — راجع كيف تتحقق بنفسك.

يعود البحث والأدوات المستخدمة إلى مطوّر BoosterX، لذلك لدى المطوّر مصلحة مباشرة في النتائج. المنهجية وحدود التطبيق موصوفة أعلاه، ويمكن التحقق من الاستنتاجات عبر البيانات المفتوحة والمصادر العامة المذكورة.

تم التحقق من المصادر العامة: 2026-09-02.

  • 2026-09-20: نُقل قسم «النتائج» إلى الموضع الإلزامي قبل «استعادة الحالة»؛ وأُضيف إخلاء مسؤولية بشأن تضارب المصالح ورابط للتحقق الذاتي من الملاحظات الديناميكية في المنهجية.
  • 2026-09-02: النشر الأول؛ تم تأكيد readers وdefaults وclamps، وأُضيفت حدود الفائدة العملية.