.TH TURBOSTAT 8 .SH "نام (NAME)" turbostat \- گزارش بسامد پردازنده و آمار وضعیت‌های بیکاری .SH "خلاصه دستور (SYNOPSIS)" .ft B .B turbostat .RB [ گزینه‌ها ] .RB دستور .br .B turbostat .RB [ گزینه‌ها ] .RB [ "\--interval ثانیه" ] .SH "توضیحات (DESCRIPTION)" دستور \fBturbostat\fP ساختار پردازنده (topology)، بسامد، آمار وضعیت توان در حالت بیکاری، دما و توان مصرفی را در پردازنده‌های X86 گزارش می‌دهد. دو روش برای فراخوانی turbostat وجود دارد. روش نخست، مشخص کردن یک \fBدستور\fP (command) است که منشعب شده (fork) و پس از پایان اجرای آن، آمارها به صورت یک‌باره چاپ می‌شوند. روش دوم، مشخص نکردن دستور است که در این حالت turbostat آمار را در بازه‌های زمانی ۵ ثانیه‌ای نمایش می‌دهد. این بازه ۵ ثانیه‌ای را می‌توان با استفاده از گزینه \-\-interval تغییر داد. .PP برخی اطلاعات در پردازنده‌های قدیمی‌تر در دسترس نیستند. .SS "گزینه‌ها (OPTIONS)" گزینه‌ها را می‌توان با یک یا دو خط تیره '-' مشخص کرد، و تنها درج مقداری از نام گزینه که برای تمایز آن از سایر گزینه‌ها لازم است، کافی خواهد بود. توجه داشته باشید که گزینه‌ها به بزرگ و کوچک بودن حروف حساس هستند. .PP \fB--add attributes\fP ستونی با شمارنده‌ای دارای «ویژگی‌های» (attributes) مشخص‌شده اضافه می‌کند. ویژگی 'location' الزامی است، سایر ویژگی‌ها اختیاری هستند. .nf location: {\fBmsrDDD\fP | \fBmsr0xXXX\fP | \fB/sys/path...\fP | \fBperf//\fP} msrDDD یک آفست ده‌دهی است، مانند msr16 msr0xXXX یک آفست مبنای ۱۶ (hex) است، مانند msr0x10 /sys/path... یک مسیر مطلق به یک ویژگی در sysfs است یک دستگاه perf از مسیر /sys/bus/event_source/devices/ است، مانند cstate_core در پلتفرم‌های هیبریدی اینتل، به جای یک دستگاه perf با نام "cpu"، دو دستگاه "cpu_core" و "cpu_atom" به ترتیب برای هسته‌های P و E وجود دارند. در این حالت، Turbostat به کاربر اجازه می‌دهد از دستگاه "cpu" استفاده کند و به طور خودکار نوع پردازنده را تشخیص داده و آن را به تناسب به "cpu_core" و "cpu_atom" ترجمه می‌کند. برای یک مثال کامل بخش «مثال ۲ افزودن شمارنده PERF (با استفاده از دستگاه مجازی cpu)» را ببینید. یک رویداد perf برای دستگاه مشخص‌شده از مسیر /sys/bus/event_source/devices//events/ است، مانند c1-residency سپس perf/cstate_core/c1-residency از مسیر /sys/bus/event_source/devices/cstate_core/events/c1-residency استفاده خواهد کرد scope: {\fBcpu\fP | \fBcore\fP | \fBpackage\fP} نمونه‌برداری و چاپ شمارنده برای هر پردازنده (cpu)، هسته (core) یا پکیج (package). پیش‌فرض: cpu size: {\fBu32\fP | \fBu64\fP } ثبات‌های MSR به صورت ۶۴ بیتی خوانده می‌شوند، u32 مقدار نمایش‌داده‌شده را به ۳۲ بیت کوتاه می‌کند. پیش‌فرض: u64 format: {\fBraw\fP | \fBdelta\fP | \fBpercent\fP | \fBaverage\fP} مقدار 'raw' محتویات MSR را در مبنای ۱۶ نشان می‌دهد. مقدار 'delta' تفاوت مقادیر در طول بازه اندازه‌گیری را نشان می‌دهد. مقدار 'percent' مقدار دلتا را به عنوان درصدی از چرخه‌های سپری‌شده نشان می‌دهد. مقدار 'average' شبیه به raw است، اما برای خلاصه‌های گره/پکیج (یا هنگام استفاده از -S) میانگین‌گیری نیز می‌شود. پیش‌فرض: delta name: "name_string" هر رشته‌ای که با کلمات کلیدی بالا مطابقت نداشته باشد، به عنوان سربرگ ستون استفاده می‌شود. .fi .PP \fB--add pmt,[attr_name=attr_value, ...]\fP ستونی با یک شمارنده PMT (فناوری پایش پلتفرم اینتل - Intel Platform Monitoring Technology) به روشی مشابه با گزینه \-\-add در بالا اضافه می‌کند، اما برای خواندن و نمایش صحیح شمارنده نیازمند ارائه متادیتای PMT است. این متادیتا را می‌توان در فایل‌های XML اینتل PMT یافت که در نشانی https://github.com/intel/Intel-PMT میزبانی می‌شود. برای یک مثال کامل بخش «مثال افزودن شمارنده PMT» را ببینید. .nf name="name_string" برای سربرگ ستون. type={\fBraw\fP} مقدار 'raw' محتویات شمارنده را در مبنای ۱۶ نشان می‌دهد. پیش‌فرض: raw format={\fBraw\fP | \fBdelta\fP} مقدار 'raw' محتویات شمارنده را در مبنای ۱۶ نشان می‌دهد. مقدار 'delta' تفاوت مقادیر در طول بازه اندازه‌گیری را نشان می‌دهد. پیش‌فرض: raw domain={\fBcpu%u\fP | \fBcore%u\fP | \fBpackage%u\fP} مقدار 'cpu' برای شمارنده به ازای هر پردازنده/ریسه. مقدار 'core' برای شمارنده به ازای هر هسته. مقدار 'package' برای شمارنده به ازای هر پکیج. عبارت '%u' نشان‌دهنده شناسه دامنه‌ای است که شمارنده با آن مرتبط است. برای مثال core4 یعنی شمارنده با هسته شماره ۴ مرتبط است. offset=\fB%u\fP مقدار '%u' آفست در ناحیه MMIO مربوط به PMT. lsb=\fB%u\fP مقدار '%u' کم‌ارزش‌ترین بیت در مقدار ۶۴ بیتی خوانده‌شده از 'offset'. به همراه 'msb' برای تشکیل ماسک خواندن استفاده می‌شود. msb=\fB%u\fP مقدار '%u' باارزش‌ترین بیت در مقدار ۶۴ بیتی خوانده‌شده از 'offset'. به همراه 'lsb' برای تشکیل ماسک خواندن استفاده می‌شود. guid=\fB%x\fP مقدار '%x' شناسه هگزادسیمال ناحیه MMIO مربوط به PMT. .fi .PP \fB--cpu cpu-set\fP خروجی را به خلاصه کل سیستم به همراه مجموعه پردازنده‌های مشخص‌شده (cpu-set) محدود می‌کند. اگر cpu-set رشته "core" باشد، خلاصه سیستم به همراه نخستین پردازنده در هر هسته چاپ می‌شود -- برای مثال پردازنده‌های هم‌نیای بعدی HT چاپ نمی‌شوند. یا اگر cpu-set رشته "package" باشد، خلاصه سیستم به علاوه نخستین پردازنده در هر پکیج چاپ می‌شود. در غیر این صورت، خلاصه سیستم به همراه مجموعه مشخص‌شده از پردازنده‌ها چاپ می‌شود. ترتیب cpu-set از کم به زیاد است، با کاما از هم جدا شده و استفاده از ".." و "-" برای تعیین محدوده مجاز است؛ مانند: 1,2,8,14..17,21-44 .PP \fB--hide column\fP ستون‌های توکار مشخص‌شده را نمایش نمی‌دهد. می‌تواند چندین بار یا با فهرستی از نام‌های ستون جداشده با کاما فراخوانی شود. .PP \fB--enable column\fP ستون‌های توکار مشخص‌شده را نمایش می‌دهد که در غیر این صورت به طور پیش‌فرض غیرفعال هستند. در حال حاضر تنها شمارنده‌های توکار غیرفعال به طور پیش‌فرض عبارتند از "usec"، "Time_Of_Day_Seconds"، "APIC" و "X2APIC". نام ستون "all" می‌تواند برای فعال کردن تمام شمارنده‌های توکار که به طور پیش‌فرض غیرفعال هستند به کار رود. .PP \fB--show column\fP فقط ستون‌های توکار مشخص‌شده را نمایش می‌دهد. می‌تواند چندین بار یا با فهرستی از نام‌های ستون جداشده با کاما فراخوانی شود. .PP \fB--show CATEGORY --hide CATEGORY\fP گزینه‌های show و hide همچنین فهرستی از دسته‌های (CATEGORIES) ستون‌ها را به صورت جداشده با کاما می‌پذیرند: "all"، "topology"، "idle"، "frequency"، "power"، "cpuidle"، "hwidle"، "swidle"، "cache"، "llc"، "other". دسته "idle" (به طور پیش‌فرض فعال)، شامل "hwidle" و "pct_idle" است. دسته "cpuidle" (به طور پیش‌فرض غیرفعال) شامل شمارنده‌های فراخوانی نرم‌افزاری cpuidle است. دسته "swidle" شامل "cpuidle" به همراه "pct_idle" است. دسته "hwidle" فقط شامل شمارنده‌های ماندگاری در حالت بیکاری مبتنی بر سخت‌افزار است. نسخه‌های قدیمی‌تر turbostat از اصطلاح "sysfs" برای آنچه اکنون "swidle" نامیده می‌شود استفاده می‌کردند. .PP \fB--Dump\fP مقادیر خام شمارنده‌ها را نمایش می‌دهد. .PP \fB--quiet\fP اطلاعات سربرگ پیکربندی سیستم را رمزگشایی و چاپ نمی‌کند. .PP \fB--no-msr\fP تمام استفاده‌ها از درایور MSR را غیرفعال می‌کند. .PP \fB--no-perf\fP تمام استفاده‌ها از رابط برنامه‌نویسی کاربردی (API) مربوط به perf را غیرفعال می‌کند. .PP \fB--force\fP اجرای turbostat را روی یک پلتفرم پشتیبانی‌نشده اجبار می‌کند (با حداقل مقادیر پیش‌فرض). .PP \fB--interval seconds\fP بازه زمانی اندازه‌گیری پیش‌فرض ۵٫۰ ثانیه‌ای را بازنویسی می‌کند. .PP \fB--num_iterations num\fP تعداد تکرارهای اندازه‌گیری. .PP \fB--header_iterations num\fP چاپ سربرگ در هر num تکرار. .PP \fB--out output_file\fP خروجی turbostat در output_file مشخص‌شده نوشته می‌شود. اگر فایل از قبل وجود داشته باشد بریده (truncate) می‌شود و اگر وجود نداشته باشد ایجاد می‌گردد. .PP \fB--help\fP نحوه استفاده برای رایج‌ترین پارامترها را نمایش می‌دهد. .PP \fB--Joules\fP انرژی را به ژول نمایش می‌دهد، به جای تقسیم ژول بر زمان برای چاپ توان بر حسب وات. .PP \fB--list\fP نام‌های سربرگ ستون‌های موجود برای استفاده توسط \-\-show و \-\-hide را نمایش می‌دهد و سپس خارج می‌شود. .PP \fB--Summary\fP خروجی را به یک خط خلاصه سیستم برای هر بازه محدود می‌کند. .PP \fB--TCC temperature\fP دمای مدار کنترل حرارتی (Thermal Control Circuit) را برای سیستم‌هایی که این مقدار را صادر نمی‌کنند تنظیم می‌کند. این گزینه برای معنادار کردن خروجی‌های حسگر حرارتی دیجیتال (Digital Thermal Sensor) استفاده می‌شود، زیرا آنها درجه سلسیوس پایین‌تر از دمای فعال‌سازی TCC را برمی‌گردانند. .PP \fB--version\fP نسخه برنامه را نمایش می‌دهد. .PP پارامتر \fBدستور\fP (command)، \fBدستور\fP داده‌شده را منشعب کرده (fork) و پس از خروج آن، آمارهای گردآوری‌شده از زمان انشعاب آن را نمایش می‌دهد. .PP .SH "توضیحات سطرها (ROW DESCRIPTIONS)" پس از خروجی پیکربندی سیستم (در صورتی که از \-\-quiet استفاده نشده باشد)، آمارها قرار می‌گیرند. اولین سطر از آمارها، محتوای هر ستون را برچسب‌گذاری می‌کند (در زیر). سطر دوم آمارها، خط خلاصه سیستم است. خط خلاصه سیستم در ستون‌های Package، Core و CPU یک علامت '-' دارد. محتوای خط خلاصه سیستم به نوع ستون بستگی دارد. ستون‌هایی که موارد را می‌شمارند (مانند IRQ) مجموع تمام پردازنده‌های سیستم را نشان می‌دهند. ستون‌هایی که درصد را نشان می‌دهند، میانگین تمام پردازنده‌های سیستم را نشان می‌دهند. ستون‌هایی که مقادیر خام MSR را تخلیه می‌کنند، در خلاصه به سادگی 0 را نشان می‌دهند. پس از سطر خلاصه سیستم، هر سطر یک Package/Core/CPU مشخص را توصیف می‌کند. توجه داشته باشید که اگر از پارامتر \-\-cpu برای محدود کردن پردازنده‌های نمایش‌داده‌شده استفاده شود، turbostat همچنان آمار تمام پردازنده‌های سیستم را جمع‌آوری خواهد کرد و همچنان خلاصه سیستم را برای تمام پردازنده‌های سیستم نشان می‌دهد. .SH "توضیحات ستون‌ها (COLUMN DESCRIPTIONS)" .PP \fBusec\fP برای هر پردازنده، تعداد میکروثانیه‌های سپری‌شده در طول جمع‌آوری شمارنده‌ها، از جمله مهاجرت ریسه (thread migration) -- در صورت وجود. این شمارنده به طور پیش‌فرض غیرفعال است و با "\-\-enable usec" یا \-\-debug فعال می‌شود. در سطر خلاصه، usec به کل زمان سپری‌شده برای ثبت تصویر لحظه‌ای (snapshot) از procfs/sysfs و جمع‌آوری شمارنده‌ها در تمام پردازنده‌ها اشاره دارد. .PP \fBTime_Of_Day_Seconds\fP برای هر پردازنده، مقدار gettimeofday(2) (ثانیه.کسر‌ثانیه از مبدأ زمان Epoch) در هنگام جمع‌آوری شمارنده‌های پایان‌بخش بازه اندازه‌گیری. این ستون به طور پیش‌فرض غیرفعال است و می‌تواند با "\-\-enable Time_Of_Day_Seconds" یا "\-\-debug" فعال شود. در سطر خلاصه، Time_Of_Day_Seconds به برچسب زمانی پس از جمع‌آوری شمارنده‌ها در آخرین پردازنده اشاره دارد. .PP \fBCore\fP شماره هسته پردازنده. توجه داشته باشید که وجود چندین پردازنده در هر هسته نشان‌دهنده پشتیبانی از فناوری چندریسمانی همزمان اینتل (Intel Hyper-Threading Technology یا HT) است. .PP \fBCPU\fP شماره پردازنده لینوکس (پردازنده منطقی). بله، این طبیعی است که در بسیاری از سیستم‌ها پردازنده‌ها به ترتیب عددی فهرست نمی‌شوند -- به دلایل کارایی، turbostat به ترتیب ساختار (topology) اجرا می‌شود، بنابراین هم‌نیای‌های HT در کنار یکدیگر ظاهر می‌شوند. .PP \fBPackage\fP شماره پکیج پردازنده -- در سیستم‌هایی با یک پکیج پردازنده منفرد وجود ندارد. .PP \fBAvg_MHz\fP تعداد چرخه‌های اجرا شده تقسیم بر زمان سپری‌شده. توجه داشته باشید که این مقدار شامل زمان بیکاری (زمانی که ۰ دستورالعمل اجرا می‌شود) نیز هست. .PP \fBBusy%\fP درصد زمانی از بازه اندازه‌گیری که پردازنده در حال اجرای دستورالعمل‌ها است، یا به عبارت دیگر درصد زمان حضور در وضعیت "C0". .PP \fBBzy_MHz\fP میانگین آهنگ کلاک زمانی که پردازنده بیکار نبوده است (یعنی در وضعیت "c0"). .PP \fBTSC_MHz\fP میانگین مگاهرتزی که شمارنده مهر زمانی (TSC) در کل بازه کار کرده است. .PP \fBIRQ\fP تعداد وقفه‌های پاسخ‌داده‌شده توسط آن پردازنده در طول بازه اندازه‌گیری. سطر مجموع سیستم، جمع وقفه‌های ارائه‌شده در تمام پردازنده‌ها است. turbostat برای تولید این خلاصه، فایل /proc/interrupts را تجزیه می‌کند. .PP \fBSMI\fP تعداد وقفه‌های مدیریت سیستم (System Management Interrupts) پاسخ‌داده‌شده توسط پردازنده در طول بازه اندازه‌گیری. در حالی که این شمارنده در عمل به ازای هر پردازنده است، وقفه‌های SMI روی تمام پردازنده‌ها برانگیخته می‌شوند، بنابراین این عدد باید برای تمام پردازنده‌ها یکسان باشد. .PP \fBLLCMRPS\fP میلیون‌ها مراجعه در ثانیه به حافظه نهان سطح آخر (Last Level Cache Millions of References Per Second). برای پردازنده‌هایی با LLC سطح ۳ (L3)، این مقدار تعداد مراجعات آن پردازنده به L3 (و تعداد عدم‌اصابت‌های آن پردازنده به L2 خود) است. برای پردازنده‌هایی با LLC سطح ۲ (L2)، این مقدار تعداد مراجعات به L2 (و تعداد عدم‌اصابت‌ها به L1 پردازنده) است. سطر خلاصه سیستم مجموع را برای تمام پردازنده‌ها نشان می‌دهد. در هر دو حالت، مقدار نمایش‌داده‌شده برابر با مقدار واقعی تقسیم بر ۱٬۰۰۰٬۰۰۰ است. اگر این مقدار بزرگ باشد، ستون LLC%hit بااهمیت است. اگر این مقدار کوچک باشد، ستون LLC%hit اهمیت چندانی ندارد. .PP \fBLLC%hit\fP درصد نرخ اصابت به حافظه نهان سطح آخر. درصد نرخ اصابت = 100.0 * Hits/References. سطر خلاصه سیستم میانگین وزنی را برای تمام پردازنده‌ها نشان می‌دهد (100.0 * Sum_Hits/Sum_References). .PP \fBL2MRPS\fP میلیون‌ها مراجعه در ثانیه به حافظه نهان سطح ۲ (Level-2 Cache Millions of References Per Second). برای پردازنده‌هایی با LLC سطح ۲، این مقدار همان مراجعات LLC است. سطر خلاصه سیستم مجموع را برای تمام پردازنده‌ها نشان می‌دهد. در هر دو حالت، مقدار نمایش‌داده‌شده برابر با مقدار واقعی تقسیم بر ۱٬۰۰۰٬۰۰۰ است. اگر این مقدار بزرگ باشد، ستون L2%hit بااهمیت است. اگر این مقدار کوچک باشد، ستون L2%hit اهمیت چندانی ندارد. .PP \fBL2%hit\fP درصد نرخ اصابت به حافظه نهان سطح ۲. درصد نرخ اصابت = 100.0 * Hits/References. سطر خلاصه سیستم میانگین وزنی را برای تمام پردازنده‌ها نشان می‌دهد (100.0 * (Sum_Hits)/Sum_References). .PP \fBC1, C2, C3...\fP تعداد دفعاتی که لینوکس وضعیت‌های بیکاری C1، C2، C3 را در طول بازه اندازه‌گیری درخواست کرده است. سطر خلاصه سیستم، مجموع را برای تمام پردازنده‌ها نشان می‌دهد. این‌ها نام‌های C-state هستند که در مسیر /sys/devices/system/cpu/cpu*/cpuidle/state*/name صادر شده‌اند. با اینکه نام‌های آن‌ها عمومی است، ویژگی‌هایشان وابسته به پردازنده است. بخش توضیحات سیستم در خروجی نشان می‌دهد که آنها در هر سیستم به چه زیروضعیت‌های MWAIT نگاشت شده‌اند. این شمارنده‌ها در گروه "cpuidle" قرار دارند که به طور پیش‌فرض غیرفعال است. .PP \fBC1+, C2+, C3+...\fP آمار پیش‌بینی نادرست وضعیت بیکاری توسط تنظیم‌کننده بیکاری (idle governor). نشان‌دهنده تعداد دفعاتی است که لینوکس وضعیت بیکاری C1، C2، C3 را در طول بازه اندازه‌گیری درخواست کرده است، اما باید وضعیت بیکاری عمیق‌تری را درخواست می‌کرد (در صورتی که وجود داشته و فعال بوده باشد). این آمارها از فایل /sys/devices/system/cpu/cpu*/cpuidle/state*/below می‌آیند. این شمارنده‌ها در گروه "cpuidle" قرار دارند که به طور پیش‌فرض غیرفعال است. .PP \fBC1-, C2-, C3-...\fP آمار پیش‌بینی نادرست وضعیت بیکاری توسط تنظیم‌کننده بیکاری (idle governor). نشان‌دهنده تعداد دفعاتی است که لینوکس وضعیت بیکاری C1، C2، C3 را در طول بازه اندازه‌گیری درخواست کرده است، اما باید وضعیت بیکاری سطحی‌تری را درخواست می‌کرد (در صورتی که وجود داشته و فعال بوده باشد). این آمارها از فایل /sys/devices/system/cpu/cpu*/cpuidle/state*/above می‌آیند. این شمارنده‌ها در گروه "cpuidle" قرار دارند که به طور پیش‌فرض غیرفعال است. .PP \fBC1%, C2%, C3%\fP درصد ماندگاری که لینوکس برای C1، C2، C3... درخواست کرده است. خلاصه سیستم میانگین تمام پردازنده‌ها در سیستم است. توجه داشته باشید که این‌ها مقادیر نرم‌افزاری هستند و نشان‌دهنده آنچه درخواست شده است می‌باشند. شمارنده‌های سخت‌افزاری نشان‌دهنده آنچه در عمل حاصل شده است هستند. این شمارنده‌ها در گروه "pct_idle" قرار دارند که به طور پیش‌فرض فعال است. .PP \fBCPU%c1, CPU%c3, CPU%c6, CPU%c7\fP درصد ماندگاری در وضعیت‌های بیکاری سخت‌افزاری هسته را نشان می‌دهند. این اعداد از شمارنده‌های ماندگاری سخت‌افزاری به دست می‌آیند و در گروه "hwidle" قرار دارند که به طور پیش‌فرض فعال است. .PP \fBCoreTmp\fP درجه سلسیوس گزارش‌شده توسط حسگر حرارتی دیجیتال (DTS) به ازای هر هسته. .PP \fBPkgTmp\fP درجه سلسیوس گزارش‌شده توسط پایشگر حرارتی پکیج (Package Thermal Monitor) به ازای هر پکیج. .PP \fBCoreThr\fP رویدادهای گلوگاه حرارتی هسته (Core Thermal Throttling) در طول بازه اندازه‌گیری. توجه داشته باشید که رویدادها از زمان بوت در مسیر /sys/devices/system/cpu/cpu*/thermal_throttle/* قابل مشاهده هستند. .PP \fBGFX%rc6\fP درصد زمانی که پردازنده گرافیکی (GPU) در طول بازه اندازه‌گیری در وضعیت "render C6" (یا rc6) قرار دارد. بسته به درایور گرافیک مورد استفاده، از مسیرهای /sys/class/drm/card0/power/rc6_residency_ms یا /sys/class/drm/card0/gt/gt0/rc6_residency_ms یا /sys/class/drm/card0/device/tile0/gtN/gtidle/idle_residency_ms خوانده می‌شود. .PP \fBGFXMHz\fP تصویر لحظه‌ای از آنچه sysfs در پایان بازه اندازه‌گیری ارائه می‌دهد. بسته به درایور گرافیک مورد استفاده، از مسیرهای /sys/class/graphics/fb0/device/drm/card0/gt_cur_freq_mhz یا /sys/class/drm/card0/gt_cur_freq_mhz یا /sys/class/drm/card0/gt/gt0/rps_cur_freq_mhz یا /sys/class/drm/card0/device/tile0/gtN/freq0/cur_freq خوانده می‌شود. .PP \fBGFXAMHz\fP تصویر لحظه‌ای از آنچه sysfs در پایان بازه اندازه‌گیری ارائه می‌دهد. بسته به درایور گرافیک مورد استفاده، از مسیرهای /sys/class/graphics/fb0/device/drm/card0/gt_act_freq_mhz یا /sys/class/drm/card0/gt_act_freq_mhz یا /sys/class/drm/card0/gt/gt0/rps_act_freq_mhz یا /sys/class/drm/card0/device/tile0/gtN/freq0/act_freq خوانده می‌شود. .PP \fBSAM%mc6\fP درصد زمانی که بخش SA Media در طول بازه اندازه‌گیری در وضعیت "module C6" (یا mc6) قرار دارد. بسته به درایور گرافیک مورد استفاده، از مسیرهای /sys/class/drm/card0/gt/gt1/rc6_residency_ms یا /sys/class/drm/card0/device/tile0/gtN/gtidle/idle_residency_ms خوانده می‌شود. .PP \fBSAMMHz\fP تصویر لحظه‌ای از آنچه sysfs در پایان بازه اندازه‌گیری ارائه می‌دهد. بسته به درایور گرافیک مورد استفاده، از مسیرهای /sys/class/drm/card0/gt/gt1/rps_cur_freq_mhz یا /sys/class/drm/card0/device/tile0/gtN/freq0/cur_freq خوانده می‌شود. .PP \fBSAMAMHz\fP تصویر لحظه‌ای از آنچه sysfs در پایان بازه اندازه‌گیری ارائه می‌دهد. بسته به درایور گرافیک مورد استفاده، از مسیرهای /sys/class/drm/card0/gt/gt1/rps_act_freq_mhz یا /sys/class/drm/card0/device/tile0/gtN/freq0/act_freq خوانده می‌شود. .PP \fBTotl%C0\fP درصد وزنی زمانی که پردازنده‌ها مشغول هستند. اگر N پردازنده در طول یک بازه مشغول باشند، این درصد برابر با N * 100% خواهد بود. .PP \fBAny%C0\fP درصد زمانی که دست‌کم یک پردازنده مشغول است. .PP \fBGFX%C0\fP درصد زمانی که دست‌کم یک موتور محاسباتی گرافیکی (GFX compute engine) مشغول است. .PP \fBCPUGFX%\fP درصد زمانی که دست‌کم یک پردازنده به طور همزمان با دست‌کم یک موتور محاسباتی گرافیکی مشغول است. .PP \fBPkg%pc2, Pkg%pc3, Pkg%pc6, Pkg%pc7\fP درصد ماندگاری در وضعیت‌های بیکاری سخت‌افزاری پکیج. این اعداد از شمارنده‌های ماندگاری سخت‌افزاری به دست می‌آیند. .PP \fBPkgWatt\fP توان مصرفی کل پکیج بر حسب وات. .PP \fBCorWatt\fP توان مصرفی بخش هسته‌های پکیج بر حسب وات. .PP \fBGFXWatt\fP توان مصرفی بخش گرافیک پکیج بر حسب وات -- فقط روی پردازنده‌های کلاینت در دسترس است. .PP \fBRAMWatt\fP توان مصرفی ماژول‌های DRAM DIMM بر حسب وات -- فقط روی پردازنده‌های سرور در دسترس است. .PP \fBSysWatt\fP توان مصرفی کل پلتفرم بر حسب وات (RAPL PSYS). .PP \fBPKG_%\fP درصد زمانی از بازه که گلوگاه‌سازی (throttling) فناوری RAPL روی پکیج فعال بوده است. توجه داشته باشید که خلاصه سیستم مجموع زمان‌های گلوگاه پکیج‌ها است، بنابراین در یک سیستم چندپکیجی ممکن است بالاتر از 100% باشد. همچنین توجه داشته باشید که مفهوم این فیلد وابسته به مدل سخت‌افزار است. برای مثال، برخی سخت‌افزارها هنگام پاسخگویی RAPL به محدودیت‌های حرارتی این شمارنده را افزایش می‌دهند، اما هنگام پاسخگویی به محدودیت‌های توان آن را افزایش نمی‌دهند. مقایسه PkgWatt و PkgTmp با محدودیت‌های سیستم ضروری است. .PP \fBRAM_%\fP درصد زمانی از بازه که گلوگاه‌سازی RAPL روی DRAM فعال بوده است. .PP \fBUncMHz\fP مگاهرتز بخش uncore به ازای هر پکیج، نمونه‌برداری لحظه‌ای. .PP \fBUMHz1.0\fP مگاهرتز بخش uncore به ازای هر پکیج برای pm_domain=1 و fabric_cluster=0، نمونه‌برداری لحظه‌ای. خلاصه سیستم میانگین تمام پکیج‌ها است. سیستم‌های Intel Granite Rapids از دامنه‌های pm_domain شماره ۰ تا ۲ برای پردازنده‌ها و ۳ تا ۴ برای IO استفاده می‌کنند که cluster همیشه ۰ است. برای گزینه‌های "\-\-show" و "\-\-hide"، از "UncMHz" برای اعمال روی تمام UMHz*.* به صورت یک گروه استفاده کنید. .SH "مثال اطلاعات بسیار زیاد (TOO MUCH INFORMATION EXAMPLE)" به طور پیش‌فرض، turbostat تمام اطلاعات ممکن را نمایش می‌دهد -- یک سربرگ پیکربندی سیستم که به دنبال آن ستون‌های تمام شمارنده‌ها می‌آیند. این حالت برای اشکال‌زدایی از راه دور ایده‌آل است؛ از گزینه "\-\-out" برای ذخیره همه چیز در یک فایل متنی استفاده کنید و آن فایل را در اختیار کارشناسی که به شما در اشکال‌زدایی کمک می‌کند قرار دهید. .PP هنگامی که به تمام این اطلاعات علاقه‌مند نیستید، روش‌های متعددی برای مشاهده تنها موارد مورد نظرتان وجود دارد. نخست، گزینه "\-\-quiet" از اطلاعات پیکربندی صرف‌نظر می‌کند و turbostat تنها ستون‌های شمارنده را نشان می‌دهد. دوم، می‌توانید ستون‌ها را با گزینه‌های "\-\-hide" و "\-\-show" کاهش دهید. اگر از گزینه "\-\-show" استفاده کنید، turbostat تنها ستون‌هایی را که فهرست کرده‌اید نشان می‌دهد. اگر از گزینه "\-\-hide" استفاده کنید، turbostat تمام ستون‌ها را به جز مواردی که فهرست کرده‌اید نشان خواهد داد. .PP برای آگاهی از اینکه چه ستون‌هایی برای \-\-show و \-\-hide در دسترس هستند، گزینه "\-\-list" در دسترس است. معمولاً از نام‌های دسته‌بندی (CATEGORY) ذکرشده در بالا برای ارجاع به گروه‌هایی از شمارنده‌ها استفاده می‌شود. همچنین برای راحتی کار، می‌توان از رشته ویژه "sysfs" برای ارجاع یک‌باره به تمام شمارنده‌های C-state در sysfs استفاده کرد: .PP .nf sudo ./turbostat --show sysfs --quiet sleep 10 10.003837 sec C1 C1E C3 C6 C7s C1% C1E% C3% C6% C7s% 4 21 2 2 459 0.14 0.82 0.00 0.00 98.93 1 17 2 2 130 0.00 0.02 0.00 0.00 99.80 0 0 0 0 31 0.00 0.00 0.00 0.00 99.95 2 1 0 0 52 1.14 6.49 0.00 0.00 92.21 1 2 0 0 52 0.00 0.08 0.00 0.00 99.86 0 0 0 0 71 0.00 0.00 0.00 0.00 99.89 0 0 0 0 25 0.00 0.00 0.00 0.00 99.96 0 0 0 0 74 0.00 0.00 0.00 0.00 99.94 0 1 0 0 24 0.00 0.00 0.00 0.00 99.84 .fi .PP .SH "مثال اجرای یک‌باره دستور (ONE SHOT COMMAND EXAMPLE)" اگر turbostat همراه با یک دستور فراخوانی شود، آن دستور را منشعب (fork) کرده و آمارهای گردآوری‌شده را پس از خروج دستور نمایش می‌دهد. در این حالت، خروجی turbostat به طور پیش‌فرض به خروجی خطای استاندارد (stderr) ارسال می‌شود. در عوض می‌توان خروجی را با استفاده از گزینه \-\-out در یک فایل ذخیره کرد. در این مثال، دستور "sleep 10" منشعب شده و turbostat پیش از ذخیره تمام آمارها در "ts.out"، منتظر اتمام آن می‌ماند. توجه داشته باشید که "sleep 10" بخشی از turbostat نیست، بلکه صرفاً نمونه‌ای از دستوری است که turbostat می‌تواند منشعب کند. فایل "ts.out" همان فایلی است که می‌توانید آن را در یک پنجره بسیار عریض ویرایش کنید، در یک صفحه گسترده قرار دهید یا به یک گزارش در bugzilla ضمیمه نمایید. .nf [root@hsw]# ./turbostat -o ts.out sleep 10 [root@hsw]# .fi .SH "مثال بازه‌های دوره‌ای (PERIODIC INTERVAL EXAMPLE)" بدون وجود دستوری برای انشعاب، turbostat آمارها را هر ۵ ثانیه یک‌بار نمایش می‌دهد. خروجی دوره‌ای به طور پیش‌فرض به خروجی استاندارد (stdout) ارسال می‌شود، مگر اینکه از \-\-out برای تعیین فایل خروجی استفاده شود. بازه ۵ ثانیه‌ای را می‌توان با گزینه "\-i sec" تغییر داد. .nf sudo turbostat --quiet --show CPU,frequency Core CPU Avg_MHz Busy% Bzy_MHz TSC_MHz CPU%c7 UncMhz - - 524 12.48 4198 3096 74.53 3800 0 0 4 0.09 4081 3096 98.88 3800 0 4 1 0.02 4063 3096 1 1 2 0.06 4063 3096 99.60 1 5 2 0.05 4070 3096 2 2 4178 99.52 4199 3096 0.00 2 6 3 0.08 4159 3096 3 3 1 0.04 4046 3096 99.66 3 7 0 0.01 3989 3096 Core CPU Avg_MHz Busy% Bzy_MHz TSC_MHz CPU%c7 UncMhz - - 525 12.52 4198 3096 74.54 3800 0 0 4 0.10 4051 3096 99.49 3800 0 4 2 0.04 3993 3096 1 1 3 0.07 4054 3096 99.56 1 5 4 0.10 4018 3096 2 2 4178 99.51 4199 3096 0.00 2 6 4 0.09 4143 3096 3 3 2 0.06 4026 3096 99.10 3 7 7 0.17 4074 3096 .fi این مثال همچنین استفاده از گزینه \-\-show را برای نمایش تنها ستون‌های مورد نظر نشان می‌دهد. .SH "مثال اطلاعات پیکربندی سیستم (SYSTEM CONFIGURATION INFORMATION EXAMPLE)" به طور پیش‌فرض، turbostat همواره پیش از شروع اندازه‌گیری‌ها، اطلاعات پیکربندی سیستم را تخلیه (dump) می‌کند. در مثال بالا، از "\-\-quiet" برای جلوگیری از نمایش این خروجی استفاده شده است. در اینجا نمونه‌ای از اطلاعات پیکربندی آورده شده است: .nf turbostat version 2022.04.16 - Len Brown Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.18.0-rc6-00001-ge6891250e3b5 ... CPUID(0): GenuineIntel 0x16 CPUID levels CPUID(1): family:model:stepping 0x6:9e:9 (6:158:9) microcode 0xea CPUID(0x80000000): max_extended_levels: 0x80000008 CPUID(1): SSE3 MONITOR - EIST TM2 TSC MSR ACPI-TM HT TM CPUID(6): APERF, TURBO, DTS, PTM, HWP, HWPnotify, HWPwindow, HWPepp, No-HWPpkg, EPB cpu7: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO) CPUID(7): SGX cpu7: MSR_IA32_FEATURE_CONTROL: 0x00000005 (Locked ) CPUID(0x15): eax_crystal: 2 ebx_tsc: 258 ecx_crystal_hz: 0 TSC: 3096 MHz (24000000 Hz * 258 / 2 / 1000000) CPUID(0x16): base_mhz: 3100 max_mhz: 4200 bus_mhz: 100 cpu7: MSR_MISC_PWR_MGMT: 0x00401cc0 (ENable-EIST_Coordination DISable-EPB DISable-OOB) RAPL: 5825 sec. Joule Counter Range, at 45 Watts cpu7: MSR_PLATFORM_INFO: 0x80839f1011f00 8 * 100.0 = 800.0 MHz max efficiency frequency 31 * 100.0 = 3100.0 MHz base frequency cpu7: MSR_IA32_POWER_CTL: 0x002c005d (C1E auto-promotion: DISabled) cpu7: MSR_TURBO_RATIO_LIMIT: 0x2728292a 39 * 100.0 = 3900.0 MHz max turbo 4 active cores 40 * 100.0 = 4000.0 MHz max turbo 3 active cores 41 * 100.0 = 4100.0 MHz max turbo 2 active cores 42 * 100.0 = 4200.0 MHz max turbo 1 active cores cpu7: MSR_CONFIG_TDP_NOMINAL: 0x0000001f (base_ratio=31) cpu7: MSR_CONFIG_TDP_LEVEL_1: 0x00000000 () cpu7: MSR_CONFIG_TDP_LEVEL_2: 0x00000000 () cpu7: MSR_CONFIG_TDP_CONTROL: 0x80000000 ( lock=1) cpu7: MSR_TURBO_ACTIVATION_RATIO: 0x00000000 (MAX_NON_TURBO_RATIO=0 lock=0) cpu7: MSR_PKG_CST_CONFIG_CONTROL: 0x1e008008 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked, pkg-cstate-limit=8 (unlimited)) Uncore Frequency pkg0 die0: 800 - 3900 MHz (800 - 3900 MHz) /dev/cpu_dma_latency: 2000000000 usec (default) current_driver: intel_idle current_governor: menu current_governor_ro: menu cpu7: POLL: CPUIDLE CORE POLL IDLE cpu7: C1: MWAIT 0x00 cpu7: C1E: MWAIT 0x01 cpu7: C3: MWAIT 0x10 cpu7: C6: MWAIT 0x20 cpu7: C7s: MWAIT 0x33 cpu7: C8: MWAIT 0x40 cpu7: C9: MWAIT 0x50 cpu7: C10: MWAIT 0x60 cpu7: cpufreq driver: intel_pstate cpu7: cpufreq governor: performance cpufreq intel_pstate no_turbo: 0 cpu7: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch) cpu0: MSR_PM_ENABLE: 0x00000001 (HWP) cpu0: MSR_HWP_CAPABILITIES: 0x01101f53 (high 83 guar 31 eff 16 low 1) cpu0: MSR_HWP_REQUEST: 0x00005353 (min 83 max 83 des 0 epp 0x0 window 0x0 pkg 0x0) cpu0: MSR_HWP_INTERRUPT: 0x00000001 (EN_Guaranteed_Perf_Change, Dis_Excursion_Min) cpu0: MSR_HWP_STATUS: 0x00000004 (No-Guaranteed_Perf_Change, No-Excursion_Min) cpu0: EPB: 6 (balanced) cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.) cpu0: MSR_PKG_POWER_INFO: 0x00000168 (45 W TDP, RAPL 0 - 0 W, 0.000000 sec.) cpu0: MSR_PKG_POWER_LIMIT: 0x42820800218208 (UNlocked) cpu0: PKG Limit #1: ENabled (65.000 Watts, 64.000000 sec, clamp ENabled) cpu0: PKG Limit #2: ENabled (65.000 Watts, 0.002441* sec, clamp DISabled) cpu0: MSR_VR_CURRENT_CONFIG: 0x00000000 cpu0: PKG Limit #4: 0.000000 Watts (UNlocked) cpu0: MSR_DRAM_POWER_LIMIT: 0x5400de00000000 (UNlocked) cpu0: DRAM Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled) cpu0: MSR_PP0_POLICY: 0 cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked) cpu0: Cores Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled) cpu0: MSR_PP1_POLICY: 0 cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked) cpu0: GFX Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled) cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x00640000 (100 C) (100 default - 0 offset) cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88200800 (68 C) cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x00000003 (100 C, 100 C) cpu7: MSR_PKGC3_IRTL: 0x0000884e (valid, 79872 ns) cpu7: MSR_PKGC6_IRTL: 0x00008876 (valid, 120832 ns) cpu7: MSR_PKGC7_IRTL: 0x00008894 (valid, 151552 ns) cpu7: MSR_PKGC8_IRTL: 0x000088fa (valid, 256000 ns) cpu7: MSR_PKGC9_IRTL: 0x0000894c (valid, 339968 ns) cpu7: MSR_PKGC10_IRTL: 0x00008bf2 (valid, 1034240 ns) .fi .PP بسامد \fBحداکثر کارایی\fP (max efficiency)، که با نام حالت بسامد پایین (Low Frequency Mode) نیز شناخته می‌شود، بسامدی است که در حداقل ولتاژ پکیج در دسترس است. \fBبسامد TSC\fP بسامد پایه پردازنده است -- این مقدار باید با رشته نام تجاری (brand string) در /proc/cpuinfo مطابقت داشته باشد. این بسامد پایه باید با داشتن توان و خنک‌سازی نامی، روی تمام پردازنده‌ها به طور نامحدود پایدار بماند. سطرهای باقیمانده نشان می‌دهند که چه حداکثر بسامد توربویی بسته به تعداد هسته‌های بیکار امکان‌پذیر است. توجه داشته باشید که تمام این اطلاعات روی تمام پردازنده‌ها در دسترس نیستند. .SH "مثال افزودن شمارنده (ADD COUNTER EXAMPLE)" در اینجا نمایش turbostat را تنها به شماره CPU برای cpu0 تا cpu3 محدود می‌کنیم. ما شمارنده‌ای اضافه می‌کنیم که مقدار خام ۳۲ بیتی ثبات MSR 0x199 (MSR_IA32_PERF_CTL) را نشان می‌دهد، آن را با سربرگ ستون "PRF_CTRL" برچسب‌گذاری می‌کنیم و آن را تنها یک بار، پس از پایان یک خواب (sleep) ۰٫۱ ثانیه‌ای نمایش می‌دهیم. .nf sudo ./turbostat --quiet --cpu 0-3 --show CPU --add msr0x199,u32,raw,PRF_CTRL sleep .1 0.101604 sec CPU PRF_CTRL - 0x00000000 0 0x00000c00 1 0x00000800 2 0x00000a00 3 0x00000800 .fi .SH "مثال افزودن شمارنده PERF (ADD PERF COUNTER EXAMPLE)" در اینجا نمایش turbostat را تنها به شماره CPU برای cpu0 تا cpu3 محدود می‌کنیم. ما شمارنده‌ای اضافه می‌کنیم که زمان سپری‌شده در وضعیت cstate هسته C1 را نشان می‌دهد، آن را با سربرگ ستون "pCPU%c1" برچسب‌گذاری می‌کنیم و تنها یک بار، پس از اتمام خواب ۰٫۱ ثانیه‌ای نمایش می‌دهیم. ما همچنین شمارنده توکار CPU%c1 را نشان می‌دهیم که باید مقادیر مشابهی را نشان دهد. .nf sudo ./turbostat --quiet --cpu 0-3 --show CPU,CPU%c1 --add perf/cstate_core/c1-residency,cpu,delta,percent,pCPU%c1 sleep .1 0.102448 sec CPU pCPU%c1 CPU%c1 - 34.89 34.89 0 45.99 45.99 1 45.94 45.94 2 23.83 23.83 3 23.84 23.84 .fi .SH "مثال ۲ افزودن شمارنده PERF (با استفاده از دستگاه مجازی cpu)" در اینجا برنامه را روی یک پلتفرم هیبریدی Meteor Lake اجرا می‌کنیم. ما turbostat را محدود می‌کنیم تا خروجی را فقط برای cpu0 (هسته کارایی - pcore) و cpu4 (هسته کم‌مصرف - ecore) نشان دهد. ما شمارنده‌ای برای نمایش تعداد عدم‌اصابت‌های حافظه نهان L3 با استفاده از دستگاه مجازی "cpu" اضافه می‌کنیم و آن را با سربرگ ستون "VCMISS" برچسب می‌زنیم. ما شمارنده‌ای برای نمایش تعداد عدم‌اصابت‌های حافظه نهان L3 با استفاده از دستگاه مجازی "cpu_core" اضافه می‌کنیم و آن را با سربرگ ستون "PCMISS" برچسب می‌زنیم. این شمارنده روی هسته کم‌مصرف cpu4 با شکست مواجه می‌شود. ما شمارنده‌ای برای نمایش تعداد عدم‌اصابت‌های حافظه نهان L3 با استفاده از دستگاه مجازی "cpu_atom" اضافه می‌کنیم و آن را با سربرگ ستون "ECMISS" برچسب می‌زنیم. این شمارنده روی هسته کارایی cpu0 با شکست مواجه می‌شود. ما آن را تنها یک بار، پس از پایان خواب ۵ ثانیه‌ای نمایش می‌دهیم. .nf sudo ./turbostat --quiet --cpu 0,4 --show CPU --add perf/cpu/cache-misses,cpu,delta,VCMISS --add perf/cpu_core/cache-misses,cpu,delta,PCMISS --add perf/cpu_atom/cache-misses,cpu,delta,ECMISS sleep 5 turbostat: added_perf_counters_init_: perf/cpu_atom/cache-misses: failed to open counter on cpu0 turbostat: added_perf_counters_init_: perf/cpu_core/cache-misses: failed to open counter on cpu4 5.001207 sec CPU ECMISS PCMISS VCMISS - 41586506 46291219 87877749 4 83173012 0 83173040 0 0 92582439 92582458 .fi .SH "مثال افزودن شمارنده PMT (ADD PMT COUNTER EXAMPLE)" در اینجا ما turbostat را تنها به نمایش پردازنده شماره ۰ محدود می‌کنیم. ما دو شمارنده اضافه می‌کنیم که تعداد کلاک کریستال و میزان ماندگاری DC6 را نشان می‌دهند. تمام پارامترهای ارسال‌شده بر اساس متادیتای موجود در فایل‌های XML فناوری PMT هستند. برای شمارش کلاک کریستال، ما آن را با سربرگ ستون "XTAL" برچسب‌گذاری می‌کنیم، نوع (type) آن را روی 'raw' تنظیم می‌کنیم تا تعداد تیک‌های کلاک را در مبنای ۱۶ بخواند، قالب (format) آن را روی 'delta' تنظیم می‌کنیم تا اختلاف تیک‌ها در طول بازه اندازه‌گیری نمایش داده شود، دامنه (domain) آن را روی 'package0' تنظیم می‌کنیم تا جمع‌آوری شده و به کل پکیج شماره ۰ نسبت داده شود، آفست (offset) را روی '0' تنظیم می‌کنیم که آفست شمارنده در ناحیه MMIO مربوط به PMT است، مقادیر lsb و msb را طوری تنظیم می‌کنیم که تمام ۶۴ بیت از مقدار ۶۴ بیتی خوانده‌شده را پوشش دهند، و در نهایت guid را روی '0x1a067102' قرار می‌دهیم که ناحیه MMIO مربوط به PMT را که 'offset' روی آن برای خواندن مقدار شمارنده اعمال می‌شود، مشخص می‌کند. برای شمارنده ماندگاری DC6، ما آن را با سربرگ ستون "Die%c6" برچسب‌گذاری می‌کنیم، نوع آن را روی 'txtal_time' تنظیم می‌کنیم تا مقدار درصد ماندگاری به دست آید، قالب آن را روی 'delta' قرار می‌دهیم تا اختلاف تیک‌ها در طول بازه اندازه‌گیری نمایش داده شود، دامنه آن را روی 'package0' تنظیم می‌کنیم تا جمع‌آوری شده و به کل پکیج شماره ۰ نسبت داده شود، آفست را روی '0' تنظیم می‌کنیم که آفست شمارنده در ناحیه MMIO مربوط به PMT است، مقادیر lsb و msb را طوری تنظیم می‌کنیم که تمام ۶۴ بیت از مقدار ۶۴ بیتی خوانده‌شده را پوشش دهند، و در نهایت guid را روی '0x1a067102' قرار می‌دهیم که ناحیه MMIO مربوط به PMT را که 'offset' روی آن برای خواندن مقدار شمارنده اعمال می‌شود، مشخص می‌کند. .nf sudo ./turbostat --quiet --cpu 0 --show CPU --add pmt,name=XTAL,type=raw,format=delta,domain=package0,offset=0,lsb=0,msb=63,guid=0x1a067102 --add pmt,name=Die%c6,type=txtal_time,format=delta,domain=package0,offset=120,lsb=0,msb=63,guid=0x1a067102 0.104352 sec CPU XTAL Die%c6 - 0x0000006d4d957ca7 0.00 0 0x0000006d4d957ca7 0.00 0.102448 sec .fi .SH "ورودی (INPUT)" در حالت بازه‌ای (interval-mode)، به محض دریافت یک کاراکتر خط جدید در ورودی استاندارد، turbostat بلافاصله به بازه جاری پایان می‌دهد. سپس turbostat بازه بعدی را آغاز خواهد کرد. فشردن Control-C یک سیگنال SIGINT به turbostat ارسال می‌کند که بلافاصله بدون هیچ‌گونه پردازش دیگری برنامه را لغو می‌کند. .SH "سیگنال‌ها (SIGNALS)" سیگنال SIGINT حالت بازه‌ای را قطع خواهد کرد. داده‌های پایان بازه پیش از خروج turbostat جمع‌آوری و نمایش داده می‌شوند. سیگنال SIGUSR1 به بازه جاری پایان می‌دهد، و داده‌های پایان بازه پیش از اینکه turbostat بازه جدیدی را آغاز کند، جمع‌آوری و نمایش داده می‌شوند. .SH "نکات (NOTES)" دستور .B "turbostat " باید به عنوان کاربر ریشه (root) اجرا شود. همچنین، می‌توان به کاربران غیرریشه امکان داد تا turbostat را به این روش اجرا کنند: # setcap cap_sys_admin,cap_sys_rawio,cap_sys_nice=+ep path/to/turbostat # chmod +r /dev/cpu/*/msr # chmod +r /dev/cpu_dma_latency دستور .B "turbostat " شمارنده‌های سخت‌افزاری را می‌خواند، اما مقداری در آن‌ها نمی‌نویسد. بنابراین با سیستم‌عامل یا برنامه‌های دیگر، از جمله فراخوانی‌های چندگانه از خودش، تداخلی ایجاد نخواهد کرد. دستور \fBturbostat\fP ممکن است روی لینوکس نسخه‌های 2.6.20 تا 2.6.29 عملکرد ضعیفی داشته باشد، زیرا درایور \fBacpi-cpufreq\fP در آن کرنل‌ها ثبات‌های MSR مربوط به APERF و MPERF را به صورت دوره‌ای پاک می‌کرد. AVG_MHz = APERF_delta/measurement_interval. این مقدار تعداد واقعی چرخه‌های سپری‌شده تقسیم بر کل بازه نمونه‌برداری است -- شامل زمان بیکاری. توجه داشته باشید که این محاسبه در برابر سیستم‌هایی که فاقد TSC بی‌وقفه (non-stop TSC) هستند انعطاف‌پذیر است. TSC_MHz = TSC_delta/measurement_interval. در سیستمی با TSC تغییرناپذیر (invariant TSC)، این مقدار ثابت خواهد بود و با مقدار بسامد پایه نشان‌داده‌شده در رشته نام تجاری در /proc/cpuinfo تطابق نزدیکی خواهد داشت. در سیستمی که TSC در حالت بیکاری متوقف می‌شود، مقدار TSC_MHz به پایین‌تر از بسامد پایه پردازنده کاهش می‌یابد. Busy% = MPERF_delta/TSC_delta Bzy_MHz = TSC_delta*APERF_delta/MPERF_delta/measurement_interval توجه داشته باشید که این محاسبات به TSC_delta وابسته هستند، بنابراین در طول بازه‌هایی که TSC_MHz با بسامد پایه کار نمی‌کند، قابل اعتماد نیستند. گردآوری داده‌های Turbostat اتمیک (atomic) نیست. بازه‌های اندازه‌گیری بسیار کوتاه (خیلی کمتر از ۱ ثانیه)، یا فعالیت‌های سیستمی که مانع اجرای سریع turbostat روی تمام پردازنده‌ها برای جمع‌آوری داده‌ها می‌شوند، منجر به نتایج متناقض خواهند شد. ثبات‌های MSR مربوط به APERF و MPERF طوری تعریف شده‌اند که چرخه‌های متوقف‌نشده (non-halted) را بشمارند. اگرچه این موضوع توسط معماری تضمین نشده است، اما turbostat فرض می‌کند که آنها با نرخ TSC شمارش می‌کنند، که این امر در تمام پردازنده‌های آزمایش‌شده تا به امروز صادق است. .SH "مراجع (REFERENCES)" Volume 3B: System Programming Guide https://www.intel.com/products/processor/manuals .SH "اجرای جدیدترین نسخه (RUN THE LATEST VERSION)" اگر turbostat اعلام کرد که پردازنده شما را شناسایی نمی‌کند، لطفاً جدیدترین نسخه را امتحان کنید. جدیدترین نسخه turbostat نیازمند جدیدترین نسخه از هسته لینوکس نیست. با این حال، برخی قابلیت‌ها مانند شمارنده‌های perf(1) به پشتیبانی هسته نیاز دارند. جدیدترین انتشار turbostat در درخت سورس بالادستی هسته لینوکس در دسترس است؛ مانند: "git pull https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git" و سپس اجرای دستور make در مسیر tools/power/x86/turbostat/. توجه: دستور "make install" سیستم شما را به صورت دستی به‌روزرسانی می‌کند، اما به‌روزرسانی‌های بعدی توزیع ممکن است مجدداً نسخه turbostat شما را به یک نسخه قدیمی‌تر تنزل دهند. به همین دلیل، نصب دستی در مسیر /usr/local/bin احتمالاً همان چیزی است که به آن نیاز دارید. توجه داشته باشید که turbostat/Makefile یک هدف "make snapshot" دارد که یک فایل tar ایجاد می‌کند که می‌تواند بدون نیاز به درخت محلی سورس هسته کامپایل شود. اگر نسخه بالادستی به اندازه کافی جدید نیست، درخت توسعه را می‌توانید در اینجا بیابید: "git pull https://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git turbostat" اگر درخت توسعه کار نکرد، لطفاً از طریق چت، یا از طریق ایمیل با ذکر کلمه "turbostat" در خط موضوع (Subject) با نویسنده تماس بگیرید. یک باینری قدیمی turbostat ممکن است با استفاده از "\-\-force" روی سخت‌افزار ناشناخته اجرا شود، اما نتایج به دست آمده پشتیبانی نمی‌شوند. .SH "فایل‌ها (FILES)" .ta .nf /sys/bus/event_source/devices/ /dev/cpu/*/msr /sys/class/intel_pmt/ /sys/devices/system/cpu/ .fi .SH "همچنین ببینید (SEE ALSO)" .BR perf (1), .BR msr (4), .BR vmstat (8) .PP .SH "نویسندگان (AUTHORS)" .nf نوشته‌شده توسط Len Brown .fi