syscount.bt(8) System Manager's Manual syscount.bt(8)

syscount.bt - شمارش فراخوانی‌های سیستمی با استفاده از bpftrace/eBPF

syscount.bt -- [--sysname]

این ابزار فراخوانی‌های سیستمی (syscalls) را شمارش می‌کند و خلاصه‌ای از ۱۰ شناسه فراخوانی سیستمی برتر و ۱۰ نام فرآیند برتر صادرکننده فراخوانی‌های سیستمی را چاپ می‌کند. این کار می‌تواند برای توصیف ویژگی‌های بار کاری هسته و منابع و یافتن برنامه‌هایی که به‌طور ناکارآمد از فراخوانی‌های سیستمی استفاده می‌کنند، مفید باشد.

این ابزار با استفاده از نقطه ردیابی tracepoint:raw_syscalls:sys_enter کار می‌کند.

از آنجا که این ابزار از BPF استفاده می‌کند، تنها کاربر ریشه (root) می‌تواند از آن استفاده کند.

نمایش نام فراخوانی سیستمی به‌جای شماره فراخوانی سیستمی.

CONFIG_BPF و bpftrace.

شمارش فراخوانی‌های سیستمی تا زمان فشرده شدن کلیدهای Ctrl-C:
# syscount.bt

شماره شناسه فراخوانی سیستمی (در @syscall[]) را به همراه تعداد تکرار این فراخوانی در طول ردیابی نشان می‌دهد. حالت پیش‌فرض syscount.bt خروجی دادن شماره فراخوانی سیستمی است.
نام فراخوانی سیستمی (در @syscallname[]) را به همراه تعداد تکرار این فراخوانی در طول ردیابی نشان می‌دهد. برای نمایش نام فراخوانی سیستمی از پارامتر --sysname استفاده کنید.
نام فرآیند (در @process[]) را به همراه تعداد فراخوانی‌های سیستمی در طول ردیابی نشان می‌دهد.

برای اکثر برنامه‌ها، در صورتی که نرخ فراخوانی‌ها در حد ۱٬۰۰۰ یا حتی ۱۰٬۰۰۰ فراخوانی سیستمی در ثانیه باشد، بار پردازشی قابل مدیریت خواهد بود. برای نرخ‌های بالاتر، ممکن است بار پردازشی قابل توجه شود. برای مثال، ردیابی یک حلقه بنچمارک خرد (microbenchmark) شامل ۴ میلیون فراخوانی geteuid()، سرعت اجرای آن را ۲٫۴ برابر کاهش می‌دهد. با این حال، این حالت نشان‌دهنده ردیابی یک بار کاری با نرخ بیش از ۴ میلیون فراخوانی سیستمی در ثانیه به ازای هر پردازنده (CPU) است که معمولاً یک حالت عادی نیست (در یک محیط تولیدی ابری بزرگ، نرخ‌های بین ۱۰ هزار تا ۵۰ هزار معمول هستند، که در آن‌ها انتظار می‌رود بار پردازشی برنامه نزدیک به ۱٪ باشد).

برای مقایسه، ابزار strace(1) در پیاده‌سازی فعلی مبتنی بر ptrace (که برای دهه‌ها از آن استفاده کرده است)، همان بار کاری geteuid() را ۱۰۲ برابر کندتر اجرا می‌کند (یعنی صد و دو برابر کندتر).

این ابزار برگرفته از bpftrace است.

https://github.com/bpftrace/bpftrace

همچنین در توزیع bpftrace به فایل همراه _examples.txt که شامل نمونه‌های استفاده، خروجی و توضیحات این ابزار است مراجعه کنید.

این یک نسخه bpftrace از ابزار bcc با همین نام است. نسخه bcc گزینه‌های خط فرمان متفاوتی ارائه می‌دهد و شناسه‌های فراخوانی سیستمی را به نام‌های آن‌ها ترجمه می‌کند.

https://github.com/iovisor/bcc

Linux

ناپایدار - در حال توسعه.

Brendan Gregg

strace(1)

2018-09-06 USER COMMANDS