diff options
Diffstat (limited to 'Documentation/cgroup-v1/cpuacct.txt')
-rw-r--r-- | Documentation/cgroup-v1/cpuacct.txt | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Documentation/cgroup-v1/cpuacct.txt b/Documentation/cgroup-v1/cpuacct.txt new file mode 100644 index 000000000000..9d73cc0cadb9 --- /dev/null +++ b/Documentation/cgroup-v1/cpuacct.txt | |||
@@ -0,0 +1,49 @@ | |||
1 | CPU Accounting Controller | ||
2 | ------------------------- | ||
3 | |||
4 | The CPU accounting controller is used to group tasks using cgroups and | ||
5 | account the CPU usage of these groups of tasks. | ||
6 | |||
7 | The CPU accounting controller supports multi-hierarchy groups. An accounting | ||
8 | group accumulates the CPU usage of all of its child groups and the tasks | ||
9 | directly present in its group. | ||
10 | |||
11 | Accounting groups can be created by first mounting the cgroup filesystem. | ||
12 | |||
13 | # mount -t cgroup -ocpuacct none /sys/fs/cgroup | ||
14 | |||
15 | With the above step, the initial or the parent accounting group becomes | ||
16 | visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in | ||
17 | the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup. | ||
18 | /sys/fs/cgroup/cpuacct.usage gives the CPU time (in nanoseconds) obtained | ||
19 | by this group which is essentially the CPU time obtained by all the tasks | ||
20 | in the system. | ||
21 | |||
22 | New accounting groups can be created under the parent group /sys/fs/cgroup. | ||
23 | |||
24 | # cd /sys/fs/cgroup | ||
25 | # mkdir g1 | ||
26 | # echo $$ > g1/tasks | ||
27 | |||
28 | The above steps create a new group g1 and move the current shell | ||
29 | process (bash) into it. CPU time consumed by this bash and its children | ||
30 | can be obtained from g1/cpuacct.usage and the same is accumulated in | ||
31 | /sys/fs/cgroup/cpuacct.usage also. | ||
32 | |||
33 | cpuacct.stat file lists a few statistics which further divide the | ||
34 | CPU time obtained by the cgroup into user and system times. Currently | ||
35 | the following statistics are supported: | ||
36 | |||
37 | user: Time spent by tasks of the cgroup in user mode. | ||
38 | system: Time spent by tasks of the cgroup in kernel mode. | ||
39 | |||
40 | user and system are in USER_HZ unit. | ||
41 | |||
42 | cpuacct controller uses percpu_counter interface to collect user and | ||
43 | system times. This has two side effects: | ||
44 | |||
45 | - It is theoretically possible to see wrong values for user and system times. | ||
46 | This is because percpu_counter_read() on 32bit systems isn't safe | ||
47 | against concurrent writes. | ||
48 | - It is possible to see slightly outdated values for user and system times | ||
49 | due to the batch processing nature of percpu_counter. | ||