Home
last modified time | relevance | path

Searched refs:cgroup (Results 1 – 25 of 266) sorted by relevance

1234567891011

/linux/tools/testing/selftests/cgroup/
H A Dtest_freezer.c27 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 …]
H A Dtest_kill.c21 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 …]
H A Dcgroup_util.h
H A Dcgroup_util.c
/linux/tools/testing/selftests/cgroup/lib/
H A Dcgroup_util.c77 char *cg_control(const char *cgroup, const char *control) in cg_control() argument
79 size_t len = strlen(cgroup) + strlen(control) + 2; in cg_control()
82 snprintf(ret, len, "%s/%s", cgroup, control); in cg_control()
88 int cg_read(const char *cgroup, const char *control, char *buf, size_t len) in cg_read() argument
93 snprintf(path, sizeof(path), "%s/%s", cgroup, control); in cg_read()
99 int cg_read_strcmp(const char *cgroup, const char *control, in cg_read_strcmp() argument
116 if (cg_read(cgroup, control, buf, size)) { in cg_read_strcmp()
126 int cg_read_strstr(const char *cgroup, const char *control, const char *needle) in cg_read_strstr() argument
130 if (cg_read(cgroup, control, buf, sizeof(buf))) in cg_read_strstr()
136 long cg_read_long(const char *cgroup, cons argument
156 cg_read_key_long(const char * cgroup,const char * control,const char * key) cg_read_key_long() argument
171 cg_read_lc(const char * cgroup,const char * control) cg_read_lc() argument
188 cg_write(const char * cgroup,const char * control,char * buf) cg_write() argument
202 cg_open(const char * cgroup,const char * control,int flags) cg_open() argument
210 cg_write_numeric(const char * cgroup,const char * control,long value) cg_write_numeric() argument
273 cg_create(const char * cgroup) cg_create() argument
278 cg_wait_for_proc_count(const char * cgroup,int count) cg_wait_for_proc_count() argument
303 cg_killall(const char * cgroup) cg_killall() argument
331 cg_destroy(const char * cgroup) cg_destroy() argument
351 cg_enter(const char * cgroup,int pid) cg_enter() argument
359 cg_enter_current(const char * cgroup) cg_enter_current() argument
364 cg_enter_current_thread(const char * cgroup) cg_enter_current_thread() argument
369 cg_run(const char * cgroup,int (* fn)(const char * cgroup,void * arg),void * arg) cg_run() argument
370 cg_run(const char * cgroup,int (* fn)(const char * cgroup,void * arg),void * arg) cg_run() argument
467 clone_into_cgroup_run_nowait(const char * cgroup,int (* fn)(const char * cgroup,void * arg),void * arg) clone_into_cgroup_run_nowait() argument
468 clone_into_cgroup_run_nowait(const char * cgroup,int (* fn)(const char * cgroup,void * arg),void * arg) clone_into_cgroup_run_nowait() argument
486 cg_run_nowait(const char * cgroup,int (* fn)(const char * cgroup,void * arg),void * arg) cg_run_nowait() argument
487 cg_run_nowait(const char * cgroup,int (* fn)(const char * cgroup,void * arg),void * arg) cg_run_nowait() argument
562 clone_into_cgroup_run_wait(const char * cgroup) clone_into_cgroup_run_wait() argument
587 __prepare_for_wait(const char * cgroup,const char * filename) __prepare_for_wait() argument
604 cg_prepare_for_wait(const char * cgroup) cg_prepare_for_wait() argument
609 memcg_prepare_for_wait(const char * cgroup) memcg_prepare_for_wait() argument
[all...]
/linux/tools/testing/selftests/cgroup/lib/include/
H A Dcgroup_util.h16 #define CG_THREADS_FILE (!cg_test_v1_named ? "cgroup.threads" : "tasks")
57 extern char *cg_control(const char *cgroup, const char *control);
58 extern int cg_create(const char *cgroup);
59 extern int cg_destroy(const char *cgroup);
60 extern int cg_read(const char *cgroup, const char *control,
62 extern int cg_read_strcmp(const char *cgroup, const char *control,
64 extern int cg_read_strstr(const char *cgroup, const char *control,
66 extern long cg_read_long(const char *cgroup, const char *control);
68 long cg_read_key_long(const char *cgroup, const char *control, const char *key);
69 long cg_read_key_long_poll(const char *cgroup, cons
[all...]
/linux/tools/testing/selftests/bpf/progs/
H A Dcgrp_kfunc_failure.c20 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 …]
H A Dcgroup_read_xattr.c15 static __always_inline void read_xattr(struct cgroup *cgroup) in read_xattr() argument
20 bpf_cgroup_read_xattr(cgroup, "user.bpf_test", in read_xattr()
29 struct cgroup *cgrp; in BPF_PROG()
45 struct cgroup *cgrp; in BPF_PROG()
62 struct cgroup *cgrp; in BPF_PROG()
69 read_xattr(css->cgroup); in BPF_PROG()
81 struct cgroup *cgrp; in BPF_PROG()
88 read_xattr(css->cgroup); in BPF_PROG()
100 struct cgroup *cgr in BPF_PROG()
[all...]
H A Dcgrp_kfunc_common.h13 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()
H A Dcgrp_kfunc_success.c17 * TP_PROTO(struct cgroup *cgrp, const char *path),
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 *sel in BPF_PROG()
[all...]
H A Diters_css_task.c13 struct cgroup *bpf_cgroup_acquire(struct cgroup *p) __ksym;
14 struct cgroup *bpf_cgroup_from_id(u64 cgid) __ksym;
15 void bpf_cgroup_release(struct cgroup *p) __ksym;
28 struct cgroup *cgrp; in BPF_PROG()
50 static inline u64 cgroup_id(struct cgroup *cgrp) in cgroup_id()
59 struct cgroup *cgrp = ctx->cgroup; in cgroup_id_printer()
89 struct cgroup *cgrp = bpf_cgroup_from_id(cgrp_id); in BPF_PROG()
/linux/include/linux/
H A Dcgroup.h108 struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup,
110 struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup,
115 struct cgroup *cgroup_get_from_path(const char *path);
116 struct cgroup *cgroup_get_from_fd(int fd);
117 struct cgroup *cgroup_v1v2_get_from_fd(int fd);
120 int cgroup_transfer_tasks(struct cgroup *to, struct cgroup *from);
334 static inline u64 cgroup_id(const struct cgroup *cgrp) in cgroup_id()
366 if (css == &css->cgroup->self) { in css_is_self()
375 static inline void cgroup_get(struct cgroup *cgrp) in cgroup_get()
380 static inline bool cgroup_tryget(struct cgroup *cgrp) in cgroup_tryget()
[all …]
/linux/tools/perf/util/
H A Dcgroup.c67 int read_cgroup_id(struct cgroup *cgrp) in read_cgroup_id()
102 static struct cgroup *evlist__find_cgroup(struct evlist *evlist, const char *str) in evlist__find_cgroup()
118 struct cgroup *cgroup__new(const char *name, bool do_open) in cgroup__new()
120 struct cgroup *cgroup = zalloc(sizeof(*cgroup)); in cgroup__new() local
122 if (cgroup != NULL) { in cgroup__new()
123 refcount_set(&cgroup->refcnt, 1); in cgroup__new()
125 cgroup->name = strdup(name); in cgroup__new()
126 if (!cgroup->name) in cgroup__new()
130 cgroup->fd = open_cgroup(name); in cgroup__new()
131 if (cgroup->fd == -1) in cgroup__new()
[all …]
H A Dcgroup.h12 struct cgroup { struct
23 struct cgroup *cgroup__get(struct cgroup *cgroup); argument
24 void cgroup__put(struct cgroup *cgroup);
29 struct cgroup *cgroup__new(const char *name, bool do_open);
30 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);
40 struct cgroup *__cgroup__find(struct rb_root *root, uint64_t id);
45 int read_cgroup_id(struct cgroup *cgrp);
[all …]
/linux/Documentation/admin-guide/cgroup-v1/
H A Dcgroups.rst6 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 …]
H A Dpids.rst8 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 …]
H A Drdma.rst23 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 …]
H A Dnet_cls.rst2 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
H A Dmemcg_test.rst13 (*) Topics on API should be in Documentation/admin-guide/cgroup-v1/memory.rst)
168 mount -t cgroup -o cpuset none /opt/cpuset
218 mkdir /opt/cgroup/01/child_a
219 mkdir /opt/cgroup/01/child_b
227 /opt/cgroup/01/child_a/child_aa
228 /opt/cgroup/01/child_b/child_bb
229 /opt/cgroup/01/child_c
237 race and lock dependency with other cgroup subsystems.
241 # mount -t cgroup none /cgroup -o cpuset,memory,cpu,devices
256 # mount -t cgroup none /cgroup -o memory
[all …]
H A Dcpuacct.rst12 Accounting groups can be created by first mounting the cgroup filesystem::
14 # mount -t cgroup -ocpuacct none /sys/fs/cgroup
17 visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in
18 the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup.
19 /sys/fs/cgroup/cpuacct.usage gives the CPU time (in nanoseconds) obtained
23 New accounting groups can be created under the parent group /sys/fs/cgroup::
25 # cd /sys/fs/cgroup
32 /sys/fs/cgroup/cpuacct.usage also.
35 CPU time obtained by the cgroup into user and system times. Currently
38 user: Time spent by tasks of the cgroup in user mode.
[all …]
/linux/tools/bpf/bpftool/Documentation/
H A Dbpftool-cgroup.rst4 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**
52 bpftool cgroup { show | list } *CGROUP* [effective]
53 List all programs attached to the cgroup *CGROUP*.
59 for events within a cgroup. This includes inherited along with attached
[all …]
/linux/kernel/bpf/
H A Dcgroup_iter.c5 #include <linux/cgroup.h>
9 #include "../cgroup/cgroup-internal.h" /* cgroup_mutex and cgroup_is_dead */
11 /* cgroup_iter provides five modes of traversal to the cgroup hierarchy.
13 * 1. Walk the descendants of a cgroup in pre-order.
14 * 2. Walk the descendants of a cgroup in post-order.
15 * 3. Walk the ancestors of a cgroup.
16 * 4. Show the given cgroup only.
17 * 5. Walk the children of a given parent cgroup.
20 * post-order. For walking ancestors, the iter walks up from a cgroup t
160 BTF_ID_LIST_GLOBAL_SINGLE(bpf_cgroup_btf_id,struct,cgroup) BTF_ID_LIST_GLOBAL_SINGLE() argument
[all...]
/linux/kernel/cgroup/
H A Dcgroup.c276 static int cgroup_apply_control(struct cgroup *cgrp);
277 static void cgroup_finalize_control(struct cgroup *cgrp, int ret);
280 static int cgroup_destroy_locked(struct cgroup *cgrp);
281 static struct cgroup_subsys_state *css_create(struct cgroup *cgrp,
286 struct cgroup *cgrp, struct cftype cfts[],
355 bool cgroup_on_dfl(const struct cgroup *cgrp) in cgroup_on_dfl()
391 static bool cgroup_has_tasks(struct cgroup *cgrp) in cgroup_has_tasks()
396 static bool cgroup_is_threaded(struct cgroup *cgrp) in cgroup_is_threaded()
402 static bool cgroup_is_mixable(struct cgroup *cgrp) in cgroup_is_mixable()
413 static bool cgroup_can_be_thread_root(struct cgroup *cgrp) in cgroup_can_be_thread_root()
[all …]
H A Dcgroup-internal.h5 #include <linux/cgroup.h>
43 * The cgroup filesystem superblock creation/mount context.
89 * A cgroup can be associated with multiple css_sets as different tasks may
97 /* the cgroup and css_set this link associates */
98 struct cgroup *cgrp;
179 * for_each_subsys - iterate all enabled cgroup subsystems
187 static inline bool cgroup_is_dead(const struct cgroup *cgrp) in cgroup_is_dead()
192 static inline bool notify_on_release(const struct cgroup *cgrp) in notify_on_release()
225 bool cgroup_on_dfl(const struct cgroup *cgrp);
228 struct cgroup *task_cgroup_from_roo
[all...]
H A Dfreezer.c15 static bool cgroup_update_frozen_flag(struct cgroup *cgrp, bool frozen) in cgroup_update_frozen_flag()
36 static void cgroup_propagate_frozen(struct cgroup *cgrp, bool frozen) in cgroup_propagate_frozen()
66 void cgroup_update_frozen(struct cgroup *cgrp) in cgroup_update_frozen()
86 static void cgroup_inc_frozen_cnt(struct cgroup *cgrp) in cgroup_inc_frozen_cnt()
94 static void cgroup_dec_frozen_cnt(struct cgroup *cgrp) in cgroup_dec_frozen_cnt()
106 struct cgroup *cgrp; in cgroup_enter_frozen()
130 struct cgroup *cgrp; in cgroup_leave_frozen()
174 static void cgroup_do_freeze(struct cgroup *cgrp, bool freeze, u64 ts_nsec) in cgroup_do_freeze()
226 struct cgroup *src, struct cgroup *dst) in cgroup_freezer_migrate_task()
263 void cgroup_freeze(struct cgroup *cgrp, bool freeze) in cgroup_freeze()
[all …]

1234567891011