تجزیه و تحلیل زمان بندی موضوع، تجزیه و تحلیل زمان بندی موضوع، تجزیه و تحلیل زمان بندی موضوع، تجزیه و تحلیل زمان بندی موضوعات

برای تعیین اینکه آیا رشته‌های پردازش بازی شما به طور مناسب مورد استفاده قرار گرفته و برای بهترین عملکرد برنامه‌ریزی شده‌اند، باید چند نکته را در نظر بگیرید.

  • سرعت فریم
  • چندنخی و موازی‌سازی نخ‌ها
  • وابستگی هسته پردازنده

چندنخی

بسیاری از بازی‌ها و موتورهای بازی از چندرشته‌ای برای تقسیم کار CPU به وظایف منطقی استفاده می‌کنند که ممکن است تا حدودی مستقل از هم اجرا شوند. یک پیکربندی معمول، یک رشته بازی برای ورودی و منطق بازی، یک رشته رندر برای آماده‌سازی و ارسال اشیاء برای ترسیم و رشته‌های کارگر برای سایر زیروظایف مانند انیمیشن یا صدا است.

ما توصیه می‌کنیم که رشته‌ها را موازی کنید تا از مزایای افزایش عملکرد چندرشته‌ای بهره‌مند شوید. به عنوان مثال، می‌توان به سناریویی اشاره کرد که در آن رشته‌های بازی و رندر به طور جزئی یا کامل به طور همزمان روی هسته‌های مختلف اجرا می‌شوند. این امر همیشه امکان‌پذیر نخواهد بود، مانند مواردی که وابستگی‌های داده‌ای مشترک وجود دارد. با این حال، در صورت امکان، این امر ممکن است منجر به کاهش زمان پردازش CPU و در نتیجه افزایش بالقوه نرخ فریم شود.

بازی با یک رشته اصلی و رندر به خوبی موازی، و همچنین یک رشته کارگر و رشته صدا
شکل ۱. بازی با یک رشته اصلی و رندرینگ کاملاً موازی، و همچنین یک رشته کارگر و یک رشته صوتی

وابستگی هسته پردازنده

یکی از عواملی که به طور قابل توجهی بر عملکرد بارهای کاری CPU شما تأثیر می‌گذارد، نحوه‌ی زمان‌بندی آنها روی هسته‌ها است. این موضوع را می‌توان به دو بخش تقسیم کرد:

  • اینکه آیا رشته‌های بازی شما روی مناسب‌ترین هسته برای حجم کاری خود اجرا می‌شوند یا خیر.
  • اینکه آیا رشته‌های بازی شما مرتباً بین هسته‌ها جابجا می‌شوند یا خیر.

دستگاه‌های مدرن اغلب از معماری به نام محاسبات ناهمگن استفاده می‌کنند که در آن هسته‌ها سطوح عملکرد متفاوتی دارند:

  • یک یا چند هسته، عملکرد اوج بالایی را ارائه می‌دهند، اما انرژی بیشتری مصرف می‌کنند. به این هسته‌ها گاهی هسته‌های «بزرگ» گفته می‌شود.
  • هسته‌های دیگر اوج عملکرد پایین‌تری دارند، اما از نظر مصرف انرژی کارآمدتر هستند. به این هسته‌ها گاهی هسته‌های «کوچک» گفته می‌شود.
  • به صورت اختیاری: یک یا چند هسته، تعادلی بین عملکرد و قدرت ارائه می‌دهند. این هسته‌ها گاهی اوقات هسته‌های «میانی» نامیده می‌شوند.

شما می‌توانید با فعال کردن CPU در پیکربندی پروفایل هنگام گرفتن ردیابی، رفتار نخ CPU را در قسمت CPU Usage بررسی کنید. با بزرگنمایی بخشی از ردیابی خود که کمتر از ۲۰۰ میلی‌ثانیه طول می‌کشد، می‌توانید فرآیندهای جداگانه‌ای را که روی هسته‌های CPU دستگاه شما در حال اجرا هستند، مشاهده کنید. معمولاً هسته‌های کوچکتر با شاخص‌های کوچکتر مطابقت دارند (برای مثال، CPUهای '۰'-'۳') در حالی که هسته‌های بزرگتر با شاخص‌های بالاتر مطابقت دارند (برای مثال، CPUهای '۶'-'۷') و هسته‌های میانی در صورت وجود، شاخص‌های بین آنها را اشغال می‌کنند (برای مثال، CPUهای '۵'-'۶'). این یک قرارداد رایج است، اما تضمینی نیست.

اگر متوجه شدید که برخی از نخ‌ها (threads) روی پردازنده‌هایی زمان‌بندی می‌شوند که نیازهای آنها را برای عملکرد یا قدرت برآورده نمی‌کنند، تنظیم دستی وابستگی پردازنده (CPU affinity) را برای آن نخ‌ها در نظر بگیرید.

بازی با رشته اصلی و رندر که عمدتاً روی هسته‌های بزرگ (CPU 6-7) اجرا می‌شود، با آبی روشن نشان داده شده است
شکل ۲. بازی با رشته‌های اصلی و رندر که عمدتاً روی هسته‌های بزرگ (CPU 6-7) اجرا می‌شوند، با رنگ آبی روشن نشان داده شده است

همچنین می‌توانید مشاهده کنید که آیا نخ‌های شما بین هسته‌ها جابجا می‌شوند یا خیر. چنین سوئیچ‌های هسته ای مقداری سربار از سوئیچ زمینه و از دست دادن وضعیت با حافظه پنهان/ثبت‌های هسته متحمل می‌شوند.

بازی با هسته اصلی (Thread-7) و هسته رندر (Thread-8) که بین هسته‌ها جابجا می‌شوند، با رنگ بنفش نشان داده شده است
شکل ۳. بازی با هسته اصلی (Thread-7) و هسته رندر (Thread-8) که بین هسته‌ها جابجا می‌شوند، با رنگ بنفش نشان داده شده است

تنظیم وابستگی CPU برای یک رشته، به سیستم دستور می‌دهد که وقتی بازی شما در پیش‌زمینه است، آن را روی هسته‌ی داده‌شده زمان‌بندی کند. هنگام انجام این کار، چندین عامل وجود دارد که باید در نظر گرفته شوند:

  • نرم‌افزار پلتفرم نمی‌تواند به صورت پویا، جایگذاری وظایف را برای عوامل زمان اجرا مانند بار و تنظیم دما تنظیم کند.
  • آزمایش عملکرد روی دستگاه‌های مختلف ممکن است ویژگی‌های عملکردی بسیار متفاوتی را به همراه داشته باشد، به خصوص اگر دستگاه‌ها از نظر قیمت یا تاریخ انتشار تفاوت قابل توجهی داشته باشند.

    یک دستگاه جدیدتر یا گران‌تر ممکن است به راحتی حجم کاری مشخصی را با یک هسته کوچک اجرا کند، اما یک دستگاه قدیمی‌تر یا مقرون‌به‌صرفه‌تر ممکن است برای رسیدن به ضرب‌الاجل‌های همان حجم کاری به هسته بزرگ‌تری نیاز داشته باشد.

  • با مجبور کردن هسته‌های بزرگ به انجام پردازش‌های ترکیبی، ممکن است بی‌جهت مصرف باتری و بار حرارتی را افزایش دهید.

به همین دلایل، معمولاً بهتر است از تنظیم دستی وابستگی‌های CPU خودداری کنید.