PIDSTAT(1) Linux User's Manual PIDSTAT(1)

pidstat - گزارش آمار تسک‌های لینوکس.

pidstat [ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ username ] ] [ -u ] [ -V ] [ -v ] [ -w ] [ -C comm ] [ -G process_name ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ] [ -p { pid[,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ] [ interval [ count ] ] [ -e program args ]

دستور pidstat برای پایش تسک‌های مجزایی که در حال حاضر توسط هسته لینوکس مدیریت می‌شوند به کار می‌رود. این دستور فعالیت‌های هر تسکِ انتخاب‌شده با گزینه -p یا تمام تسک‌های مدیریت‌شده توسط هسته لینوکس را (در صورتی که گزینه -p ALL استفاده شده باشد) در خروجی استاندارد می‌نویسد. مشخص نکردن هیچ تسکی معادل با تعیین -p ALL است، اما تنها تسک‌های فعال (تسک‌هایی با مقادیر آماری غیر صفر) در گزارش نمایش داده خواهند شد.

دستور pidstat همچنین می‌تواند برای پایش فرایندهای فرزندِ تسک‌های انتخاب‌شده استفاده شود. توضیحات مربوط به گزینه -T را در ادامه بخوانید.

پارامتر interval مدت زمان بر حسب ثانیه را میان هر گزارش مشخص می‌کند. مقدار 0 (یا تعیین نکردن هیچ پارامتری) نشان می‌دهد که آمار تسک‌ها باید برای مدت زمان سپری‌شده از هنگام راه‌اندازی سیستم (بوت) گزارش شوند. در صورتی که interval روی صفر تنظیم نشده باشد، پارامتر count می‌تواند همراه با آن تعیین شود. مقدار count تعداد گزارش‌های تولیدشده در فواصل زمانیِ interval ثانیه را مشخص می‌کند. اگر پارامتر interval بدون پارامتر count تعیین شود، دستور pidstat گزارش‌ها را به‌طور پیوسته تولید می‌کند.

می‌توانید اطلاعات مربوط به فعالیت‌های خاص تسک را با استفاده از پرچم‌ها (flags) انتخاب کنید. مشخص نکردن هیچ پرچمی، تنها فعالیت پردازنده (CPU) را انتخاب می‌کند.

تنها تسک‌هایی را نمایش می‌دهد که نام دستور آن‌ها شامل رشته comm باشد. این رشته می‌تواند یک عبارت باقاعده (regular expression) باشد.
گزارش آمار I/O (تنها در هسته‌های 2.6.20 و بالاتر). مقادیر زیر ممکن است نمایش داده شوند:
شناسه کاربری واقعی (UID) تسکِ در حال پایش.
نام کاربر واقعی مالکِ تسکِ در حال پایش.
شماره شناسه (PID) تسکِ در حال پایش.
میزان کیبی‌بایتی که تسک در هر ثانیه موجب خوانده شدن آن از دیسک شده است.
میزان کیبی‌بایتی که تسک در هر ثانیه موجب شده یا خواهد شد که بر روی دیسک نوشته شود.
میزان کیبی‌بایتی که نوشتن آن روی دیسک توسط تسک لغو شده است. این وضعیت ممکن است زمانی رخ دهد که تسک بخشی از pagecache کثیف (dirty) را کوتاه (truncate) کند. در این حالت، بخشی از I/O که به حساب تسک دیگری گذاشته شده بود رخ نخواهد داد.
تأخیر I/O بلوکی تسکِ در حال پایش، که با تیک‌های ساعت (clock ticks) اندازه‌گیری می‌شود. این معیار شامل تأخیرهای صرف‌شده در انتظار برای تکمیل I/O بلوکی همگام (sync) و تکمیل I/O بلوکی swapin است.
نام دستور تسک.
تعداد ارقام اعشار مورد استفاده را مشخص می‌کند (۰ تا ۲، مقدار پیش‌فرض ۲ است).
برنامه program را با آرگومان‌های ارائه‌شده args اجرا کرده و آن را با pidstat پایش می‌کند. pidstat زمانی که program خاتمه یابد متوقف می‌شود. باید یک مقدار غیر صفر برای پارامتر interval مشخص شود.
تنها فرایندهایی را نمایش می‌دهد که نام دستور آن‌ها شامل رشته process_name باشد. این رشته می‌تواند یک عبارت باقاعده باشد. اگر گزینه -t همراه با گزینه -G استفاده شود، نخ‌های (threads) متعلق به آن فرایند نیز نمایش داده می‌شوند (حتی اگر نام دستور آن‌ها شامل رشته process_name نباشد).
نمایش برچسب زمان بر حسب ثانیه‌های سپری‌شده از epoch (مبدأ زمان یونیکس).
تمام فعالیت‌ها را به صورت افقی در یک خط نمایش می‌دهد، بدون آنکه آمار میانگین در انتهای گزارش آورده شود. این گزینه برای آسان‌تر کردن تجزیه (parse) خروجی توسط سایر برنامه‌ها در نظر گرفته شده است.
اندازه‌ها را در قالبی خوانا برای انسان چاپ می‌کند (مانند 1.0k، 1.2M و غیره). واحدهای نمایش داده‌شده با این گزینه بر هر واحد پیش‌فرض دیگری (مانند کیبی‌بایت، سکتور و...) که به این معیارها وابسته است اولویت دارند.
در یک محیط SMP، مشخص می‌کند که میزان مصرف CPU تسک‌ها (همان‌طور که توسط گزینه -u نمایش داده می‌شود) باید بر تعداد کل پردازنده‌ها تقسیم شود.
نام دستور فرایند و تمام آرگومان‌های آن را نمایش می‌دهد.
آمار را در قالب JSON (نشانه‌گذاری شیء جاوااسکریپت) نمایش می‌دهد. ترتیب فیلدهای خروجی JSON تعریف‌نشده است و ممکن است در آینده فیلدهای جدیدی اضافه شوند.
تسک‌ها (فرایندها)یی را انتخاب می‌کند که آمار برای آن‌ها گزارش خواهد شد. pid شناسه فرایند است. کلیدواژه SELF نشان می‌دهد که آمار برای خودِ فرایند pidstat گزارش شود، در حالی که کلیدواژه ALL نشان می‌دهد که آمار باید برای تمام تسک‌های مدیریت‌شده توسط سیستم گزارش شود.
اطلاعات اولویت بی‌درنگ (realtime) و سیاست زمان‌بندی را گزارش می‌دهد. مقادیر زیر ممکن است نمایش داده شوند:
شناسه کاربری واقعی تسکِ در حال پایش.
نام کاربر واقعی مالکِ تسکِ در حال پایش.
شماره شناسه تسکِ در حال پایش.
اولویت بی‌درنگِ تسکِ در حال پایش.
سیاست زمان‌بندی تسکِ در حال پایش.
نام دستور تسک.
خطاهای صفحه (page faults) و میزان مصرف حافظه را گزارش می‌دهد.

هنگام گزارش آمار برای تسک‌های مجزا، مقادیر زیر ممکن است نمایش داده شوند:

شناسه کاربری واقعی تسکِ در حال پایش.
نام کاربر واقعی مالکِ تسکِ در حال پایش.
شماره شناسه تسکِ در حال پایش.
تعداد کل خطاهای جزئی (minor faults) ایجادشده توسط تسک در هر ثانیه؛ خطاهایی که نیازی به بارگذاری صفحه حافظه از دیسک نداشته‌اند.
تعداد کل خطاهای عمده (major faults) ایجادشده توسط تسک در هر ثانیه؛ خطاهایی که نیازمند بارگذاری صفحه حافظه از دیسک بوده‌اند.
اندازه مجازی (Virtual Size): میزان کل مصرف حافظه مجازی تسک بر حسب کیبی‌بایت.
اندازه مقیم (Resident Set Size): حافظه فیزیکی مبادله‌نشده (non-swapped) استفاده‌شده توسط تسک بر حسب کیبی‌بایت..IP %MEM سهم در حال حاضر استفاده‌شده از حافظه فیزیکی در دسترس توسط تسک.
نام دستور تسک.
هنگام گزارش آمارهای کلی برای تسک‌ها و تمام فرزندانشان، مقادیر زیر ممکن است نمایش داده شوند:
شماره شناسایی کاربری واقعی تسکی که به همراه فرزندانش تحت نظارت است.
نام کاربر واقعی مالک تسکی که به همراه فرزندانش تحت نظارت است.
شماره شناسایی تسکی که به همراه فرزندانش تحت نظارت است.
تعداد کل خطاهای جزئی (minor faults) ایجادشده توسط تسک و تمام فرزندانش که در طول این بازه زمانی گردآوری شده است.
تعداد کل خطاهای عمده (major faults) ایجادشده توسط تسک و تمام فرزندانش که در طول این بازه زمانی گردآوری شده است.
نام دستور تسکی که به همراه فرزندانش تحت نظارت است.
گزارش میزان استفاده از پشته (stack). مقادیر زیر ممکن است نمایش داده شوند:
شماره شناسایی کاربری واقعی تسک تحت نظارت.
نام کاربر واقعی مالک تسک تحت نظارت.
شماره شناسایی تسک تحت نظارت.
میزان حافظه بر حسب کیبی‌بایت که به عنوان پشته برای تسک رزرو شده، اما لزوماً استفاده نشده است.
میزان حافظه بر حسب کیبی‌بایت که به عنوان پشته استفاده شده و توسط تسک ارجاع داده شده است.
نام دستور تسک.
این گزینه مشخص می‌کند چه چیزی باید توسط دستور pidstat نظارت شود. کلیدواژهٔ TASK نشان می‌دهد که آمارها باید برای تک‌تک تسک‌ها گزارش شوند (این گزینه پیش‌فرض است) در حالی که کلیدواژهٔ CHILD نشان می‌دهد آمارها باید به صورت سراسری برای تسک‌های انتخاب‌شده و تمام فرزندانشان گزارش شوند. کلیدواژهٔ ALL نشان می‌دهد آمارها باید هم برای تک‌تک تسک‌ها و هم به صورت سراسری برای تسک‌های انتخاب‌شده و فرزندانشان گزارش شوند.

نکته: آمارهای سراسری برای تسک‌ها و تمام فرزندانشان برای همه گزینه‌های pidstat در دسترس نیست. همچنین این آمارها لزوماً مربوط به بازه زمانی فعلی نیستند: آمارهای یک فرایند فرزند تنها هنگامی گردآوری می‌شوند که پایان یابد یا کشته (kill) شود.

همچنین آمار ریسه‌های (threads) مرتبط با تسک‌های انتخاب‌شده را نمایش می‌دهد.

این گزینه مقادیر زیر را به گزارش‌ها می‌افزاید:

شماره شناسایی سرگروه ریسه (thread group leader).
شماره شناسایی ریسه تحت نظارت.
نمایش نام کاربر واقعی تسک‌های تحت نظارت به جای UID. اگر username مشخص شده باشد، تنها تسک‌های متعلق به کاربر مشخص‌شده نمایش داده می‌شوند.
گزارش میزان مصرف CPU.

هنگام گزارش آمار برای تک‌تک تسک‌ها، مقادیر زیر ممکن است نمایش داده شوند:

شماره شناسایی کاربری واقعی تسک تحت نظارت.
نام کاربر واقعی مالک تسک تحت نظارت.
شماره شناسایی تسک تحت نظارت.
%usr
درصد استفاده از CPU توسط تسک حین اجرا در سطح کاربر (برنامه کاربردی)، با یا بدون اولویت nice. توجه داشته باشید که این فیلد شامل زمان صرف‌شده برای اجرای یک پردازنده مجازی نمی‌شود.
%system
درصد استفاده از CPU توسط تسک حین اجرا در سطح سیستم (هسته).
%guest
درصد زمان CPU صرف‌شده توسط تسک در ماشین مجازی (اجرای یک پردازنده مجازی).
%wait
درصد زمان CPU صرف‌شده توسط تسک در حین انتظار برای اجرا.
%CPU
درصد کل زمان CPU استفاده‌شده توسط تسک. در یک محیط SMP، در صورتی که گزینهٔ -I در خط فرمان وارد شده باشد، مصرف CPU تسک بر تعداد کل CPUها تقسیم خواهد شد.
شماره پردازنده‌ای که تسک به آن متصل است.
نام دستور تسک.
هنگام گزارش آمارهای کلی برای تسک‌ها و تمام فرزندانشان، مقادیر زیر ممکن است نمایش داده شوند:
شماره شناسایی کاربری واقعی تسکی که به همراه فرزندانش تحت نظارت است.
نام کاربر واقعی مالک تسکی که به همراه فرزندانش تحت نظارت است.
شماره شناسایی تسکی که به همراه فرزندانش تحت نظارت است.
تعداد کل میلی‌ثانیه‌های صرف‌شده توسط تسک و تمام فرزندانش حین اجرا در سطح کاربر (برنامه کاربردی)، با یا بدون اولویت nice، که در طول بازه زمانی گردآوری شده است. توجه داشته باشید که این فیلد شامل زمان صرف‌شده برای اجرای یک پردازنده مجازی نمی‌شود.
تعداد کل میلی‌ثانیه‌های صرف‌شده توسط تسک و تمام فرزندانش حین اجرا در سطح سیستم (هسته)، که در طول بازه زمانی گردآوری شده است.
تعداد کل میلی‌ثانیه‌های صرف‌شده توسط تسک و تمام فرزندانش در ماشین مجازی (اجرای یک پردازنده مجازی).
نام دستور تسکی که به همراه فرزندانش تحت نظارت است.
چاپ شماره نسخه و سپس خروج.
گزارش مقادیر برخی از جدول‌های هسته. مقادیر زیر ممکن است نمایش داده شوند:
شماره شناسایی کاربری واقعی تسک تحت نظارت.
نام کاربر واقعی مالک تسک تحت نظارت.
شماره شناسایی تسک تحت نظارت.
تعداد ریسه‌های مرتبط با تسک فعلی.
تعداد توصیف‌کننده‌های فایل مرتبط با تسک فعلی.
نام دستور تسک.
گزارش فعالیت تعویض تسک (تنها در هسته‌های 2.6.23 و جدیدتر). مقادیر زیر ممکن است نمایش داده شوند:
شماره شناسایی کاربری واقعی تسک تحت نظارت.
نام کاربر واقعی مالک تسک تحت نظارت.
شماره شناسایی تسک تحت نظارت.
تعداد کل تعویض‌های زمینه اختیاری (voluntary context switches) انجام‌شده توسط تسک در هر ثانیه. یک تعویض زمینه اختیاری زمانی رخ می‌دهد که تسک به دلیل نیاز به منبعی که در دسترس نیست مسدود (block) شود..IP nvcswch/s تعداد کل تعویض‌های زمینه‌ی غیرداوطلبانه (involuntary context switches) که وظیفه در هر ثانیه انجام داده است. یک تعویض زمینه‌ی غیرداوطلبانه زمانی رخ می‌دهد که یک وظیفه در طول برش زمانی (time slice) خود اجرا شده و سپس مجبور به واگذاری پردازنده می‌شود.
نام دستور وظیفه.

دستور pidstat متغیرهای محیطی زیر را در نظر می‌گیرد:

به‌طور پیش‌فرض، زمانی که خروجی به یک ترمینال متصل باشد، آمارها به صورت رنگی نمایش داده می‌شوند. از این متغیر برای تغییر تنظیمات استفاده کنید. مقادیر ممکن برای این متغیر عبارتند از never، always یا auto (مورد آخر معادل تنظیمات پیش‌فرض است).
لطفاً توجه داشته باشید که رنگِ استفاده‌شده برای نمایش یک مقدار (قرمز، زرد یا هر رنگ دیگر)، صرفاً به دلیل رنگ آن نشان‌دهنده‌ی هیچ‌گونه مشکلی نیست؛ بلکه تنها بازه‌های مختلفی از مقادیر را نشان می‌دهد.
رنگ‌ها و سایر ویژگی‌های مورد استفاده برای نمایش آمار در ترمینال را مشخص می‌کند. مقدار آن فهرستی از قابلیت‌ها است که با دونقطه (:) از هم جدا شده‌اند و مقدار پیش‌فرض آن I=32;22:N=34;1:W=35;1:X=31;1:Z=34;22. است. قابلیت‌های پشتیبانی‌شده عبارتند از:
زیررشته‌ی SGR (مخفف Select Graphic Rendition) برای مقادیر مواردی مانند PID، UID یا شماره‌ی CPU.
زیررشته‌ی SGR برای مقادیر آماری غیرصفر و برای نام‌های وظایف.
زیررشته‌ی SGR برای مقادیر درصدی در بازه‌ی ۷۵٪ تا ۹۰٪ (یا در بازه‌ی ۱۰٪ تا ۲۵٪ بسته به مفهوم معیار سنجش).
زیررشته‌ی SGR برای مقادیر درصدی بزرگ‌تر یا مساوی ۹۰٪ (یا کوچک‌تر یا مساوی ۱۰٪ بسته به مفهوم معیار سنجش).
زیررشته‌ی SGR برای مقادیر صفر و برای نام‌های رشته‌ها (threads).
اگر این متغیر وجود داشته باشد و مقدار آن ISO باشد، محلی‌سازی (locale) فعلی هنگام چاپ تاریخ در سرآیند گزارش نادیده گرفته خواهد شد. دستور pidstat در عوض از قالب ISO 8601 (YYYY-MM-DD) استفاده خواهد کرد. برچسب زمانی نیز با قالب ISO 8601 سازگار خواهد بود.

نمایش پنج گزارش از آمارهای پردازنده (CPU) برای هر وظیفه‌ی فعال در سیستم در فواصل زمانی دو ثانیه‌ای.
نمایش پنج گزارش از خطاهای صفحه (page faults) و آمارهای حافظه برای شناسه‌ی PID 1643 در فواصل زمانی دو ثانیه‌ای.
نمایش آمارهای کلی خطاهای صفحه و حافظه برای تمام فرایندهایی که نام دستور آن‌ها شامل رشته‌ی "fox" یا "bird" است.
نمایش پنج گزارش از آمارهای خطاهای صفحه در فواصل زمانی دو ثانیه‌ای برای فرایندهای فرزند تمام وظایف در سیستم. تنها فرایندهای فرزندی که مقادیر آماری غیرصفر دارند نمایش داده می‌شوند.

سیستم‌فایل /proc باید سوار (mount) شده باشد تا دستور pidstat بتواند کار کند.

اگرچه pidstat واحدهایی متناظر با کیلوبایت (kB)، مگابایت (MB) و... را نمایش می‌دهد، اما در واقع از کیبی‌بایت (kiB)، مبی‌بایت (MiB) و... استفاده می‌کند. یک کیبی‌بایت برابر با ۱۰۲۴ بایت، و یک مبی‌بایت برابر با ۱۰۲۴ کیبی‌بایت است..SH "فایل‌ها (FILES)" /proc شامل فایل‌های متعددی حاوی آمارهای سیستم است.

Sebastien Godard (sysstat <at> orange.fr)

sar(1), top(1), ps(1), mpstat(1), iostat(1), vmstat(8)

https://github.com/sysstat/sysstat
https://sysstat.github.io

JANUARY 2025 Linux