/linux-6.6.21/tools/testing/selftests/cgroup/ |
D | test_freezer.c | 27 static int cg_check_frozen(const char *cgroup, bool frozen) in cg_check_frozen() argument 30 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 1") != 0) { in cg_check_frozen() 31 debug("Cgroup %s isn't frozen\n", cgroup); in cg_check_frozen() 38 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 0") != 0) { in cg_check_frozen() 39 debug("Cgroup %s is frozen\n", cgroup); in cg_check_frozen() 50 static int cg_freeze_nowait(const char *cgroup, bool freeze) in cg_freeze_nowait() argument 52 return cg_write(cgroup, "cgroup.freeze", freeze ? "1" : "0"); in cg_freeze_nowait() 59 static int cg_enter_and_wait_for_frozen(const char *cgroup, int pid, in cg_enter_and_wait_for_frozen() argument 65 fd = cg_prepare_for_wait(cgroup); in cg_enter_and_wait_for_frozen() 69 ret = cg_enter(cgroup, pid); in cg_enter_and_wait_for_frozen() [all …]
|
D | test_kill.c | 21 static int cg_kill_wait(const char *cgroup) in cg_kill_wait() argument 25 fd = cg_prepare_for_wait(cgroup); in cg_kill_wait() 29 ret = cg_write(cgroup, "cgroup.kill", "1"); in cg_kill_wait() 46 static int child_fn(const char *cgroup, void *arg) in child_fn() argument 60 char *cgroup = NULL; in test_cgkill_simple() local 63 cgroup = cg_name(root, "cg_test_simple"); in test_cgkill_simple() 64 if (!cgroup) in test_cgkill_simple() 67 if (cg_create(cgroup)) in test_cgkill_simple() 71 pids[i] = cg_run_nowait(cgroup, child_fn, NULL); in test_cgkill_simple() 73 if (cg_wait_for_proc_count(cgroup, 100)) in test_cgkill_simple() [all …]
|
D | cgroup_util.h | 27 extern char *cg_control(const char *cgroup, const char *control); 28 extern int cg_create(const char *cgroup); 29 extern int cg_destroy(const char *cgroup); 30 extern int cg_read(const char *cgroup, const char *control, 32 extern int cg_read_strcmp(const char *cgroup, const char *control, 34 extern int cg_read_strstr(const char *cgroup, const char *control, 36 extern long cg_read_long(const char *cgroup, const char *control); 37 long cg_read_key_long(const char *cgroup, const char *control, const char *key); 38 extern long cg_read_lc(const char *cgroup, const char *control); 39 extern int cg_write(const char *cgroup, const char *control, char *buf); [all …]
|
D | cgroup_util.c | 75 char *cg_control(const char *cgroup, const char *control) in cg_control() argument 77 size_t len = strlen(cgroup) + strlen(control) + 2; in cg_control() 80 snprintf(ret, len, "%s/%s", cgroup, control); in cg_control() 86 int cg_read(const char *cgroup, const char *control, char *buf, size_t len) in cg_read() argument 91 snprintf(path, sizeof(path), "%s/%s", cgroup, control); in cg_read() 97 int cg_read_strcmp(const char *cgroup, const char *control, in cg_read_strcmp() argument 114 if (cg_read(cgroup, control, buf, size)) { in cg_read_strcmp() 124 int cg_read_strstr(const char *cgroup, const char *control, const char *needle) in cg_read_strstr() argument 128 if (cg_read(cgroup, control, buf, sizeof(buf))) in cg_read_strstr() 134 long cg_read_long(const char *cgroup, const char *control) in cg_read_long() argument [all …]
|
/linux-6.6.21/kernel/bpf/ |
D | bpf_cgrp_storage.c | 41 struct cgroup *cg = owner; in cgroup_storage_ptr() 46 void bpf_cgrp_storage_free(struct cgroup *cgroup) in bpf_cgrp_storage_free() argument 51 local_storage = rcu_dereference(cgroup->bpf_cgrp_storage); in bpf_cgrp_storage_free() 64 cgroup_storage_lookup(struct cgroup *cgroup, struct bpf_map *map, bool cacheit_lockit) in cgroup_storage_lookup() argument 69 cgroup_storage = rcu_dereference_check(cgroup->bpf_cgrp_storage, in cgroup_storage_lookup() 81 struct cgroup *cgroup; in bpf_cgrp_storage_lookup_elem() local 85 cgroup = cgroup_get_from_fd(fd); in bpf_cgrp_storage_lookup_elem() 86 if (IS_ERR(cgroup)) in bpf_cgrp_storage_lookup_elem() 87 return ERR_CAST(cgroup); in bpf_cgrp_storage_lookup_elem() 90 sdata = cgroup_storage_lookup(cgroup, map, true); in bpf_cgrp_storage_lookup_elem() [all …]
|
D | cgroup_iter.c | 47 __bpf_md_ptr(struct cgroup *, cgroup); 130 if (css && cgroup_is_dead(css->cgroup)) in __cgroup_iter_seq_show() 134 ctx.cgroup = css ? css->cgroup : NULL; in __cgroup_iter_seq_show() 160 BTF_ID_LIST_GLOBAL_SINGLE(bpf_cgroup_btf_id, struct, cgroup) in BTF_ID_LIST_GLOBAL_SINGLE() argument 165 struct cgroup *cgrp = aux->cgroup.start; in BTF_ID_LIST_GLOBAL_SINGLE() 176 p->order = aux->cgroup.order; in BTF_ID_LIST_GLOBAL_SINGLE() 198 int fd = linfo->cgroup.cgroup_fd; in bpf_iter_attach_cgroup() 199 u64 id = linfo->cgroup.cgroup_id; in bpf_iter_attach_cgroup() 200 int order = linfo->cgroup.order; in bpf_iter_attach_cgroup() 201 struct cgroup *cgrp; in bpf_iter_attach_cgroup() [all …]
|
/linux-6.6.21/tools/testing/selftests/bpf/progs/ |
D | cgrp_kfunc_failure.c | 20 static struct __cgrps_kfunc_map_value *insert_lookup_cgrp(struct cgroup *cgrp) in insert_lookup_cgrp() 33 int BPF_PROG(cgrp_kfunc_acquire_untrusted, struct cgroup *cgrp, const char *path) in BPF_PROG() 35 struct cgroup *acquired; in BPF_PROG() 52 int BPF_PROG(cgrp_kfunc_acquire_no_null_check, struct cgroup *cgrp, const char *path) in BPF_PROG() 54 struct cgroup *acquired; in BPF_PROG() 68 int BPF_PROG(cgrp_kfunc_acquire_fp, struct cgroup *cgrp, const char *path) in BPF_PROG() 70 struct cgroup *acquired, *stack_cgrp = (struct cgroup *)&path; in BPF_PROG() 73 acquired = bpf_cgroup_acquire((struct cgroup *)&stack_cgrp); in BPF_PROG() 82 int BPF_PROG(cgrp_kfunc_acquire_unsafe_kretprobe, struct cgroup *cgrp) in BPF_PROG() 84 struct cgroup *acquired; in BPF_PROG() [all …]
|
D | cgrp_kfunc_common.h | 13 struct cgroup __kptr * cgrp; 23 struct cgroup *bpf_cgroup_acquire(struct cgroup *p) __ksym; 24 void bpf_cgroup_release(struct cgroup *p) __ksym; 25 struct cgroup *bpf_cgroup_ancestor(struct cgroup *cgrp, int level) __ksym; 26 struct cgroup *bpf_cgroup_from_id(u64 cgid) __ksym; 30 static inline struct __cgrps_kfunc_map_value *cgrps_kfunc_map_value_lookup(struct cgroup *cgrp) in cgrps_kfunc_map_value_lookup() 42 static inline int cgrps_kfunc_map_insert(struct cgroup *cgrp) in cgrps_kfunc_map_insert() 46 struct cgroup *acquired, *old; in cgrps_kfunc_map_insert()
|
D | cgrp_kfunc_success.c | 33 int BPF_PROG(test_cgrp_acquire_release_argument, struct cgroup *cgrp, const char *path) in BPF_PROG() 35 struct cgroup *acquired; in BPF_PROG() 50 int BPF_PROG(test_cgrp_acquire_leave_in_map, struct cgroup *cgrp, const char *path) in BPF_PROG() 65 int BPF_PROG(test_cgrp_xchg_release, struct cgroup *cgrp, const char *path) in BPF_PROG() 67 struct cgroup *kptr, *cg; in BPF_PROG() 108 int BPF_PROG(test_cgrp_get_release, struct cgroup *cgrp, const char *path) in BPF_PROG() 110 struct cgroup *kptr; in BPF_PROG() 139 int BPF_PROG(test_cgrp_get_ancestors, struct cgroup *cgrp, const char *path) in BPF_PROG() 141 struct cgroup *self, *ancestor1, *invalid; in BPF_PROG() 184 int BPF_PROG(test_cgrp_from_id, struct cgroup *cgrp, const char *path) in BPF_PROG() [all …]
|
/linux-6.6.21/tools/perf/util/ |
D | cgroup.c | 51 int read_cgroup_id(struct cgroup *cgrp) in read_cgroup_id() 93 static struct cgroup *evlist__find_cgroup(struct evlist *evlist, const char *str) in evlist__find_cgroup() 109 static struct cgroup *cgroup__new(const char *name, bool do_open) in cgroup__new() 111 struct cgroup *cgroup = zalloc(sizeof(*cgroup)); in cgroup__new() local 113 if (cgroup != NULL) { in cgroup__new() 114 refcount_set(&cgroup->refcnt, 1); in cgroup__new() 116 cgroup->name = strdup(name); in cgroup__new() 117 if (!cgroup->name) in cgroup__new() 121 cgroup->fd = open_cgroup(name); in cgroup__new() 122 if (cgroup->fd == -1) in cgroup__new() [all …]
|
D | cgroup.h | 12 struct cgroup { struct 23 struct cgroup *cgroup__get(struct cgroup *cgroup); argument 24 void cgroup__put(struct cgroup *cgroup); 29 struct cgroup *evlist__findnew_cgroup(struct evlist *evlist, const char *name); 33 void evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup); 37 struct cgroup *cgroup__findnew(struct perf_env *env, uint64_t id, 39 struct cgroup *cgroup__find(struct perf_env *env, uint64_t id); 44 int read_cgroup_id(struct cgroup *cgrp); 46 static inline int read_cgroup_id(struct cgroup *cgrp __maybe_unused) in read_cgroup_id()
|
/linux-6.6.21/include/linux/ |
D | cgroup.h | 101 struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup, 103 struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup, 108 struct cgroup *cgroup_get_from_path(const char *path); 109 struct cgroup *cgroup_get_from_fd(int fd); 110 struct cgroup *cgroup_v1v2_get_from_fd(int fd); 113 int cgroup_transfer_tasks(struct cgroup *to, struct cgroup *from); 325 static inline u64 cgroup_id(const struct cgroup *cgrp) in cgroup_id() 350 static inline void cgroup_get(struct cgroup *cgrp) in cgroup_get() 355 static inline bool cgroup_tryget(struct cgroup *cgrp) in cgroup_tryget() 360 static inline void cgroup_put(struct cgroup *cgrp) in cgroup_put() [all …]
|
/linux-6.6.21/tools/bpf/bpftool/Documentation/ |
D | bpftool-cgroup.rst | 4 bpftool-cgroup 17 **bpftool** [*OPTIONS*] **cgroup** *COMMAND* 27 | **bpftool** **cgroup** { **show** | **list** } *CGROUP* [**effective**] 28 | **bpftool** **cgroup tree** [*CGROUP_ROOT*] [**effective**] 29 | **bpftool** **cgroup attach** *CGROUP* *ATTACH_TYPE* *PROG* [*ATTACH_FLAGS*] 30 | **bpftool** **cgroup detach** *CGROUP* *ATTACH_TYPE* *PROG* 31 | **bpftool** **cgroup help** 49 **bpftool cgroup { show | list }** *CGROUP* [**effective**] 50 List all programs attached to the cgroup *CGROUP*. 56 will execute for events within a cgroup. This includes [all …]
|
/linux-6.6.21/Documentation/admin-guide/cgroup-v1/ |
D | cgroups.rst | 6 Documentation/admin-guide/cgroup-v1/cpusets.rst 50 A *cgroup* associates a set of tasks with a set of parameters for one 56 schedules a resource or applies per-cgroup limits, but it may be 63 state attached to each cgroup in the hierarchy. Each hierarchy has 64 an instance of the cgroup virtual filesystem associated with it. 70 instance of the cgroup virtual file system, specify and query to 71 which cgroup a task is assigned, and list the task PIDs assigned to 72 a cgroup. Those creations and assignments only affect the hierarchy 73 associated with that instance of the cgroup file system. 77 cgroup support to provide new attributes for cgroups, such as [all …]
|
D | pids.rst | 8 The process number controller is used to allow a cgroup hierarchy to stop any 13 preventable in the scope of a cgroup hierarchy by allowing resource limiting of 14 the number of tasks in a cgroup. 20 pids.max (this is not available in the root cgroup for obvious reasons). The 21 number of processes currently in the cgroup is given by pids.current. 23 Organisational operations are not blocked by cgroup policies, so it is possible 25 be smaller than pids.current, or attaching enough processes to the cgroup such 26 that pids.current > pids.max. However, it is not possible to violate a cgroup 28 creation of a new process would cause a cgroup policy to be violated. 30 To set a cgroup to have no limit, set pids.max to "max". This is the default for [all …]
|
D | freezer-subsystem.rst | 5 The cgroup freezer is useful to batch job management system which start 9 whole. The cgroup freezer uses cgroups to describe the set of tasks to 13 The cgroup freezer will also be useful for checkpointing running groups 15 image of the tasks by attempting to force the tasks in a cgroup into a 51 In contrast, the cgroup freezer uses the kernel freezer code to 56 The cgroup freezer is hierarchical. Freezing a cgroup freezes all 57 tasks belonging to the cgroup and all its descendant cgroups. Each 58 cgroup has its own state (self-state) and the state inherited from the 59 parent (parent-state). Iff both states are THAWED, the cgroup is 62 The following cgroupfs files are created by cgroup freezer. [all …]
|
D | rdma.rst | 23 cgroup. 30 in other cgroup or kernel space ULPs may not even get chance to allocate any 40 RDMA cgroup allows limit configuration of resources. Rdma cgroup maintains 41 resource accounting per cgroup, per device using resource pool structure. 43 by rdma cgroup, which can be extended later if required. 45 This resource pool object is linked to the cgroup css. Typically there 46 are 0 to 4 resource pool instances per cgroup, per device in most use cases. 48 single cgroup may not be handled optimally, however there is no 53 always owned by the creator cgroup css. This allows process migration from one 54 to other cgroup without major complexity of transferring resource ownership; [all …]
|
D | net_cls.rst | 2 Network classifier cgroup 5 The Network classifier cgroup provides an interface to 23 mkdir /sys/fs/cgroup/net_cls 24 mount -t cgroup -onet_cls net_cls /sys/fs/cgroup/net_cls 25 mkdir /sys/fs/cgroup/net_cls/0 26 echo 0x100001 > /sys/fs/cgroup/net_cls/0/net_cls.classid 30 cat /sys/fs/cgroup/net_cls/0/net_cls.classid 40 tc filter add dev eth0 parent 10: protocol ip prio 10 handle 1: cgroup 44 iptables -A OUTPUT -m cgroup ! --cgroup 0x100001 -j DROP
|
/linux-6.6.21/include/trace/events/ |
D | cgroup.h | 3 #define TRACE_SYSTEM cgroup 54 DECLARE_EVENT_CLASS(cgroup, 56 TP_PROTO(struct cgroup *cgrp, const char *path), 78 DEFINE_EVENT(cgroup, cgroup_mkdir, 80 TP_PROTO(struct cgroup *cgrp, const char *path), 85 DEFINE_EVENT(cgroup, cgroup_rmdir, 87 TP_PROTO(struct cgroup *cgrp, const char *path), 92 DEFINE_EVENT(cgroup, cgroup_release, 94 TP_PROTO(struct cgroup *cgrp, const char *path), 99 DEFINE_EVENT(cgroup, cgroup_rename, [all …]
|
/linux-6.6.21/Documentation/bpf/libbpf/ |
D | program_types.rst | 24 | ``BPF_PROG_TYPE_CGROUP_DEVICE`` | ``BPF_CGROUP_DEVICE`` | ``cgroup/dev… 26 | ``BPF_PROG_TYPE_CGROUP_SKB`` | | ``cgroup/skb… 32 | ``BPF_PROG_TYPE_CGROUP_SOCKOPT`` | ``BPF_CGROUP_GETSOCKOPT`` | ``cgroup/get… 34 | | ``BPF_CGROUP_SETSOCKOPT`` | ``cgroup/set… 36 | ``BPF_PROG_TYPE_CGROUP_SOCK_ADDR`` | ``BPF_CGROUP_INET4_BIND`` | ``cgroup/bin… 38 | | ``BPF_CGROUP_INET4_CONNECT`` | ``cgroup/con… 40 | | ``BPF_CGROUP_INET4_GETPEERNAME`` | ``cgroup/get… 42 | | ``BPF_CGROUP_INET4_GETSOCKNAME`` | ``cgroup/get… 44 | | ``BPF_CGROUP_INET6_BIND`` | ``cgroup/bin… 46 | | ``BPF_CGROUP_INET6_CONNECT`` | ``cgroup/con… [all …]
|
/linux-6.6.21/kernel/cgroup/ |
D | cgroup-internal.h | 96 struct cgroup *cgrp; 184 static inline bool cgroup_is_dead(const struct cgroup *cgrp) in cgroup_is_dead() 189 static inline bool notify_on_release(const struct cgroup *cgrp) in notify_on_release() 222 bool cgroup_on_dfl(const struct cgroup *cgrp); 225 struct cgroup *task_cgroup_from_root(struct task_struct *task, 227 struct cgroup *cgroup_kn_lock_live(struct kernfs_node *kn, bool drain_offline); 229 int cgroup_path_ns_locked(struct cgroup *cgrp, char *buf, size_t buflen, 239 int cgroup_migrate_vet_dst(struct cgroup *dst_cgrp); 241 void cgroup_migrate_add_src(struct css_set *src_cset, struct cgroup *dst_cgrp, 247 int cgroup_attach_task(struct cgroup *dst_cgrp, struct task_struct *leader, [all …]
|
D | rstat.c | 13 static void cgroup_base_stat_flush(struct cgroup *cgrp, int cpu); 15 static struct cgroup_rstat_cpu *cgroup_rstat_cpu(struct cgroup *cgrp, int cpu) in cgroup_rstat_cpu() 29 __bpf_kfunc void cgroup_rstat_updated(struct cgroup *cgrp, int cpu) in cgroup_rstat_updated() 50 struct cgroup *parent = cgroup_parent(cgrp); in cgroup_rstat_updated() 91 static struct cgroup *cgroup_rstat_cpu_pop_updated(struct cgroup *pos, in cgroup_rstat_cpu_pop_updated() 92 struct cgroup *root, int cpu) in cgroup_rstat_cpu_pop_updated() 95 struct cgroup *parent; in cgroup_rstat_cpu_pop_updated() 130 struct cgroup **nextp; in cgroup_rstat_cpu_pop_updated() 166 __weak noinline void bpf_rstat_flush(struct cgroup *cgrp, in bpf_rstat_flush() 167 struct cgroup *parent, int cpu) in bpf_rstat_flush() [all …]
|
D | cgroup.c | 239 static int cgroup_apply_control(struct cgroup *cgrp); 240 static void cgroup_finalize_control(struct cgroup *cgrp, int ret); 243 static int cgroup_destroy_locked(struct cgroup *cgrp); 244 static struct cgroup_subsys_state *css_create(struct cgroup *cgrp, 249 struct cgroup *cgrp, struct cftype cfts[], 317 bool cgroup_on_dfl(const struct cgroup *cgrp) in cgroup_on_dfl() 353 static bool cgroup_has_tasks(struct cgroup *cgrp) in cgroup_has_tasks() 358 static bool cgroup_is_threaded(struct cgroup *cgrp) in cgroup_is_threaded() 364 static bool cgroup_is_mixable(struct cgroup *cgrp) in cgroup_is_mixable() 375 static bool cgroup_can_be_thread_root(struct cgroup *cgrp) in cgroup_can_be_thread_root() [all …]
|
/linux-6.6.21/Documentation/admin-guide/ |
D | cgroup-v2.rst | 11 conventions of cgroup v2. It describes all userland-visible aspects 12 of cgroup including core and specific controller behaviors. All 14 v1 is available under :ref:`Documentation/admin-guide/cgroup-v1/index.rst <cgroup-v1>`. 20 1-2. What is cgroup? 70 5.9-1 Miscellaneous cgroup Interface Files 75 5-N-1. CPU controller root cgroup process behaviour 76 5-N-2. IO controller root cgroup process behaviour 100 "cgroup" stands for "control group" and is never capitalized. The 102 qualifier as in "cgroup controllers". When explicitly referring to 106 What is cgroup? [all …]
|
/linux-6.6.21/tools/perf/tests/shell/ |
D | stat_bpf_counters_cgrp.sh | 15 if ! perf stat -a --bpf-counters --for-each-cgroup / true > /dev/null 2>&1; then 18 perf --no-pager stat -a --bpf-counters --for-each-cgroup / true || true 28 if [ -d /sys/fs/cgroup/system.slice ] && [ -d /sys/fs/cgroup/user.slice ]; then 34 find_cgroups_self_cgrp=$(grep perf_event /proc/self/cgroup | cut -d: -f3) 37 find_cgroups_self_cgrp=$(grep ^0: /proc/self/cgroup | cut -d: -f3) 51 …check_system_wide_counted_output=$(perf stat -a --bpf-counters --for-each-cgroup ${test_cgroups} -… 63 …check_cpu_list_counted_output=$(perf stat -C 0,1 --bpf-counters --for-each-cgroup ${test_cgroups} …
|