| xdp-monitor(8) | ابزار ساده پایش XDP | xdp-monitor(8) |
نام (NAME)
xdp-monitor - ابزار ساده پایش XDP مبتنی بر BPF
خلاصه دستور (SYNOPSIS)
xdp-monitor [گزینهها]
xdp-monitor ابزاری است که با استفاده از زیرساخت tracepointهای BPF، آمارها و رویدادهای مختلف مرتبط با XDP را با کمترین بار پردازشی (overhead) ممکن پایش میکند.
توجه داشته باشید که به طور پیشفرض، جمعآوری آمار برای رویدادهای موفق تغییر مسیر (redirect) در XDP غیرفعال است؛ زیرا این کار بار پردازشی ردگیری BPF را به ازای هر بسته اضافه میکند که گرچه اندک است، اما میتواند منجر به افت کارایی پردازش بستهها شود.
این ابزار بر زیرساخت tracepointهای خام BPF در هسته لینوکس متکی است.
اطلاعات بیشتر درباره مفهوم خروجی در هر دو حالت پیشفرض (مختصر) و با جزئیات کامل، در بخش توضیحات قالب خروجی آورده شده است.
اجرای xdp-monitor
نحو اجرای xdp-monitor به صورت زیر است:
xdp-monitor [options]
گزینههای پشتیبانیشده عبارتند از:
-i, --interval <SECONDS>
تنظیم بازه زمانی (برحسب ثانیه) برای جمعآوری تمامی آمارها و نمایش آنها در خروجی.
-s, --stats
فعالسازی آمار برای تغییر مسیرهای موفق. این گزینه برای ثبت تمام تغییر مسیرهای موفق، بار پردازشی ردگیری به ازای هر بسته به همراه دارد.
-e, --extended
اجرای xdp-monitor در حالت خروجی «گسترده» (extended). در صورت عدم تعیین، برنامه در حالت «مختصر» (terse) اجرا خواهد شد. در زمان اجرای برنامه، با فشردن کلیدهای ترکیبی Ctrl+\ میتوان حالت خروجی را تغییر داد. همچنین به بخش توضیحات قالب خروجی در زیر مراجعه کنید.
-v, --verbose
فعالسازی گزارشدهی پرجزئیات. با دوبار مشخص کردن این گزینه، لاگهای پرجزئیات از کتابخانههای زیرین libxdp و libbpf نیز نمایش داده میشوند.
--version
نمایش نسخه برنامه و خروج.
-h, --help
نمایش خلاصهای از گزینههای موجود.
توضیحات قالب خروجی (OUTPUT FORMAT DESCRIPTION)
به طور پیشفرض، آمار موفقیت تغییر مسیر غیرفعال است؛ برای فعالسازی از --stats استفاده کنید. حالت خروجی مختصر پیشفرض است؛ حالت خروجی گسترده را میتوان با گزینه خط فرمان --extended فعال کرد.
میتوان از سیگنال SIGQUIT (کلیدهای Ctrl + \) برای تغییر پویای حالت خروجی در زمان اجرا استفاده کرد.
حالت مختصر حداکثر فیلدهای زیر را نمایش میدهد:
rx/s تعداد بستههای دریافتی در هر ثانیه redir/s تعداد بستههای با تغییر مسیر موفق در هر ثانیه err,drop/s مجموع خطاهای رخداده در هر ثانیه (شامل بستههای دور ریختهشده) xmit/s تعداد بستههای ارسالشده روی دستگاه خروجی در هر ثانیه
حالت خروجی پرجزئیات حداکثر فیلدهای زیر را نمایش میدهد:
FIELD DESCRIPTION
receive نمایش تعداد بستههای دریافتی و خطاهای رخداده
هرگاه خطا یا دور ریختن بسته رخ دهد، جزئیات آمار خطا
و بستههای دور ریختهشده به ازای هر پردازنده خطی نمایش مییابد.
pkt/s - بستههای دریافتی در هر ثانیه
drop/s - بستههای دور ریختهشده در هر ثانیه
error/s - خطاهای رخداده در هر ثانیه
redirect - نمایش تعداد بستههای با تغییر مسیر موفق
خطاهای رخداده ذیل فیلد redirect_err بسط داده میشوند
توجه کنید ارسال گزینه s- برای فعالسازی دارای بار به ازای هر بسته است
redir/s - بستههای موفق در تغییر مسیر در هر ثانیه
redirect_err نمایش تعداد بستههایی که تغییر مسیر آنها ناموفق بوده است
کد خطا (errno) به تفکیک هر پردازنده ذیل این فیلد نمایش مییابد
خطاهای شناختهشده عبارتند از:
EINVAL: تغییر مسیر نامعتبر
ENETDOWN: دستگاه مقصد تغییر مسیر خاموش یا غیرفعال است
EMSGSIZE: طول بسته برای دستگاه مقصد بسیار بزرگ است
EOPNOTSUPP: عملیات پشتیبانی نمیشود
ENOSPC: عدم وجود فضا در ptr_ring نخ هسته cpumap
error/s - بستههای ناموفق در تغییر مسیر در هر ثانیه
enqueue to cpu N نمایش تعداد بستههای صفبندیشده در صف تجمیعی پردازنده N
برای نمایش آمار صفبندی به ازای هر پردازنده به cpu:FROM->N بسط مییابد
بستههای دریافتی میتوانند به پردازندهای که برنامه تغییر مسیر
بستهها را به آن ارسال میکند مرتبط شوند.
pkt/s - بستههای صفبندیشده در ثانیه از سایر پردازندهها به پردازنده N
drop/s - بستههای دور ریختهشده هنگام صفبندی به پردازنده N
bulk-avg - میانگین تعداد بستههای پردازششده برای هر رویداد
kthread نمایش تعداد بستههای پردازششده در نخ هسته CPUMAP به ازای هر پردازنده
بستههای مصرفشده از ptr_ring در نخ هسته، و xdp_stats آن (پس از فراخوانی
برنامه bpf مربوط به CPUMAP) ذیل این بخش بسط مییابند.
pkt/s - بستههای مصرفشده در ثانیه از ptr_ring
drop/s - بستههای دور ریختهشده در ثانیه در نخ هسته
sched - تعداد دفعاتی که نخ هسته ()schedule را فراخوانی کرده
آمار xdp_stats (به تفکیک هر پردازنده نیز بسط مییابد)
pass/s - شمارش XDP_PASS در اجرای برنامه CPUMAP
drop/s - شمارش XDP_DROP در اجرای برنامه CPUMAP
redir/s - شمارش XDP_REDIRECT در اجرای برنامه CPUMAP
xdp_exception نمایش رویدادهای نقطه ردگیری xdp_exception
این مورد میتواند به دلیل خطاهای داخلی درایور، اکشنهای ناشناخته XDP
یا تحریک صریح توسط کاربر با استفاده از XDP_ABORTED رخ دهد
هر اکشن به همراه شمارش آن ذیل این فیلد نمایش داده میشود
hit/s - تعداد دفعاتی که نقطه ردگیری در ثانیه فعال شده
devmap_xmit نمایش رویدادهای نقطه ردگیری devmap_xmit
این نقطه ردگیری برای ارسالهای موفق روی دستگاه خروجی فراخوانی میشود
اما این آمارها در حالت XDP عمومی در دسترس نیستند، بنابراین در حالت
SKB از خروجی حذف خواهند شد
xmit/s - تعداد بستههای ارسالشده در هر ثانیه
drop/s - تعداد بستههای ناموفق در ارسال در هر ثانیه
drv_err/s - تعداد خطاهای داخلی درایور در هر ثانیه
bulk-avg - میانگین تعداد بستههای پردازششده برای هر رویداد
اشکالات (BUGS)
لطفاً هرگونه باگ را در گیتهاب گزارش دهید: https://github.com/xdp-project/xdp-tools/issues
نویسنده (AUTHOR)
ابزار اصلی xdp-monitor توسط Jesper Dangaard Brouer نوشته شد. سپس برای پشتیبانی از ویژگیهای بیشتر توسط Kumar Kartikeya Dwivedi بازنویسی گردید. این صفحه راهنما توسط Kumar Kartikeya Dwivedi نگاشته شده است.
| December 12, 2022 | V1.6.3 |