منبع اصلی نوشتار زیر در این لینک قرار دارد

زمان مصرفی پردازنده در لینوکس-یونیکس ها

در سیستم عامل ها یک فرایند بر اساس مُد (Mode) اجرایش در یکی از دو دسته فضای، ۱) مُد کاربر (یا فضای کاربر – User Space) و ۲) مُد هسته (یا فضای هسته – Kernel Mode) اجرا می شود. فرایند فضای کاربر حق دسترسی مستقیم به فضای هسته را ندارد و زمانی که فرایند فضای کاربر نیاز به سرویسی از فضای هسته داشته باشد توسط فراخوان سیستمی سرویس را درخواست می کند.

بنابراین پردازنده (CPU) در یکی از دو مُد فضای کاربر و فضای هستهقرار دارد و فرایندها را اجرا می کند.. در خروجی دستوری مانند top عبارت us نشان دهنده زمان صرف شده فرایند در فضای کاربر و sy نشان دهنده زمان صرف شده فرایند در فضای هسته است. همچنین ممکن است در زمان هایی پردازنده بی کار یا معطل (Idle) باشد.

بنابراین می توان نتیجه گرفت که پردازنده در یکی از سه وضعیت زیر قرار دارد.

  • پردازنده بی کار است زیر پردازشی برای اجرا وجود ندارد.
  • پردازنده در مُد کاربر قرار دارد. در خالت عادی که یک دستور یا برنامه اجرا می شود.
  • پردازنده در مُد هسته وجود دارد. به طور مثال می توان پاسخ به یک وقفه یا اجرای فراخوان سیستمی دسترسی به سیستم فایل برای خواندن یک فایل از روی دیسک اشاره کرد.

دستور top برای مانیتورینگ فرایند ها و منابع سیستمی مانند پردازنده و حافظه اصلی بصورت Real Time استفاده می شود. بر خلاف دستور ps، دستور top نمایشی لحظه ای از وضعیت سیستم و فرایند ها و منابع مورد استفاده آن فرایند ها نشان می دهد.

linux_cpu_status1

در شکل بالا:

us نشان دهنده میزان زمان صرف شده پردازنده پردازنده در مُد کاربر و sy نشان دهنده میزان زمان صرف شده پردازنده در مُد هسته (یا مُد سیستم) است. بنابراین به ترتیب us و sy معرف میزان زمانی است که پردازنده صرف اجرای فرایندهای فضای کاربر و فضای هسته کرده است.

id میزان زمان بی کار (IDLE) بودن را نشان می دهد. پردازش زمانی در حالت اجرا (Running) است که پردازنده را در اختیار داشته باشد. پردازنده مسئول اجرای پردازش است و زمانی که پردازشی برای اجرا شدن وجود نداشته باشد، پردازنده بی کار خواهد ماند.

ni نشان دهنده زمان صرف شده پردازنده برای فرایندهایی است که سطح الویت آنها توسط دستور nice تغییر کرده اند. دستور nice برای تغییر اولیت یک فرایند در حال اجرا استفاده می شود. ni نشان دهنده میزان زمان صرف شده برای اجرای این فرایندها است.

wa نشان دهنده میزان زمان صرف شده توسط پردازنده برای انتظار انجام یک عملیات I/O مانند خواندن/نوشتن از/بر روی دیسک است. سرعت خواندن/نوشتن از/بر روی دیسک کند است، بنابراین زمانی که یک فرایند درخواست خواندن/نوشتن می کند، تا اتمام و تکمیل شدن عملیات، پردازنده در انتظار باقی می ماند.

 hi و si به ترتیب  نشان دهنده زمان صرف شده برای پردازش و پاسخ گویی به وقفه های سخت افزاری (Hardware Interrupt) و وقفه های نرم افزاری (Software Interrupt) است. وقفه های سخت افزاری توسط دسنگاه هایی مانند دیسک، صفحه کلید، کارت شبکه، ساعت سخت افزاری و غیره صادر می شوند.

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

st (مخفف steal time) تنها در ارتباط با محیط های (ماشین های) مجازی است. زمانی که لینوکس به صورت مجازی بر روی Hypervisor اجرا می شود، si مدت زمانی را نشان می دهد که یک پردازنده مجازی در انتظار Hypervisor می ماند تا Hypervisor به سرویس دهی دیگر پردازنده های مجازی بپردازد.

از شکل بالا مشخص است که تعداد ۱۸۶ Task در حال اجرا است که ۱۸۳ عدد از آنها در حالت Sleep، یک عدد در حالت اجرا (Running) و دو عدد در حالت بلاک شده (Blocked) هستند. همچنین می توانید مطلب “پیدا کردن تعداد فرایندهای در حال اجرا و بلاک شده” را مطالعه کنید.



برچسب ها : , , , , , ,