اولویت در برنامه زمانبندی وظایف ویندوز

هرکسی که کارهایی را در زمان‌بندی وظایف ویندوز اجرا کند، دیر یا زود با تفاوت‌های غیرقابل توضیح در زمان اجرا مواجه می‌شود. یک اسکریپت PHP که در عرض 5 دقیقه در خط فرمان اجرا می شود، وقتی از طریق Windows Task Scheduler اجرا می شود، ناگهان 20 دقیقه طول می کشد. کاربر یکسان، حقوق یکسان، کد یکسان – چهار برابر زمان اجرا. آنجا چه خبر بود؟


بعد از ساعت ها اشکال زدایی, جلسات مانیتور فرآیند و مقایسه‌های پیکربندی بی‌شماری، راه‌حل به‌طور تکان‌دهنده‌ای ساده بود: زمان‌بندی وظایف ویندوز به‌طور پیش‌فرض اولویت فرآیند کمتری را تعیین می‌کند. مقدار پیش فرض وظایف در Task Scheduler است 7 (زیر نرمال)، نه 4-6 (عادی)، همانطور که انتظار دارید. این تفاوت به ظاهر کوچک می تواند منجر به از دست دادن عملکرد گسترده در عملیات های I/O فشرده شود.

سطوح اولویت ویندوز با جزئیات عبارتند از::

ارزشاولویتشرح
0بی‌درنگبالاترین اولویت (احتیاط!)
1بالااولویت بالا
2-3بالاتر از حد نرمالدرباره عادی
4-6عادیاستاندارد برای فرآیندهای تعاملی
7پایین‌تر از حد نرمالپیش‌فرض در زمان‌بندی وظایف
8-9پایین‌تر از حد نرمالحتی پایین‌تر
10بیکارکمترین اولویت

مشکل اولویت در زمان‌بندی وظایف چندوجهی است: وقتی یک وظیفه را خروجی می‌گیرید و به XML آن نگاه می‌کنید، اغلب متوجه خواهید شد خیر تنظیم اولویت. سپس ویندوز بی‌سروصدا از مقدار پیش‌فرض استفاده خواهد کرد. 7. رابط کاربری گرافیکی (GUI) این مقدار را هنگام خروجی گرفتن نمایش می‌دهد، اما به طور صریح در وظیفه ذخیره نمی‌شود. اولویت پایین‌تر نه تنها منجر به زمان کمتر CPU می‌شود، بلکه:

  • عملیات ورودی/خروجی دیسک با محدودیت
  • اولویت شبکه پایین‌تر
  • حافظه پنهان ضعیف سیستم فایل
  • تأخیر در دسترسی به پایگاه داده

حتی اگر از همان کاربر استفاده کنید و «اجرا با بالاترین امتیازات» را فعال کنید، این وظیفه در یک محیط ویندوز استیشن/دسکتاپ متفاوت با اولویت‌های متفاوت اجرا می‌شود. برای شناسایی مشکل، می‌توانید از PowerShell برای فهرست کردن تمام وظایف با اولویت‌های واقعی آنها استفاده کنید.:

38b7fa6c77dc344401485cd338ea4128

تقریباً تمام وظایف من با اولویت انجام شدند 7. اکنون ما به طور خاص اولویت چندین کار را به طور همزمان اصلاح می‌کنیم:

38b7fa6c77dc344401485cd338ea4128

پس از تنظیم اولویت 4 اسکریپت PHP من (به طور معمول) دوباره در 300 ثانیه مورد انتظار اجرا شد. اگر وظایفی را با یک حساب کاربری خاص پیکربندی کرده اید، می توانید به سادگی این را در خط 10 به صورت زیر وارد کنید.:

38b7fa6c77dc344401485cd338ea4128

بازگشت