.TH syscount.bt 8 "2018-09-06" "USER COMMANDS" .SH "نام (NAME)" syscount.bt \- شمارش فراخوانی‌های سیستمی با استفاده از bpftrace/eBPF .SH "خلاصه دستور (SYNOPSIS)" .B syscount.bt -- [--sysname] .SH "توضیحات (DESCRIPTION)" این ابزار فراخوانی‌های سیستمی (syscalls) را شمارش می‌کند و خلاصه‌ای از ۱۰ شناسه فراخوانی سیستمی برتر و ۱۰ نام فرآیند برتر صادرکننده فراخوانی‌های سیستمی را چاپ می‌کند. این کار می‌تواند برای توصیف ویژگی‌های بار کاری هسته و منابع و یافتن برنامه‌هایی که به‌طور ناکارآمد از فراخوانی‌های سیستمی استفاده می‌کنند، مفید باشد. .PP این ابزار با استفاده از نقطه ردیابی tracepoint:raw_syscalls:sys_enter کار می‌کند. .PP از آنجا که این ابزار از BPF استفاده می‌کند، تنها کاربر ریشه (root) می‌تواند از آن استفاده کند. .SH "گزینه‌ها (OPTIONS)" .TP --sysname نمایش نام فراخوانی سیستمی به‌جای شماره فراخوانی سیستمی. .SH "پیش‌نیازها (REQUIREMENTS)" CONFIG_BPF و bpftrace. .SH "مثال‌ها (EXAMPLES)" .TP شمارش فراخوانی‌های سیستمی تا زمان فشرده شدن کلیدهای Ctrl-C: # .B syscount.bt .SH "خروجی (OUTPUT)" .TP Top 10 syscalls IDs: شماره شناسه فراخوانی سیستمی (در @syscall[]) را به همراه تعداد تکرار این فراخوانی در طول ردیابی نشان می‌دهد. حالت پیش‌فرض syscount.bt خروجی دادن شماره فراخوانی سیستمی است. .TP Top 10 syscalls NAMEs: نام فراخوانی سیستمی (در @syscallname[]) را به همراه تعداد تکرار این فراخوانی در طول ردیابی نشان می‌دهد. برای نمایش نام فراخوانی سیستمی از پارامتر --sysname استفاده کنید. .TP Top 10 processes: نام فرآیند (در @process[]) را به همراه تعداد فراخوانی‌های سیستمی در طول ردیابی نشان می‌دهد. .SH "بار پردازشی (OVERHEAD)" برای اکثر برنامه‌ها، در صورتی که نرخ فراخوانی‌ها در حد ۱٬۰۰۰ یا حتی ۱۰٬۰۰۰ فراخوانی سیستمی در ثانیه باشد، بار پردازشی قابل مدیریت خواهد بود. برای نرخ‌های بالاتر، ممکن است بار پردازشی قابل توجه شود. برای مثال، ردیابی یک حلقه بنچمارک خرد (microbenchmark) شامل ۴ میلیون فراخوانی geteuid()، سرعت اجرای آن را ۲٫۴ برابر کاهش می‌دهد. با این حال، این حالت نشان‌دهنده ردیابی یک بار کاری با نرخ بیش از ۴ میلیون فراخوانی سیستمی در ثانیه به ازای هر پردازنده (CPU) است که معمولاً یک حالت عادی نیست (در یک محیط تولیدی ابری بزرگ، نرخ‌های بین ۱۰ هزار تا ۵۰ هزار معمول هستند، که در آن‌ها انتظار می‌رود بار پردازشی برنامه نزدیک به ۱٪ باشد). .PP برای مقایسه، ابزار strace(1) در پیاده‌سازی فعلی مبتنی بر ptrace (که برای دهه‌ها از آن استفاده کرده است)، همان بار کاری geteuid() را ۱۰۲ برابر کندتر اجرا می‌کند (یعنی صد و دو برابر کندتر). .SH "منبع (SOURCE)" این ابزار برگرفته از bpftrace است. .IP https://github.com/bpftrace/bpftrace .PP همچنین در توزیع bpftrace به فایل همراه _examples.txt که شامل نمونه‌های استفاده، خروجی و توضیحات این ابزار است مراجعه کنید. .PP این یک نسخه bpftrace از ابزار bcc با همین نام است. نسخه bcc گزینه‌های خط فرمان متفاوتی ارائه می‌دهد و شناسه‌های فراخوانی سیستمی را به نام‌های آن‌ها ترجمه می‌کند. .IP https://github.com/iovisor/bcc .SH "سیستم‌عامل (OS)" Linux .SH "پایداری (STABILITY)" ناپایدار \- در حال توسعه. .SH "نویسنده (AUTHOR)" Brendan Gregg .SH "همچنین ببینید (SEE ALSO)" strace(1)