الأولوية في جدولة المهام في Windows

أي شخص يدير وظائف في برنامج جدولة مهام Windows سوف يعثر عاجلاً أم آجلاً على اختلافات لا يمكن تفسيرها في وقت التشغيل. فجأة يستغرق برنامج PHP النصي الذي يتم تشغيله خلال 5 دقائق على سطر الأوامر 20 دقيقة عند تشغيله عبر برنامج جدولة المهام في Windows. نفس المستخدم، نفس الحقوق، نفس الكود - أربعة أضعاف وقت التنفيذ. ماذا كان يحدث هناك؟


بعد ساعات تصحيح الأخطاء, جلسات مراقبة العمليات ومقارنات التكوين التي لا تعد ولا تحصى، كان الحل بسيطًا بشكل صادم: تحدد جدولة مهام Windows أولوية عملية أقل بشكل افتراضي. القيمة الافتراضية للمهام في برنامج جدولة المهام هي 7 (أقل من المعدل الطبيعي) ليس 4-6 (عادي)، كما تتوقع. يمكن أن يؤدي هذا الاختلاف البسيط على ما يبدو إلى خسائر هائلة في الأداء في عمليات الإدخال/الإخراج المكثفة.

مستويات أولوية Windows بالتفصيل هي:

قيمةأولويةوصف
0في الوقت الحالىأعلى أولوية (تحذير!)
1عاليأولوية عالية
2-3فوق المعدل الطبيعيحول الوضع الطبيعي
4-6طبيعيمعيار العمليات التفاعلية
7أقل من المعدل الطبيعيافتراضيًا في جدول المهام
8-9أقل من المعدل الطبيعيأقل حتى
10عاطلأقل أولوية

إن مشكلة تحديد الأولويات في جدولة المهام متعددة الأوجه: فعند تصدير مهمة والاطلاع على ملف XML الخاص بها، ستجد غالبًا لا تحديد الأولوية. سيستخدم Windows بعد ذلك القيمة الافتراضية بصمت. 7. تعرض واجهة المستخدم الرسومية هذه القيمة أثناء التصدير، ولكنها لا تُخزَّن صراحةً في المهمة. لا يُؤدي انخفاض الأولوية إلى تقليل وقت وحدة المعالجة المركزية فحسب، بل أيضًا:

  • عمليات إدخال/إخراج القرص المخنوق
  • أولوية الشبكة المنخفضة
  • تخزين مؤقت ضعيف لنظام الملفات
  • تأخيرات في الوصول إلى قاعدة البيانات

حتى إذا استخدمتَ نفس المستخدم وفعّلتَ خيار "التشغيل بأعلى صلاحيات"، فسيتم تشغيل المهمة في بيئة سطح مكتب/محطة ويندوز مختلفة بأولويات مختلفة. لتحديد المشكلة، يمكنك استخدام PowerShell لعرض جميع المهام مع أولوياتها الفعلية.:

38b7fa6c77dc344401485cd338ea4128

تم تنفيذ جميع مهامي تقريبًا بالأولوية 7. نقوم الآن بتصحيح أولوية العديد من المهام في وقت واحد على وجه التحديد:

38b7fa6c77dc344401485cd338ea4128

بعد تحديد الأولوية لـ 4 (عادة) تم تشغيل البرنامج النصي PHP الخاص بي مرة أخرى خلال الـ 300 ثانية المتوقعة. إذا قمت بتكوين المهام باستخدام حساب مستخدم محدد، فيمكنك ببساطة إدخال ذلك في السطر 10 على النحو التالي:

38b7fa6c77dc344401485cd338ea4128

عودة