CPUPOWER-MONITOR(1) cpupower Manual CPUPOWER-MONITOR(1)

cpupower-monitor - پایش و گزارش حالات بیداری و فرکانس پردازنده

cpupower monitor -l

cpupower monitor [-c][-m <mon1>,[<mon2>,...]] [-i seconds]
cpupower monitor [-c][-m <mon1>,[<mon2>,...]] command

دستور cpupower-monitor توپولوژی، فرکانس و آمار وضعیت‌های توان بی‌کاری (idle) پردازنده را گزارش می‌دهد. این ابزار یا دستور command را منشعب (fork) کرده و آمار را پس از پایان آن چاپ می‌کند، یا اینکه آمار را به‌صورت دوره‌ای نمایش می‌دهد.

دستور cpupower-monitor شمارنده‌های مستقلی را برای وضعیت خواب (sleep state) و فرکانس پردازنده پیاده‌سازی می‌کند. برخی از این آمار از اطلاعات هسته لینوکس دریافت می‌شوند و برخی مستقیماً از ثبات‌های سخت‌افزاری خوانده می‌شوند. از گزینه -l برای مشاهده نمای کلی پایشگرهای پشتیبانی‌شده در سیستم خود استفاده کنید.

-l

پایشگرهای موجود در سیستم شما را فهرست می‌کند. جزئیات تکمیلی درباره هر پایشگر نمایش داده می‌شود:
  • نام پایشگر درون گیومه که می‌تواند به پارامتر -m داده شود.
  • تعداد شمارنده‌های متفاوتی که پایشگر پشتیبانی می‌کند (درون براکت).
  • مدت زمان به ثانیه که ممکن است شمارنده‌ها به دلیل محدودیت‌های پیاده‌سازی دچار سرریز (overflow) شوند.
  • نام و توضیحات هر شمارنده و سطح پوشش سلسله‌مراتب پردازنده برای آن (درون براکت):
  • [T] -> رشته پردازشی (Thread)
  • [C] -> هسته (Core)
  • [P] -> بسته پردازنده یا سوکت (Processor Package / Socket)
  • [M] -> شمارنده در سطح کل ماشین یا پلتفرم (Machine/Platform wide counter)

-m <mon1>,<mon2>,...

تنها پایشگرهای مشخص‌شده را نمایش می‌دهد. از رشته(های) نام پایشگر ارائه‌شده توسط گزینه -l استفاده کنید.

-i seconds

بازه زمانی اندازه‌گیری.

-c

فرآیند را پیش از شروع و پس از پایان اندازه‌گیری، بر روی تک‌تک هسته‌ها زمان‌بندی می‌کند. این گزینه ممکن است برای پایشگر Idle_Stats در شرایطی که هیچ پایشگر مبتنی بر MSR دیگری (که باید روی همان هسته مورد اندازه‌گیری اجرا شود) به‌صورت موازی اجرا نمی‌شود، مورد نیاز باشد. هدف از این کار بیدار کردن پردازنده‌ها از وضعیت‌های خواب عمیق‌تر است تا هسته بتواند پیش از خواندن زمان‌بندی‌های cpuidle از sysfs، اطلاعات cpuidle (وضعیت‌های C-state) خود را مجدداً محاسبه و به‌روزرسانی کند.

command

ویژگی‌های بی‌کاری و فرکانس یک دستور یا بار کاری دلخواه را اندازه‌گیری می‌کند. برنامه اجرایی command منشعب شده و با خروج آن، آماری که از زمان انشعاب جمع‌آوری شده نمایش داده می‌شود.

آمار زیرسیستم cpuidle هسته لینوکس را نمایش می‌دهد. مقادیر از مسیر /sys/devices/system/cpu/cpu*/cpuidle/state*/ خوانده می‌شوند. هسته این مقادیر را هر بار که پردازنده به یک وضعیت بی‌کاری وارد یا از آن خارج می‌شود، به‌روزرسانی می‌کند. بنابراین زمانی که هسته‌ها هنگام شروع یا پایان اندازه‌گیری برای مدتی در وضعیت بی‌کاری باشند، ممکن است مقداری عدم دقت وجود داشته باشد. در بدترین حالت ممکن است یک هسته در تمام طول مدت اندازه‌گیری در وضعیت بی‌کاری مانده باشد و زمان استفاده از وضعیت بی‌کاری گزارش‌شده توسط هسته به‌روزرسانی نشده باشد. در این حالت، میزان ماندگاری در وضعیت ۰ درصد نمایش داده می‌شود در حالی که در واقع ۱۰۰ درصد بوده است.

نام این پایشگر از ثبات‌های MSR با نام‌های aperf/mperf (میانگین و بیشینه) گرفته شده که در پردازنده‌های جدید X86 موجود هستند. این پایشگر میانگین فرکانس (شامل فرکانس‌های بوست) را نمایش می‌دهد. از آنجا که در تمامی سخت‌افزارهای جدید، تیک زدن تایمر mperf در هر وضعیت بی‌کاری متوقف می‌شود، برای نمایش زمان‌های C0 (پردازنده فعال است) و Cx (پردازنده در یکی از وضعیت‌های خواب است) نیز استفاده می‌شود. این شمارنده‌ها محدودیت‌های عدم دقت پایشگر "Idle_Stats" را ندارند. این ویژگی ممکن است در هسته‌های لینوکس نسخه 2.6.20 تا 2.6.29 عملکرد ضعیفی داشته باشد، زیرا درایور فرکانس هسته با نام acpi-cpufreq در آن هسته‌ها ثبات‌های aperf/mperf را به‌صورت دوره‌ای پاک می‌کرد.

شمارنده‌های وضعیت خواب هسته و بسته پردازنده اینتل. اگر رشته همتای یک رشته پردازشی (در پردازنده‌های مجهز به فناوری چندرشتگی یا هایپرتریدینگ) فعال و در حال استفاده باشد، ممکن است نتواند وارد وضعیت‌های عمیق‌تر خواب هسته شود. عمیق‌ترین وضعیت‌های خواب بسته پردازنده ممکن است در واقعیت به‌صورت وضعیت‌های خواب در سطح ماشین یا پلتفرم ظاهر شوند و تنها زمانی می‌توان به آن‌ها وارد شد که تمامی هسته‌ها بی‌کار باشند. برای جزئیات بیشتر به دفترچه‌های راهنمای اینتل (که برخی از آن‌ها در بخش مراجع ذکر شده‌اند) مراجعه کنید. نام‌گذاری پایشگرها بر اساس خانواده پردازنده‌ای است که قابلیت‌های وضعیت خواب ابتدا در آن معرفی شده‌اند و ممکن است دقیقاً با نام پردازنده سیستم شما هم‌خوانی نداشته باشد. برای نمونه، پردازنده‌های IvyBridge دارای قابلیت‌های وضعیت خوابی هستند که در خانواده پردازنده‌های Nehalem و SandyBridge معرفی شده بودند. از این رو، در یک پردازنده IvyBridge پایشگرهای وضعیت خواب Nehalem و SandyBridge نمایش داده خواهند شد. قابلیت‌های اضافی وضعیت خواب بسته در HaswellExtended تنها در پردازنده‌های مشخصی از Haswell (خانواده 0x45) و احتمالاً پردازنده‌های آینده در دسترس هستند.

شمارنده‌های وضعیت خواب پردازنده‌های لپ‌تاپ و رومیزی AMD (خانواده‌های 12h و 14h). دسترسی به ثبات‌ها از طریق PCI صورت می‌گیرد و به همین دلیل حتی در صورتی که هسته‌ها غیرفعال (offline) شده باشند، باز هم قابل خواندن هستند.

یک شمارنده ویژه به نام NBP1 (پل شمالی P1 یا North Bridge P1) وجود دارد. این شمارنده همواره مقدار ۰ یا ۱ برمی‌گرداند؛ بسته به اینکه آیا وضعیت توان پل شمالی P1 حداقل یک بار در طول زمان اندازه‌گیری فعال شده است یا خیر. امکان ورود به وضعیت NBP1 به مدیریت مصرف توان کارت گرافیک نیز وابسته است. بنابراین از این شمارنده می‌توان برای بررسی اینکه آیا مدیریت توان درایور گرافیک طبق انتظار کار می‌کند یا خیر استفاده کرد.

اجرای دستور "cpupower monitor -l" ممکن است چنین خروجی نمایش دهد:

Monitor "Mperf" (3 states) - Might overflow after 922000000 s
   ...
Monitor "Idle_Stats" (3 states) - Might overflow after 4294967295 s
   ...

cpupower monitor -m Idle_Stats,Mperf scp /tmp/test /nfs/tmp

دستور scp را پایش کرده و آمار شمارنده‌های هر دو وضعیت Mperf و Idle_Stats را نمایش می‌دهد، اما با ترتیب جابه‌جاشده.

توجه داشته باشید که دستور متداول برای استفاده کامل از یک پردازنده با دستور:

cpupower monitor cat /dev/zero >/dev/null

طبق انتظار عمل نمی‌کند، زیرا خروجی اندازه‌گیری‌شده به ‎/dev/null هدایت می‌شود. برای دور زدن این مشکل می‌توان این خط را درون یک اسکریپت شل کوچک قرار داد. با فشردن کلیدهای ترکیبی CTRL-c می‌توانید اجرای دستور را متوقف کرده و خروجی اندازه‌گیری‌شده را مشاهده نمایید.

"BIOS and Kernel Developer’s Guide (BKDG) for AMD Family 14h Processors"
https://support.amd.com/us/Processor_TechDocs/43170.pdf

"What Is Intel® Turbo Boost Technology?"
https://www.intel.com/content/www/us/en/gaming/resources/turbo-boost.html

"Power Management - Technology Overview"
https://cdrdv2.intel.com/v1/dl/getContent/637748

"Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide"
https://www.intel.com/products/processor/manuals

/dev/cpu/*/msr
/sys/devices/system/cpu/cpu*/cpuidle/state*/.

powertop(8), msr(4), vmstat(8)

نوشته‌شده توسط Thomas Renninger <trenn@suse.de>
پایشگرهای Nehalem و SandyBridge و ارسال دستور
بر پایه turbostat.8 از Len Brown <len.brown@intel.com>
22/02/2011