آیا تاکنون احساس کردهاید به رغم استفاده از 100 درصدی از توان پردازشی پردازنده سیستم شما، سرعت انجام کارها بسیار پایین است؟ باید بگوییم شما تنها نیستید و نمیتوان به Task Manager ویندوز اعتماد کرد.
اگر از برنامه Task Manager ویندوز برای پی بردن به وضعیت پردازنده و شدت استفاده از آن استفاده میکنید، باید بگوییم اطلاعاتی که نمایش دهد به هیچ عنوان دقیق نیست. معیارهایی که همه ما برای پی بردن به «شدت استفاده از پردازنده» (CPU utilization) استفاده میکنیم عمیقاً گمراه کننده هستند و هر ساله بدتر هم میشود. اما شدت استفاده از پردازنده چیست؟ پردازنده سیستم شما تا چه اندازه بار کاری دارد؟ خب باید بگوییم آنچه که در Task Manager ویندوز به عنوان شدت استفاده از پردازنده نمایش داده میشود، هیچ یک از اینها نیست. این مسئله در باره همه ما و تمامی برنامههای «پایش کارایی» (Performance Monitoring) صدق میکند.
شاید تصور کنید نمایش شدت استفاده 90 درصدی پردازنده در Task Manager به این معنا باشد:
اما در حقیقت بیشتر به شکل زیر نزدیک است:
در شکل بالا Stalled به معنی متوقف شدن پردازنده و پیشروی نکردن اجرای دستورالعمل است که علت اصلی آن منتظر ماندن پردازنده برای انجام عملیات خواندن-نوشتن حافظه اصلی (RAM) است. در شکل بالا نسبت زمان فعالیت پردازنده (Busy) به زمان متوقف شدن پردازنده (Stalled) بسیار به عملکرد در دنیای واقعی نزدیک است. در حقیقت پردازنده سیستم شما وقت بسیار زیادی متوقف میشود اما شما از آن بی اطلاع هستید. اما این موضوع چه اهمیتی برای شما دارد؟ پی بردن به شدت بروز وقفه در کار پردازنده میتواند بهینه سازی کارایی را بر کاهش تعداد خطوط کد منبع برنامهها یا کاستن تعداد مراجعات به حافظه متمرکز کند.
شدت استفاده از پردازنده به چه معنا است؟
معیاری که شدت استفاده از پردازنده خوانده میشود، در حقیقت زمان بلا استفاده نبودن پردازنده است، به عبارتی دیگر مدت زمانی که پردازنده مشغول اجرای Thread بلا استفادگی سیستم عامل نیست. هسته سیستم عامل شما (هرچه که باشد) به طور مکرر وضعیت آن را پایش میکند. اگر یک Thread غیر بلا استفادگی اجرا شود، 100 میلی ثانیه بعد، هسته سیستم استدلال میکند پردازنده به طور کامل استفاده شده است.
اما مشکل کجاست؟
امروزه پردازندهها بسیار سریعتر از حافظه اصلی هستند و منتظر ماندن برای حافظه، از آنچه که شدت استفاده از پردازنده خوانده میشود پیشی میگیرد. هنگامی که شدت استفاده از پردازنده شدیداً بالا نمایش داده میشود (شکل 1)، ممکن است تصور کنید پردازنده دچار گرفتگی (Bottleneck) شده اما در حقیقت این حافظه DRAM است که باعث بروز آن شده است.
آنچه که گفته شد روز به روز در حال بدتر شدن است. برای مدت طولانی سازندگان فرکانس پردازندهها را بسیار سریعتر از پیشرفت تأخیر حافظههای DRAM افزایش میدادند. نزدیک سال 2005 با رسیدن پردازندهها به فرکانس 3 گیگاهرتز، این رویه تقریباً متوقف شد و پس از آن پیشرفت پردازندهها بر افزایش تعداد هستههای پردازشی، بهکارگیری تکنیکهای Multithreading و بیش از یک سوکت پردازنده متمرکز بود که همه اینها بر شدت تقاضا از بخش حافظه افزود. سازندگان پردازنده تلاش کردند از طریق تعبیه حافظههای کش بیشتر و هوشمند، و همچنین گذرگاه و رابط حافظه سریعتر، از شدت گرفتگی کارایی ناشی از حافظه بکاهند. علی رغم همه آنچه که گفته شد، هنوز هم پردازندههای ما معمولاً دچار پدیده توقف میشوند.
با استفاده از پایش کنندههای کارایی (PMC) نظیر perf در سیستم عامل لینوکس که در اصل یک شمارنده است، میتوان به شدت استفاده از پردازنده پی برد، برای نمونه تصویر زیر استفاده کلی سیستم ظرف 10 ثانیه را نشان میدهد.
معیار کلیدی که اینجا شاهد آن هستیم، تعداد دستورالعملهای قابل اجرا به ازای هر سیکل (IPC) است که نشان میدهد به طور متوسط در هر سیکل ساعت پردازنده چند دستورالعمل اجرا میشود. اگر ساده بخواهیم بگوییم، IPC بالاتر ایده آل تر است. در نمونه بالا 0.78 ثانیه بیانگر شدت استفاده 78 درصد است که ظاهراً بد نیست. اما هنگامی که متوجه شوید اوج سرعت پردازنده در IPC 4.0 است، دیگر مطلوب به نظر نمیرسد. IPC 4.0 به عنوان 4 مسیره نیز شناخته میشود که به مسیر واکشی و رمزگشایی دستورالعملها اشاره دارد. به عبارتی دیگر به معنای توانایی پردازنده در اتمام چهار دستورالعمل به ازای هر سیکل است، بنابراین IPC 0.78 در یک سیستم با 4 مسیر به این معنی است که پردازنده در 19.5 درصد حداکثر سرعت خود کار میکنند. پردازندههای جدیدتر اینتل دارای 5 مسیر هستند.
تفسیر IPC
اگر IPC کمتر از 1.0 باشد، به احتمال زیاد سیستم با توقف کار پردازنده ناشی از حافظه مواجه است. در این صورت استراتژیهای بهبود کارایی میتواند شامل کاستن از شدت مراجعه به حافظه، بهبود بهره گیری از حافظه کش و موقعیت حافظه باشد. در بخش سخت افزار نیز میتوان از پردازندههای مجهز به حجم بیشتری حافظه کش، حافظه و گذرگاه سریعتر استفاده کرد.
در صورتی که IPC بیشتر از 1 باشد، احتمالاً با افزونگی دستورالعملها مواجه هستیم، در این صورت استراتژیهای بهبود IPC میتواند شامل تلاش برای کاستن از حجم کدهای اجرایی، حذف کارهای غیر ضروری و مراجعات به حافظه کش باشد. در بخش سخت افزار میتوان از پردازندههای با فرکانس بالاتر و تعداد بیشتری هسته پردازشی با توانایی اجرای تعداد بیشتری Thread استفاده کرد.
- سایر علل گمراه کننده بودن شدت استفاده از پردازنده
- این فقط وقفههای ناشی از حافظه نیست که باعث گمراه کننده بودن شدت استفاده از حافظه میشود. از دیگر عوامل میتوان موارد زیر را برشمرد:
- تغییر فرکانس پردازنده بر اثر بالا رفتن دما
- فناوریهای بوست باعث شدهاند فرکانس متغیر باشد
- هسته سیستم عامل به صورت پویا فرکانس را تغییر میدهد
سخن پایانی
آنچه که شدت استفاده از پردازنده خوانده می شود و توسط برنامه هایی چون Task Manager ویندوز نمایش داده می شود، بسیار گمراه کننده است، چراکه وقفه های رخ داده در کار پردازنده را نیز به عنوان انجام کار در نظر می گیرد. شاید نیاز باشد سازندگان سیستم عامل و همچنین برنامه های پایش کارایی، به معیارهای تازه ای چون IPC روی بیاورند تا به طور دقیق تر بازتاب دهنده وضعیت پردازنده باشد.
منبع: شهر سخت افزار
بدون دیدگاه