]>
Commit | Line | Data |
---|---|---|
cb35d258 | 1 | diff -NurpP --minimal linux-2.6.32.59/Documentation/scheduler/sched-cfs-hard-limits.txt linux-2.6.32.59-vs2.3.0.36.29.9/Documentation/scheduler/sched-cfs-hard-limits.txt |
2 | --- linux-2.6.32.59/Documentation/scheduler/sched-cfs-hard-limits.txt 1970-01-01 01:00:00.000000000 +0100 | |
3 | +++ linux-2.6.32.59-vs2.3.0.36.29.9/Documentation/scheduler/sched-cfs-hard-limits.txt 2011-06-10 13:03:02.000000000 +0200 | |
f1228c69 | 4 | @@ -0,0 +1,48 @@ |
5 | +CPU HARD LIMITS FOR CFS GROUPS | |
6 | +============================== | |
7 | + | |
8 | +1. Overview | |
9 | +2. Interface | |
10 | +3. Examples | |
11 | + | |
12 | +1. Overview | |
13 | +----------- | |
14 | + | |
15 | +CFS is a proportional share scheduler which tries to divide the CPU time | |
16 | +proportionately between tasks or groups of tasks (task group/cgroup) depending | |
17 | +on the priority/weight of the task or shares assigned to groups of tasks. | |
18 | +In CFS, a task/task group can get more than its share of CPU if there are | |
19 | +enough idle CPU cycles available in the system, due to the work conserving | |
20 | +nature of the scheduler. However in certain scenarios (like pay-per-use), | |
21 | +it is desirable not to provide extra time to a group even in the presence | |
22 | +of idle CPU cycles. This is where hard limiting can be of use. | |
23 | + | |
24 | +Hard limits for task groups can be set by specifying how much CPU runtime a | |
25 | +group can consume within a given period. If the group consumes more CPU time | |
26 | +than the runtime in a given period, it gets throttled. None of the tasks of | |
27 | +the throttled group gets to run until the runtime of the group gets refreshed | |
28 | +at the beginning of the next period. | |
29 | + | |
30 | +2. Interface | |
31 | +------------ | |
32 | + | |
33 | +Hard limit feature adds 2 cgroup files for CFS group scheduler: | |
34 | + | |
35 | +cfs_runtime_us: Hard limit for the group in microseconds. | |
36 | + | |
37 | +cfs_period_us: Time period in microseconds within which hard limits is | |
38 | +enforced. | |
39 | + | |
40 | +A group gets created with default values for runtime (infinite runtime which | |
41 | +means hard limits disabled) and period (0.5s). Each group can set its own | |
42 | +values for runtime and period independent of other groups in the system. | |
43 | + | |
44 | +3. Examples | |
45 | +----------- | |
46 | + | |
47 | +# mount -t cgroup -ocpu none /cgroups/ | |
48 | +# cd /cgroups | |
49 | +# mkdir 1 | |
50 | +# cd 1/ | |
51 | +# echo 250000 > cfs_runtime_us /* set a 250ms runtime or limit */ | |
52 | +# echo 500000 > cfs_period_us /* set a 500ms period */ | |
cb35d258 | 53 | diff -NurpP --minimal linux-2.6.32.59/Documentation/vserver/debug.txt linux-2.6.32.59-vs2.3.0.36.29.9/Documentation/vserver/debug.txt |
54 | --- linux-2.6.32.59/Documentation/vserver/debug.txt 1970-01-01 01:00:00.000000000 +0100 | |
55 | +++ linux-2.6.32.59-vs2.3.0.36.29.9/Documentation/vserver/debug.txt 2011-06-10 13:03:02.000000000 +0200 | |
f1228c69 | 56 | @@ -0,0 +1,154 @@ |
57 | + | |
58 | +debug_cvirt: | |
59 | + | |
60 | + 2 4 "vx_map_tgid: %p/%llx: %d -> %d" | |
61 | + "vx_rmap_tgid: %p/%llx: %d -> %d" | |
62 | + | |
63 | +debug_dlim: | |
64 | + | |
65 | + 0 1 "ALLOC (%p,#%d)%c inode (%d)" | |
66 | + "FREE (%p,#%d)%c inode" | |
67 | + 1 2 "ALLOC (%p,#%d)%c %lld bytes (%d)" | |
68 | + "FREE (%p,#%d)%c %lld bytes" | |
69 | + 2 4 "ADJUST: %lld,%lld on %ld,%ld [mult=%d]" | |
70 | + 3 8 "ext3_has_free_blocks(%p): %lu<%lu+1, %c, %u!=%u r=%d" | |
71 | + "ext3_has_free_blocks(%p): free=%lu, root=%lu" | |
72 | + "rcu_free_dl_info(%p)" | |
73 | + 4 10 "alloc_dl_info(%p,%d) = %p" | |
74 | + "dealloc_dl_info(%p)" | |
75 | + "get_dl_info(%p[#%d.%d])" | |
76 | + "put_dl_info(%p[#%d.%d])" | |
77 | + 5 20 "alloc_dl_info(%p,%d)*" | |
78 | + 6 40 "__hash_dl_info: %p[#%d]" | |
79 | + "__unhash_dl_info: %p[#%d]" | |
80 | + 7 80 "locate_dl_info(%p,#%d) = %p" | |
81 | + | |
82 | +debug_misc: | |
83 | + | |
84 | + 0 1 "destroy_dqhash: %p [#0x%08x] c=%d" | |
85 | + "new_dqhash: %p [#0x%08x]" | |
86 | + "vroot[%d]_clr_dev: dev=%p[%lu,%d:%d]" | |
87 | + "vroot[%d]_get_real_bdev: dev=%p[%lu,%d:%d]" | |
88 | + "vroot[%d]_set_dev: dev=%p[%lu,%d:%d]" | |
89 | + "vroot_get_real_bdev not set" | |
90 |