bpftool-cgroup(8) System Manager's Manual bpftool-cgroup(8)

bpftool-cgroup - ابزار بازرسی و دستکاری برنامه‌های bpf در cgroupها

bpftool [OPTIONS] cgroup COMMAND

OPTIONS := { { -j | --json } [{ -p | --pretty }] | { -d | --debug } | { -f | --bpffs } }

COMMANDS := { show | list | tree | attach | detach | help }

bpftool cgroup { show | list } CGROUP [effective]
bpftool cgroup tree [CGROUP_ROOT] [effective]
bpftool cgroup attach CGROUP ATTACH_TYPE PROG [ATTACH_FLAGS]
bpftool cgroup detach CGROUP ATTACH_TYPE PROG
bpftool cgroup help
PROG := { id PROG_ID | pinned FILE | tag PROG_TAG | name PROG_NAME }
ATTACH_TYPE := { cgroup_inet_ingress | cgroup_inet_egress |
cgroup_inet_sock_create | cgroup_sock_ops |
cgroup_device | cgroup_inet4_bind | cgroup_inet6_bind |
cgroup_inet4_post_bind | cgroup_inet6_post_bind |
cgroup_inet4_connect | cgroup_inet6_connect |
cgroup_unix_connect | cgroup_inet4_getpeername |
cgroup_inet6_getpeername | cgroup_unix_getpeername |
cgroup_inet4_getsockname | cgroup_inet6_getsockname |
cgroup_unix_getsockname | cgroup_udp4_sendmsg |
cgroup_udp6_sendmsg | cgroup_unix_sendmsg |
cgroup_udp4_recvmsg | cgroup_udp6_recvmsg |
cgroup_unix_recvmsg | cgroup_sysctl |
cgroup_getsockopt | cgroup_setsockopt |
cgroup_inet_sock_release }
ATTACH_FLAGS := { multi | override }

فهرست کردن تمام برنامه‌های متصل‌شده به cgroup مشخص‌شده با CGROUP.

خروجی با شناسه برنامه (program ID) آغاز شده و به دنبال آن نوع اتصال، فلگ‌های اتصال و نام برنامه می‌آید.

اگر effective مشخص شده باشد، برنامه‌های موثر (effective) که برای رویدادهای درون یک cgroup اجرا می‌شوند دریافت می‌گردند. این شامل برنامه‌های ارث‌بری‌شده به همراه برنامه‌های متصل‌شده است.

پیمایش روی تمام cgroupها در CGROUP_ROOT و فهرست کردن تمام برنامه‌های متصل‌شده. اگر CGROUP_ROOT مشخص نشده باشد، bpftool از نقطه اتصال (mountpoint) مربوط به cgroup v2 استفاده می‌کند.

خروجی مشابه دستورهای cgroup show/list است: با مسیر مطلق cgroup شروع می‌شود و به دنبال آن شناسه برنامه، نوع اتصال، فلگ‌های اتصال و نام برنامه می‌آید.

اگر effective مشخص شده باشد، برنامه‌های موثر که برای رویدادهای درون یک cgroup اجرا می‌شوند دریافت می‌گردند. این شامل برنامه‌های ارث‌بری‌شده به همراه برنامه‌های متصل‌شده است.

اتصال برنامه PROG به cgroup مشخص‌شده با CGROUP با نوع اتصال ATTACH_TYPE و ATTACH_FLAGS اختیاری.

مقدار ATTACH_FLAGS می‌تواند یکی از این موارد باشد: override اگر یک زیر-cgroup برنامه‌ای از bpf نصب کند، برنامه موجود در این cgroup جای خود را به برنامه زیر-cgroup می‌دهد؛ multi اگر یک زیر-cgroup برنامه‌ای از bpf نصب کند، برنامه آن cgroup علاوه بر برنامه این cgroup اجرا می‌شود.

فقط یک برنامه مجاز است به یک cgroup بدون فلگ‌های اتصال یا با فلگ override متصل شود. اتصال برنامه‌ای دیگر، برنامه قدیمی را آزاد کرده و برنامه جدید را متصل می‌کند.

اتصال چندین برنامه به یک cgroup با فلگ multi مجاز است. برنامه‌ها به ترتیب ورود (FIFO) اجرا می‌شوند (برنامه‌هایی که اول متصل شده‌اند، اول اجرا می‌شوند).

فلگ‌های غیرپیش‌فرض ATTACH_FLAGS از نسخه ۴.۱۴ هسته لینوکس به بعد پشتیبانی می‌شوند.

مقدار ATTACH_TYPE می‌تواند یکی از موارد زیر باشد:

  • ingress مسیر ورودی سوکت inet (از ۴.۱۰)
  • egress مسیر خروجی سوکت inet (از ۴.۱۰)
  • sock_create باز کردن یک سوکت inet (از ۴.۱۰)
  • sock_ops عملیات‌های گوناگون سوکت (از ۴.۱۲)
  • device دسترسی دستگاه (از ۴.۱۵)
  • bind4 فراخوانی bind(2) برای یک سوکت inet4 (از ۴.۱۷)
  • bind6 فراخوانی bind(2) برای یک سوکت inet6 (از ۴.۱۷)
  • post_bind4 بازگشت از bind(2) برای یک سوکت inet4 (از ۴.۱۷)
  • post_bind6 بازگشت از bind(2) برای یک سوکت inet6 (از ۴.۱۷)
  • connect4 فراخوانی connect(2) برای یک سوکت inet4 (از ۴.۱۷)
  • connect6 فراخوانی connect(2) برای یک سوکت inet6 (از ۴.۱۷)
  • connect_unix فراخوانی connect(2) برای یک سوکت unix (از ۶.۷)
  • sendmsg4 فراخوانی sendto(2)، sendmsg(2)، sendmmsg(2) برای یک سوکت متصل‌نشده udp4 (از ۴.۱۸)
  • sendmsg6 فراخوانی sendto(2)، sendmsg(2)، sendmmsg(2) برای یک سوکت متصل‌نشده udp6 (از ۴.۱۸)
  • sendmsg_unix فراخوانی sendto(2)، sendmsg(2)، sendmmsg(2) برای یک سوکت متصل‌نشده unix (از ۶.۷)
  • recvmsg4 فراخوانی recvfrom(2)، recvmsg(2)، recvmmsg(2) برای یک سوکت متصل‌نشده udp4 (از ۵.۲)
  • recvmsg6 فراخوانی recvfrom(2)، recvmsg(2)، recvmmsg(2) برای یک سوکت متصل‌نشده udp6 (از ۵.۲)
  • recvmsg_unix فراخوانی recvfrom(2)، recvmsg(2)، recvmmsg(2) برای یک سوکت متصل‌نشده unix (از ۶.۷)
  • sysctl دسترسی sysctl (از ۵.۲)
  • getsockopt فراخوانی getsockopt (از ۵.۳)
  • setsockopt فراخوانی setsockopt (از ۵.۳)
  • getpeername4 فراخوانی getpeername(2) برای یک سوکت inet4 (از ۵.۸)
  • getpeername6 فراخوانی getpeername(2) برای یک سوکت inet6 (از ۵.۸)
  • getpeername_unix فراخوانی getpeername(2) برای یک سوکت unix (از ۶.۷)
  • getsockname4 فراخوانی getsockname(2) برای یک سوکت inet4 (از ۵.۸)
  • getsockname6 فراخوانی getsockname(2) برای یک سوکت inet6 (از ۵.۸)
  • getsockname_unix فراخوانی getsockname(2) برای یک سوکت unix (از ۶.۷)
  • sock_release بستن یک سوکت inet در فضای کاربری (از ۵.۹)
جدا کردن PROG از cgroup با مقدار CGROUP و نوع اتصال ATTACH_TYPE.
چاپ پیام راهنمای کوتاه.

چاپ پیام راهنمای کوتاه (مشابه bpftool help).
چاپ شماره نسخه bpftool (مشابه bpftool version)، شماره نسخه libbpf در حال استفاده، و قابلیت‌های اختیاری که هنگام کامپایل bpftool گنجانده شده‌اند. قابلیت‌های اختیاری شامل پیوند با LLVM یا libbfd برای فراهم کردن دیس‌اسمبلر برای برنامه‌های کامپایل‌شده به روش JIT (bpftool prog dump jited) و استفاده از اسکلت‌های BPF (برخی ویژگی‌ها مانند bpftool prog profile یا نمایش pidهای مرتبط با اشیاء BPF ممکن است به آن متکی باشند).
تولید خروجی در قالب JSON. برای دستورهایی که نمی‌توانند JSON تولید کنند، این گزینه هیچ تاثیری ندارد.
تولید خروجی JSON خوانا برای انسان. متضمن -j است.
چاپ تمام لاگ‌های موجود، حتی اطلاعات سطح اشکال‌زدایی (debug). این شامل لاگ‌های libbpf و همچنین بخش اعتبارسنج (verifier) هنگام تلاش برای بارگذاری برنامه‌ها می‌شود.
نمایش نام فایل برنامه‌های سنجاق‌شده (pinned).

# mount -t bpf none /sys/fs/bpf/
# mkdir /sys/fs/cgroup/test.slice
# bpftool prog load ./device_cgroup.o /sys/fs/bpf/prog
# bpftool cgroup attach /sys/fs/cgroup/test.slice/ device id 1 allow_multi

# bpftool cgroup list /sys/fs/cgroup/test.slice/

ID       AttachType      AttachFlags     Name
1        device          allow_multi     bpf_prog1
# bpftool cgroup detach /sys/fs/cgroup/test.slice/ device id 1
# bpftool cgroup list /sys/fs/cgroup/test.slice/
ID       AttachType      AttachFlags     Name

bpf(2), bpf-helpers(7), bpftool(8), bpftool-btf(8), bpftool-feature(8), bpftool-gen(8), bpftool-iter(8), bpftool-link(8), bpftool-map(8), bpftool-net(8), bpftool-perf(8), bpftool-prog(8), bpftool-struct_ops(8), bpftool-token(8)