X86_ENERGY_PERF_POLICY(8) System Manager's Manual X86_ENERGY_PERF_POLICY(8)

x86_energy_perf_policy - مدیریت سیاست مصرف انرژی در برابر کارایی

x86_energy_perf_policy [ گزینه‌ها ] [ محدوده ] [فیلد  مقدار]
محدوده: --cpu cpu-list | --pkg pkg-list
cpu-list, pkg-list: # | #,# | #-# | all
فیلد: --all | --epb | --hwp-epp | --hwp-min | --hwp-max | --hwp-desired
سایر: (--force | --hwp-enable | --turbo-enable) مقدار)
soc-slider: --soc-slider-balance # | --soc-slider-offset # | --platform-profile <name>
مقدار: # | default | performance | balance-performance | balance-power | power

دستور x86_energy_perf_policy تنظیمات سیاست مصرف انرژی و کارایی مربوط به پردازنده‌های معماری اینتل (Intel Architecture Processors) را نمایش داده و به‌روزرسانی می‌کند. این ابزار تنظیمات موجود در رابط‌های استاندارد لینوکس (مانند cpufreq) را خلاصه کرده و ثبات‌های خاص مدل (MSRs) سخت‌افزار را رمزگشایی می‌نماید. اگرچه x86_energy_perf_policy می‌تواند این سیاست‌ها را تنها با دسترسی مستقیم به MSR مدیریت کند، اما در صورت در دسترس بودن، رابط‌های استاندارد هسته لینوکس را ترجیح می‌دهد.

سیاست موجود در ثبات MSR_IA32_ENERGY_PERF_BIAS (کوتاه‌شده EPB) ممکن است طیف وسیعی از تصمیمات سخت‌افزاری را تحت تأثیر قرار دهد؛ مانند شدت و سرعت ورود و خروج سخت‌افزار به حالت‌های بیکاری پردازنده (C-states) و وضعیت‌های کارایی پردازنده (P-states). این راهنمای سیاست‌گذاری جایگزین انتخاب صریح C-state و P-state توسط سیستم‌عامل نمی‌شود، بلکه به سخت‌افزار می‌گوید که این انتخاب‌ها را با چه میزان تهاجمی پیاده‌سازی کند. علاوه بر این، به سیستم‌عامل اجازه می‌دهد بر توازن انرژی/کارایی در بخش‌هایی که هیچ رابط نرم‌افزاری برای آن‌ها وجود ندارد (مانند محدوده فرصت‌طلبانه P-state در حالت "turbo-mode") تأثیر بگذارد. توجه داشته باشید که MSR_IA32_ENERGY_PERF_BIAS به ازای هر پردازنده (CPU) تعریف شده است، اما برخی پیاده‌سازی‌ها یک MSR واحد را میان تمام پردازنده‌های یک بسته پردازنده (package) به اشتراک می‌گذارند. در چنین سیستم‌هایی، نوشتن در EPB روی یک پردازنده، برای تمام پردازنده‌های موجود در همان بسته پردازنده قابل مشاهده بوده و روی آن‌ها تأثیر خواهد گذاشت.

وضعیت‌های کارایی سخت‌افزاری (HWP) در واقع گسترش کنترل سخت‌افزاری P-state از حالت توربو به کل محدوده وضعیت‌های P-state موجود هستند. در پردازنده‌های Broadwell Xeon که اولین پیاده‌سازی HWP در آن‌ها انجام شد، EPB روی HWP تأثیر داشت. این تأثیر در نسل‌های بعدی حذف شد و به فیلد Energy_Performance_Preference (کوتاه‌شده EPP) در دو MSR اختصاصی (MSR_IA32_HWP_REQUEST و MSR_IA32_HWP_REQUEST_PKG) منتقل گردید.

گزینه EPP رایج‌ترین دستگیره کنترلی در حالت HWP است، اما ثبات MSR_IA32_HWP_REQUEST به کاربر امکان می‌دهد حداقل فرکانس را برای کیفیت خدمات (QoS) و حداکثر فرکانس را برای محدود کردن توان مصرفی (power-capping) مشخص کند. ثبات MSR_IA32_HWP_REQUEST به ازای هر CPU تعریف شده است.

ثبات MSR_IA32_HWP_REQUEST_PKG همان قابلیت‌های MSR_IA32_HWP_REQUEST را دارد، اما می‌تواند سیاست پیش‌فرض را به‌طور هم‌زمان برای تمام پردازنده‌های درون یک بسته پردازنده تنظیم کند. یک بیت در ثبات MSR_IA32_HWP_REQUEST هر پردازنده مشخص می‌کند که آیا این تنظیم تحت حاکمیت تنظیمات بسته پردازنده قرار گیرد یا از آن مستثنی باشد.

ثبات MSR_HWP_CAPABILITIES مقادیر پیش‌فرض فیلدهای موجود در MSR_IA32_HWP_REQUEST را نشان می‌دهد. این اطلاعات زمانی نمایش داده می‌شوند که مقداری در حال نوشتن نباشد.

-c, --cpu اعمال عملیات روی MSR_IA32_HWP_REQUEST برای هر CPU در لیست مشخص‌شده. لیست پردازنده‌ها می‌تواند شامل شماره‌های پردازنده جدا شده با کاما، خط تیره برای بازه یا رشته "all" باشد؛ مانند '--cpu 1,4,6-8' یا '--cpu all'. هنگامی که --cpu استفاده می‌شود، گزینه --hwp-use-pkg نیز در دسترس خواهد بود که مشخص می‌کند آیا MSR_IA32_HWP_REQUEST اختصاصی هر CPU باید تحت حاکمیت MSR_IA32_HWP_REQUEST_PKG باشد (1) یا از آن معاف گردد (0).

-p, --pkg اعمال عملیات روی MSR_IA32_HWP_REQUEST_PKG برای هر بسته در لیست بسته‌ها. لیست شامل رشته‌ای از شماره‌های اختصاصی بسته‌ها است که با کاما یا خط تیره جدا شده‌اند، یا رشته "all"؛ برای مثال '--pkg 1,3' یا '--pkg all'.

normal | default تنظیم سیاستی با توازن عادی میان کارایی و بهینه‌سازی انرژی. پردازنده افت اندک در کارایی را برای دستیابی به صرفه‌جویی بالقوه قابل توجه در انرژی می‌پذیرد. این حالت یک پیش‌فرض منطقی برای بیشتر رایانه‌های رومیزی و سرورها است. کلمه "default" مترادف "normal" است.

performance تنظیم سیاست برای حداکثر کارایی، بدون پذیرش هیچ‌گونه فدا کردن کارایی به نفع بهینه‌سازی مصرف انرژی.

balance-performance تنظیم سیاست با اولویت بالا روی کارایی، اما با پذیرش افت اندک کارایی برای بهره‌مندی از بهینه‌سازی مصرف انرژی.

balance-power تنظیم سیاستی که در آن کارایی و توان مصرفی متوازن هستند. این حالت پیش‌فرض است.

power تنظیم سیاستی که در آن پردازنده افت کارایی ملموس را برای به حداکثر رساندن بهینه‌سازی مصرف انرژی می‌پذیرد.

جدول زیر نگاشت میان رشته‌های مقادیر بالا و مقادیر واقعی MSR را نشان می‌دهد. این نگاشت در فایل هدر هسته لینوکس (msr-index.h) تعریف شده است:

VALUE STRING      	EPB	EPP
performance       	0	0
balance-performance	4	128
normal, default		6	128
balance-power	 	8	192
power       		15	255

برای فیلدهای کارایی MSR_IA32_HWP_REQUEST (شامل --hwp-min, --hwp-max, --hwp-desired)، گزینه مقدار بر حسب مضارب ۱۰۰ مگاهرتز است؛ برای مثال مقدار ۱۲ نمایانگر ۱۲۰۰ مگاهرتز است.

-a, --all value-string تمام فیلدهای محدودیت EPB، EPP و HWP را روی مقدار مرتبط با value-string تنظیم می‌کند. علاوه بر این، در صورت غیرفعال بودن حالت‌های turbo و HWP، آن‌ها را فعال می‌نماید. بدین ترتیب دستور "--all normal"; سیستمی بدون cpufreq را در یک پیکربندی شناخته‌شده و پایدار قرار می‌دهد.

-B, --epb تنظیم EPB به ازای هر هسته یا هر بسته. مقادیر رشته‌ای را در جدول بالا ببینید.

-d, --debug حالت اشکال‌زدایی با افزایش جزئیات خروجی. به‌طور پیش‌فرض x86_energy_perf_policy برای به‌روزرسانی‌ها بی‌صدا و برای حالت فقط‌خواندنی دارای جزئیات است.

-P, --hwp-epp تنظیم HWP.EPP به ازای هر هسته یا هر بسته پردازنده. مقادیر مجاز را در جدول بالا مشاهده کنید.

-m, --hwp-min درخواست از HWP برای نرفتن به زیر ضریب نسبت هسته/گذرگاه مشخص‌شده. مقدار "default" همان مقداری است که در IA32_HWP_CAPABILITIES.min یافت می‌شود.

-M, --hwp-max درخواست از HWP برای تجاوز نکردن از ضریب نسبت هسته/گذرگاه مشخص‌شده. مقدار "default" همان مقداری است که در IA32_HWP_CAPABILITIES.max قرار دارد.

-D, --hwp-desired درخواست فرکانس دلخواه (desired) از HWP. تنظیم "normal" برابر ۰ است که متناظر با کنترل کاملاً خودکار (autonomous) HWP است. مقادیر غیرصفر کارایی، سطح کارایی مشخصی را روی این پردازنده به مضارب ۱۰۰ مگاهرتز درخواست می‌کنند.

-w, --hwp-window مشخص کردن عدد صحیح پنجره لغزان بر حسب میکروثانیه که HWP برای حفظ میانگین فرکانس استفاده می‌کند. این پارامتر تنها زمانی معنادار است که فیلد "desired" غیرصفر باشد. پیش‌فرض ۰ است که انتخاب را به سخت‌افزار واگذار می‌کند.

توجه داشته باشید که نام نمایه پلتفرم باید "SoC Slider" و وضعیت آن روی "balanced" باشد تا گزینه‌های --soc-slider-balance و --soc-slider-offset اعمال شوند.

--soc-slider-balance # نوشتن مقدار عددی در لغزنده SoC Slider. مقادیر در بازه ۰ تا ۶ قرار دارند. مقادیر پایین‌تر کارایی بالاتر و مقادیر بالاتر بهره‌وری مصرف انرژی را افزایش می‌دهند. مقادیر واقعی وابسته به مدل پردازنده هستند.

--soc-slider-offset # نوشتن مقدار عددی در افست لغزنده SoC Slider Offset. این مقدار حداکثری است که نرم‌افزار به SoC اجازه می‌دهد تا به منظور بهبود مصرف انرژی به لغزنده اضافه کند. مقدار ۰ مانع تغییر خودکار لغزنده توسط SoC می‌شود.

--platform-profile <name> تنظیم نمایه پلتفرم روی نام مشخص‌شده. گزینه‌های در دسترس در مسیر platform-profile-0/choices قرار دارند. درایور Soc Slider در حال حاضر از گزینه‌های "low-power"، "balanced" و "performance" پشتیبانی می‌کند.

-f, --force نوشتن مقادیر مشخص‌شده بدون بررسی محدوده و اعتبارسنجی مقادیر.

-U, --hwp-use-pkg مقادیر (0 | 1)؛ هنگامی که در ترکیب با --cpu استفاده شود، مشخص می‌کند که آیا تنظیمات اختصاصی CPU در MSR_IA32_HWP_REQUEST باید تحت حاکمیت تنظیمات بسته (1) باشند یا از آن معاف شوند (0). پیش‌فرض حالت معاف است.

-H, --hwp-enable فعال کردن حالت وضعیت‌های کارایی سخت‌افزاری (HWP). پس از فعال شدن، برای غیرفعال کردن آن راه‌اندازی مجدد سیستم (RESET) الزامی است.

-t, --turbo-enable فعال کردن (1) یا غیرفعال کردن (0) حالت توربو.

-v, --version چاپ نسخه برنامه و خروج.

اگر درخواستی برای تغییر سیاست داده نشود، رفتار پیش‌فرض خواندن و نمایش وضعیت فعلی سیستم به همراه قابلیت‌های پیش‌فرض خواهد بود.

این ابزار مستقیماً در ثبات‌های خاص مدل (MSR) می‌نویسد. هیچ‌گونه قفل‌گذاری یا هماهنگی در صورتی که این ابزار هم‌زمان با دسترسی ویژگی‌های sysfs مربوط به intel_pstate اقدام به تغییر فیلدهای HWP کند، وجود ندارد.

توجه داشته باشید که گزینه‌های --hwp-desired و --hwp-window آزمایشی تلقی می‌شوند. نسخه‌های آینده لینوکس حق دسترسی داخلی به این فیلدها را برای خود محفوظ می‌دارند که ممکن است با دسترسی فضای کاربر تداخل پیدا کند.

# sudo x86_energy_perf_policy
cpu0: EPB 6
cpu0: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
cpu0: HWP_CAP: low 1 eff 8 guar 27 high 35
cpu1: EPB 6
cpu1: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
cpu1: HWP_CAP: low 1 eff 8 guar 27 high 35
cpu2: EPB 6
cpu2: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
cpu2: HWP_CAP: low 1 eff 8 guar 27 high 35
cpu3: EPB 6
cpu3: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
cpu3: HWP_CAP: low 1 eff 8 guar 27 high 35

ابزار x86_energy_perf_policy تنها با دسترسی ریشه (root) اجرا می‌شود.

EPB: /sys/devices/system/cpu/cpu*/power/energy_perf_bias
EPP: /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
MSR: /dev/cpu/*/msr
Platform Profile Name: /sys/class/platform-profile/platform-profile-0/name
Platform Profile: /sys/class/platform-profile/platform-profile-0/profile
SOC Slider Balanced: /sys/module/processor_thermal_soc_slider/parameters/slider_balance
SOC Slider Balanced Offset: /sys/module/processor_thermal_soc_slider/parameters/slider_offset

msr(4)
Intel(R) 64 and IA-32 Architectures Software Developer's Manual

Len Brown