Lines Matching +full:no +full:- +full:ref +full:- +full:current +full:- +full:limit

1 .. _cgroup-v2:
11 conventions of cgroup v2. It describes all userland-visible aspects
14 v1 is available under :ref:`Documentation/admin-guide/cgroup-v1/index.rst <cgroup-v1>`.
19 1-1. Terminology
20 1-2. What is cgroup?
22 2-1. Mounting
23 2-2. Organizing Processes and Threads
24 2-2-1. Processes
25 2-2-2. Threads
26 2-3. [Un]populated Notification
27 2-4. Controlling Controllers
28 2-4-1. Enabling and Disabling
29 2-4-2. Top-down Constraint
30 2-4-3. No Internal Process Constraint
31 2-5. Delegation
32 2-5-1. Model of Delegation
33 2-5-2. Delegation Containment
34 2-6. Guidelines
35 2-6-1. Organize Once and Control
36 2-6-2. Avoid Name Collisions
38 3-1. Weights
39 3-2. Limits
40 3-3. Protections
41 3-4. Allocations
43 4-1. Format
44 4-2. Conventions
45 4-3. Core Interface Files
47 5-1. CPU
48 5-1-1. CPU Interface Files
49 5-2. Memory
50 5-2-1. Memory Interface Files
51 5-2-2. Usage Guidelines
52 5-2-3. Memory Ownership
53 5-3. IO
54 5-3-1. IO Interface Files
55 5-3-2. Writeback
56 5-3-3. IO Latency
57 5-3-3-1. How IO Latency Throttling Works
58 5-3-3-2. IO Latency Interface Files
59 5-3-4. IO Priority
60 5-4. PID
61 5-4-1. PID Interface Files
62 5-5. Cpuset
63 5.5-1. Cpuset Interface Files
64 5-6. Device
65 5-7. RDMA
66 5-7-1. RDMA Interface Files
67 5-8. HugeTLB
68 5.8-1. HugeTLB Interface Files
69 5-9. Misc
70 5.9-1 Miscellaneous cgroup Interface Files
71 5.9-2 Migration and Ownership
72 5-10. Others
73 5-10-1. perf_event
74 5-N. Non-normative information
75 5-N-1. CPU controller root cgroup process behaviour
76 5-N-2. IO controller root cgroup process behaviour
78 6-1. Basics
79 6-2. The Root and Views
80 6-3. Migration and setns(2)
81 6-4. Interaction with Other Namespaces
83 P-1. Filesystem Support for Writeback
86 R-1. Multiple Hierarchies
87 R-2. Thread Granularity
88 R-3. Competition Between Inner Nodes and Threads
89 R-4. Other Interface Issues
90 R-5. Controller Issues and Remedies
91 R-5-1. Memory
98 -----------
107 ---------------
113 cgroup is largely composed of two parts - the core and controllers.
129 hierarchical - if a controller is enabled on a cgroup, it affects all
131 sub-hierarchy of the cgroup. When a controller is enabled on a nested
141 --------
146 # mount -t cgroup2 none $MOUNT_POINT
156 is no longer referenced in its current hierarchy. Because per-cgroup
163 to inter-controller dependencies, other controllers may need to be
184 ignored on non-init namespace mounts. Please refer to the
196 Only populate memory.events with data for the current cgroup,
201 option is ignored on non-init namespace mounts.
209 behavior but is a mount-option to avoid regressing setups
222 * There is no HugeTLB pool management involved in the memory
223 controller. The pre-allocated pool does not belong to anyone.
233 still has pages available (but the cgroup limit is hit and
243 The option restores v1-like behavior of pids.events:max, that is only
251 --------------------------------
257 A child cgroup can be created by creating a sub-directory::
262 structure. Each cgroup has a read-writable interface file
264 belong to the cgroup one-per-line. The PIDs are not ordered and the
295 0::/test-cgroup/test-cgroup-nested
302 0::/test-cgroup/test-cgroup-nested (deleted)
327 different cgroups and are not subject to the no internal process
328 constraint - threaded controllers can be enabled on non-leaf cgroups
335 root cgroup is not subject to no internal process constraint, it can
338 The current operation mode or type of the cgroup is shown in the
352 - As the cgroup will join the parent's resource domain. The parent
355 - When the parent is an unthreaded domain, it must not have any domain
359 Topology-wise, a cgroup can be in an invalid state. Please consider
362 A (threaded domain) - B (threaded) - C (domain, just created)
377 threads in the cgroup. Except that the operations are per-thread
378 instead of per-process, "cgroup.threads" has the same format and
398 Because a threaded subtree is exempt from no internal process
400 between threads in a non-leaf cgroup and its child cgroups. Each
406 - cpu
407 - cpuset
408 - perf_event
409 - pids
412 --------------------------
414 Each non-root cgroup has a "cgroup.events" file which contains
415 "populated" field indicating whether the cgroup's sub-hierarchy has
416 live processes in it. Its value is 0 if there is no live process in
419 example, to start a clean-up operation after all processes of a given
420 sub-hierarchy have exited. The populated state updates and
421 notifications are recursive. Consider the following sub-hierarchy
425 A(4) - B(0) - C(1)
435 -----------------------
446 No controller is enabled by default. Controllers can be enabled and
449 # echo "+cpu +memory -io" > cgroup.subtree_control
458 Consider the following sub-hierarchy. The enabled controllers are
461 A(cpu,memory) - B(memory) - C()
475 controller interface files - anything which doesn't start with
479 Top-down Constraint
482 Resources are distributed top-down and a cgroup can further distribute
484 parent. This means that all non-root "cgroup.subtree_control" files
491 No Internal Process Constraint
494 Non-root cgroups can distribute domain resources to their children
509 refer to the Non-normative information section in the Controllers
512 Note that the restriction doesn't get in the way if there is no
522 ----------
544 delegated, the user can build sub-hierarchy under the directory,
548 happens in the delegated sub-hierarchy, nothing can escape the
552 cgroups in or nesting depth of a delegated sub-hierarchy; however,
559 A delegated sub-hierarchy is contained in the sense that processes
560 can't be moved into or out of the sub-hierarchy by the delegatee.
563 requiring the following conditions for a process with a non-root euid
567 - The writer must have write access to the "cgroup.procs" file.
569 - The writer must have write access to the "cgroup.procs" file of the
573 processes around freely in the delegated sub-hierarchy it can't pull
574 in from or push out to outside the sub-hierarchy.
580 ~~~~~~~~~~~~~ - C0 - C00
583 ~~~~~~~~~~~~~ - C1 - C10
590 will be denied with -EACCES.
595 is not reachable, the migration is rejected with -ENOENT.
599 ----------
607 inherent trade-offs between migration and various hot paths in terms
613 resource structure once on start-up. Dynamic adjustments to resource
646 -------
652 work-conserving. Due to the dynamic nature, this model is usually
660 valid and there is no reason to reject configuration changes or
667 .. _cgroupv2-limits-distributor:
670 ------
673 Limits can be over-committed - the sum of the limits of children can
678 As limits can be over-committed, all configuration combinations are
679 valid and there is no reason to reject configuration changes or
685 .. _cgroupv2-protections-distributor:
688 -----------
693 soft boundaries. Protections can also be over-committed in which case
700 As protections can be over-committed, all configuration combinations
701 are valid and there is no reason to reject configuration changes or
704 "memory.low" implements best-effort memory protection and is an
709 -----------
712 resource. Allocations can't be over-committed - the sum of the
716 Allocations are in the range [0, max] and defaults to 0, which is no
719 As allocations can't be over-committed, some configuration
724 "cpu.rt.max" hard-allocates realtime slices and is an example of this
732 ------
737 New-line separated values
745 (when read-only or multiple values can be written at once)
771 -----------
773 - Settings for a single feature should be contained in a single file.
775 - The root cgroup should be exempt from resource control and thus
778 - The default time unit is microseconds. If a different unit is ever
781 - A parts-per quantity should use a percentage decimal with at least
782 two digit fractional part - e.g. 13.40.
784 - If a controller implements weight based resource distribution, its
790 - If a controller implements an absolute resource guarantee and/or
791 limit, the interface files should be named "min" and "max"
793 guarantee and/or limit, the interface files should be named "low"
799 - If a setting has a configurable default value and keyed specific
813 # cat cgroup-example-interface-file
819 # echo 125 > cgroup-example-interface-file
823 # echo "default 125" > cgroup-example-interface-file
827 # echo "8:16 170" > cgroup-example-interface-file
831 # echo "8:0 default" > cgroup-example-interface-file
832 # cat cgroup-example-interface-file
836 - For events which are not very high frequency, an interface file
843 --------------------
848 A read-write single value file which exists on non-root
851 When read, it indicates the current type of the cgroup, which
854 - "domain" : A normal valid domain cgroup.
856 - "domain threaded" : A threaded domain cgroup which is
859 - "domain invalid" : A cgroup which is in an invalid state.
863 - "threaded" : A threaded cgroup which is a member of a
870 A read-write new-line separated values file which exists on
874 the cgroup one-per-line. The PIDs are not ordered and the
883 - It must have write access to the "cgroup.procs" file.
885 - It must have write access to the "cgroup.procs" file of the
888 When delegating a sub-hierarchy, write access to this file
896 A read-write new-line separated values file which exists on
900 the cgroup one-per-line. The TIDs are not ordered and the
909 - It must have write access to the "cgroup.threads" file.
911 - The cgroup that the thread is currently in must be in the
914 - It must have write access to the "cgroup.procs" file of the
917 When delegating a sub-hierarchy, write access to this file
921 A read-only space separated values file which exists on all
928 A read-write space separated values file which exists on all
935 Space separated list of controllers prefixed with '+' or '-'
937 name prefixed with '+' enables the controller and '-'
943 A read-only flat-keyed file which exists on non-root cgroups.
955 A read-write single value files. The default is "max".
962 A read-write single value files. The default is "max".
964 Maximum allowed descent depth below the current cgroup.
969 A read-only flat-keyed file with the following entries:
988 cgroup) at and beneath the current cgroup.
992 cgroup) at and beneath the current cgroup.
995 A read-write single value file which exists on non-root cgroups.
1018 create new sub-cgroups.
1021 A write-only single value file which exists in non-root cgroups.
1033 the whole thread-group.
1036 A read-write single value file that allowed values are "0" and "1".
1040 Writing "1" to the file will re-enable the cgroup PSI accounting.
1048 This may cause non-negligible overhead for some workloads when under
1050 be used to disable PSI accounting in the non-leaf cgroups.
1053 A read-write nested-keyed file.
1056 :ref:`Documentation/accounting/psi.rst <psi>` for details.
1061 .. _cgroup-v2-cpu:
1064 ---
1067 controller implements weight and absolute bandwidth limit models for
1095 A read-only flat-keyed file.
1100 - usage_usec
1101 - user_usec
1102 - system_usec
1106 - nr_periods
1107 - nr_throttled
1108 - throttled_usec
1109 - nr_bursts
1110 - burst_usec
1113 A read-write single value file which exists on non-root
1123 A read-write single value file which exists on non-root
1126 The nice value is in the range [-20, 19].
1132 the closest approximation of the current weight.
1135 A read-write two value file which exists on non-root cgroups.
1138 The maximum bandwidth limit. It's in the following format::
1143 $PERIOD duration. "max" for $MAX indicates no limit. If only
1147 A read-write single value file which exists on non-root
1153 A read-write nested-keyed file.
1156 :ref:`Documentation/accounting/psi.rst <psi>` for details.
1159 A read-write single value file which exists on non-root cgroups.
1160 The default is "0", i.e. no utilization boosting.
1170 the current value for the maximum utilization (limit), i.e.
1174 A read-write single value file which exists on non-root cgroups.
1175 The default is "max". i.e. no utilization capping
1177 The requested maximum utilization (limit) as a percentage rational
1185 A read-write single value file which exists on non-root cgroups.
1188 This is the cgroup analog of the per-task SCHED_IDLE sched policy.
1197 ------
1200 stateful and implements both limit and protection models. Due to the
1205 While not completely water-tight, all major memory usages by a given
1210 - Userland memory - page cache and anonymous memory.
1212 - Kernel data structures such as dentries and inodes.
1214 - TCP socket buffers.
1226 memory.current
1227 A read-only single value file which exists on non-root
1234 A read-write single value file which exists on non-root
1239 won't be reclaimed under any conditions. If there is no
1260 A read-write single value file which exists on non-root
1263 Best-effort memory protection. If the memory usage of a
1265 memory won't be reclaimed unless there is no reclaimable
1283 A read-write single value file which exists on non-root
1286 Memory usage throttle limit. If a cgroup's usage goes
1290 Going over the high limit never invokes the OOM killer and
1291 under extreme conditions the limit may be breached. The high
1292 limit should be used in scenarios where an external process
1297 A read-write single value file which exists on non-root
1300 Memory usage hard limit. This is the main mechanism to limit
1302 this limit and can't be reduced, the OOM killer is invoked in
1304 over the limit temporarily.
1306 In default configuration regular 0-order allocations always
1307 succeed unless OOM killer chooses current task as a victim.
1311 as -ENOMEM or silently ignore in cases like disk readahead.
1314 A write-only nested-keyed file which exists for all cgroups.
1325 specified amount, -EAGAIN is returned.
1346 A read-write single value file which exists on non-root cgroups.
1351 A write of any non-empty string to this file resets it to the
1352 current memory usage for subsequent reads through the same
1356 A read-write single value file which exists on non-root
1366 Tasks with the OOM protection (oom_score_adj set to -1000)
1374 A read-only flat-keyed file which exists on non-root cgroups.
1388 boundary is over-committed.
1394 cgroup whose memory usage is capped by the high limit
1405 reached the limit and allocation was about to fail.
1408 considered as an option, e.g. for failed high-order
1424 A read-only flat-keyed file which exists on non-root cgroups.
1427 types of memory, type-specific details, and other information
1436 If the entry has no per-node counter (or not show in the
1437 memory.numa_stat). We use 'npn' (non-per-node) as the tag
1465 Amount of memory used for storing per-cpu kernel
1475 Amount of cached filesystem data that is swap-backed,
1512 Amount of memory, swap-backed and filesystem-backed,
1518 the value for the foo counter, since the foo counter is type-based, not
1519 list-based.
1530 Amount of memory used for storing in-kernel data
1650 A read-only nested-keyed file which exists on non-root cgroups.
1653 types of memory, type-specific details, and other information
1674 memory.swap.current
1675 A read-only single value file which exists on non-root
1682 A read-write single value file which exists on non-root
1685 Swap usage throttle limit. If a cgroup's swap usage exceeds
1686 this limit, all its further allocations will be throttled to
1687 allow userspace to implement custom out-of-memory procedures.
1689 This limit marks a point of no return for the cgroup. It is NOT
1695 Healthy workloads are not expected to reach this limit.
1698 A read-write single value file which exists on non-root cgroups.
1703 A write of any non-empty string to this file resets it to the
1704 current memory usage for subsequent reads through the same
1708 A read-write single value file which exists on non-root
1711 Swap usage hard limit. If a cgroup's swap usage reaches this
1712 limit, anonymous memory of the cgroup will not be swapped out.
1715 A read-only flat-keyed file which exists on non-root cgroups.
1731 because of running out of swap system-wide or max
1732 limit.
1734 When reduced under the current usage, the existing swap
1736 higher than the limit for an extended period of time. This
1739 memory.zswap.current
1740 A read-only single value file which exists on non-root
1747 A read-write single value file which exists on non-root
1750 Zswap usage hard limit. If a cgroup's zswap pool reaches this
1751 limit, it will refuse to take any more stores before existing
1755 A read-write single value file. The default value is "1".
1769 This setting has no effect if zswap is disabled, and swapping
1773 A read-only nested-keyed file.
1776 :ref:`Documentation/accounting/psi.rst <psi>` for details.
1783 Over-committing on high limit (sum of high limits > available memory)
1787 Because breach of the high limit doesn't trigger the OOM killer but
1797 pressure - how much the workload is being impacted due to lack of
1798 memory - is necessary to determine whether a workload needs more
1812 To which cgroup the area will be charged is in-deterministic; however,
1823 --
1827 limit distribution; however, weight based distribution is available
1828 only if cfq-iosched is in use and neither scheme is available for
1829 blk-mq devices.
1836 A read-only nested-keyed file.
1856 A read-write nested-keyed file which exists only on the root
1868 enable Weight-based control enable
1900 devices which show wide temporary behavior changes - e.g. a
1911 A read-write nested-keyed file which exists only on the root
1924 model The cost model in use - "linear"
1950 generate device-specific coefficients.
1953 A read-write flat-keyed file which exists on non-root cgroups.
1973 A read-write nested-keyed file which exists on non-root
1976 BPS and IOPS based IO limit. Lines are keyed by $MAJ:$MIN
1987 When writing, any number of nested key-value pairs can be
1989 to remove a specific limit. If the same key is specified
1993 delayed if limit is reached. Temporary bursts are allowed.
1995 Setting read limit at 2M BPS and write at 120 IOPS for 8:16::
2003 Write IOPS limit can be removed by writing the following::
2012 A read-only nested-keyed file.
2015 :ref:`Documentation/accounting/psi.rst <psi>` for details.
2031 writes out dirty pages for the memory domain. Both system-wide and
2032 per-cgroup dirty memory states are examined and the more restrictive
2070 memory controller and system-wide clean memory.
2103 your real setting, setting at 10-15% higher than the value in io.stat.
2113 - Queue depth throttling. This is the number of outstanding IO's a group is
2114 allowed to have. We will clamp down relatively quickly, starting at no limit
2117 - Artificial delay induction. There are certain types of IO that cannot be
2125 limit the individual delay events to 1 second at a time.
2144 This is the current queue depth for the group.
2164 no-change
2167 promote-to-rt
2168 For requests that have a non-RT I/O priority class, change it into RT.
2172 restrict-to-be
2182 none-to-rt
2183 Deprecated. Just an alias for promote-to-rt.
2187 +----------------+---+
2188 | no-change | 0 |
2189 +----------------+---+
2190 | promote-to-rt | 1 |
2191 +----------------+---+
2192 | restrict-to-be | 2 |
2193 +----------------+---+
2195 +----------------+---+
2199 +-------------------------------+---+
2201 +-------------------------------+---+
2202 | IOPRIO_CLASS_RT (real-time) | 1 |
2203 +-------------------------------+---+
2205 +-------------------------------+---+
2207 +-------------------------------+---+
2211 - If I/O priority class policy is promote-to-rt, change the request I/O
2214 - If I/O priority class policy is not promote-to-rt, translate the I/O priority
2220 ---
2223 new tasks from being fork()'d or clone()'d after a specified limit is
2239 A read-write single value file which exists on non-root
2242 Hard limit of number of processes.
2244 pids.current
2245 A read-only single value file which exists on non-root cgroups.
2251 A read-only single value file which exists on non-root cgroups.
2257 A read-only flat-keyed file which exists on non-root cgroups. Unless
2263 limit (see also pids_localevents).
2271 possible to have pids.current > pids.max. This can be done by either
2272 setting the limit to be smaller than pids.current, or attaching enough
2273 processes to the cgroup such that pids.current is larger than
2275 through fork() or clone(). These will return -EAGAIN if the creation
2280 ------
2284 specified in the cpuset interface files in a task's current cgroup.
2287 memory placement to reduce cross-node memory access and contention
2298 A read-write multiple values file which exists on non-root
2299 cpuset-enabled cgroups.
2306 The CPU numbers are comma-separated numbers or ranges.
2310 0-4,6,8-10
2313 setting as the nearest cgroup ancestor with a non-empty
2320 A read-only multiple values file which exists on all
2321 cpuset-enabled cgroups.
2325 tasks within the current cgroup.
2337 A read-write multiple values file which exists on non-root
2338 cpuset-enabled cgroups.
2345 The memory node numbers are comma-separated numbers or ranges.
2349 0-1,3
2352 setting as the nearest cgroup ancestor with a non-empty
2359 Setting a non-empty value to "cpuset.mems" causes memory of
2371 A read-only multiple values file which exists on all
2372 cpuset-enabled cgroups.
2376 be used by tasks within the current cgroup.
2387 A read-write multiple values file which exists on non-root
2388 cpuset-enabled cgroups.
2421 A read-only multiple values file which exists on all non-root
2422 cpuset-enabled cgroups.
2434 A read-only and root cgroup only multiple values file.
2437 isolated partitions. It will be empty if no isolated partition
2441 A read-write single value file which exists on non-root
2442 cpuset-enabled cgroups. This flag is owned by the parent cgroup
2448 "member" Non-root member of a partition
2453 A cpuset partition is a collection of cpuset-enabled cgroups with
2460 There are two types of partitions - local and remote. A local
2476 be changed. All other non-root cgroups start out as "member".
2478 When set to "root", the current cgroup is the root of a new
2489 two possible states - valid or invalid. An invalid partition
2500 "member" Non-root member of a partition
2517 no task associated with this partition.
2527 A valid non-root parent partition may distribute out all its CPUs
2528 to its child local partitions when there is no task associated
2546 A user can pre-configure certain CPUs to an isolated state
2553 -----------------
2559 Cgroup v2 device controller has no interface files and is implemented
2564 on the return value the attempt will succeed or fail with -EPERM.
2569 If the program returns 0, the attempt fails with -EPERM, otherwise it
2577 ----
2586 A readwrite nested-keyed file that exists for all the cgroups
2587 except root that describes current configured resource limit
2592 limit that can be distributed.
2606 rdma.current
2607 A read-only file that describes current resource usage.
2616 -------
2618 The HugeTLB controller allows to limit the HugeTLB usage per control group and
2619 enforces the controller limit during page fault.
2624 hugetlb.<hugepagesize>.current
2625 Show current usage for "hugepagesize" hugetlb. It exists for all
2629 Set/show the hard limit of "hugepagesize" hugetlb usage.
2633 A read-only flat-keyed file which exists on non-root cgroups.
2636 The number of allocation failure due to HugeTLB limit
2646 use hugetlb pages are included. The per-node values are in bytes.
2649 ----
2671 A read-only flat-keyed file shown only in the root cgroup. It shows
2679 misc.current
2680 A read-only flat-keyed file shown in the all cgroups. It shows
2681 the current usage of the resources in the cgroup and its children.::
2683 $ cat misc.current
2688 A read-only flat-keyed file shown in all cgroups. It shows the
2697 A read-write flat-keyed file shown in the non root cgroups. Allowed
2704 Limit can be set by::
2708 Limit can be set to max by::
2716 A read-only flat-keyed file which exists on non-root cgroups. The
2739 ------
2750 Non-normative information
2751 -------------------------
2767 appropriately so the neutral - nice 0 - value is 100 instead of 1024).
2783 ------
2802 The path '/batchjobs/container_id1' can be considered as system-data
2807 # ls -l /proc/self/ns/cgroup
2808 lrwxrwxrwx 1 root root 0 2014-07-15 10:37 /proc/self/ns/cgroup -> cgroup:[4026531835]
2814 # ls -l /proc/self/ns/cgroup
2815 lrwxrwxrwx 1 root root 0 2014-07-15 10:35 /proc/self/ns/cgroup -> cgroup:[4026532183]
2819 When some thread from a multi-threaded process unshares its cgroup
2831 ------------------
2842 # ~/unshare -c # unshare cgroupns in some cgroup
2850 Each process gets its namespace-specific view of "/proc/$PID/cgroup"
2881 ----------------------
2900 (a) the process has CAP_SYS_ADMIN against its current user namespace
2904 No implicit cgroup changes happen with attaching to another cgroup
2910 ---------------------------------
2913 running inside a non-init cgroup namespace::
2915 # mount -t cgroup2 none $MOUNT_POINT
2922 the view of cgroup hierarchy by namespace-private cgroupfs mount
2935 --------------------------------
2938 address_space_operations->writepage[s]() to annotate bio's using the
2955 super_block by setting SB_I_CGROUPWB in ->s_iflags. This allows for
2963 entry, may lead to priority inversion. There is no one easy solution
2972 - Multiple hierarchies including named ones are not supported.
2974 - All v1 mount options are not supported.
2976 - The "tasks" file is removed and "cgroup.procs" is not sorted.
2978 - "cgroup.clone_children" is removed.
2980 - /proc/cgroups is meaningless for v2. Use "cgroup.controllers" or
2988 --------------------
3016 There was no limit on how many hierarchies there might be, which meant
3041 ------------------
3049 Generally, in-process knowledge is available only to the process
3050 itself; thus, unlike service-level organization of processes,
3057 sub-hierarchies and control resource distributions along them. This
3058 effectively raised cgroup to the status of a syscall-like API exposed
3066 and unusual but also inherently racy. There is no conventional way to
3068 that the process would actually be operating on its own sub-hierarchy.
3072 system-management pseudo filesystem. cgroup ended up with interface
3075 individual applications through the ill-defined delegation mechanism
3085 -------------------------------------------
3090 different types of entities competed and there was no obvious way to
3096 cycles and the number of internal threads fluctuated - the ratios
3112 clearly defined. There were attempts to add ad-hoc behaviors and
3126 ----------------------
3130 was how an empty cgroup was notified - a userland helper binary was
3133 to in-kernel event delivery filtering mechanism further complicating
3142 There also was no consistency across controllers. When a new cgroup
3155 ------------------------------
3160 The original lower boundary, the soft limit, is defined as a limit
3162 global reclaim prefers is opt-in, rather than opt-out. The costs for
3165 basic desirable behavior. First off, the soft limit has no
3169 the soft limit reclaim pass is so aggressive that it not just
3172 becomes self-defeating.
3174 The memory.low boundary on the other hand is a top-down allocated
3180 The original high boundary, the hard limit, is defined as a strict
3181 limit that can not budge, even if the OOM killer has to be called.
3185 strict upper limit requires either a fairly accurate prediction of the
3186 working set size or adding slack to the limit. Since working set size
3188 OOM kills, most users tend to err on the side of a looser limit and
3205 limit this type of spillover and ultimately contain buggy or even
3208 Setting the original memory.limit_in_bytes below the current usage was
3210 limit setting to fail. memory.max on the other hand will first set the
3211 limit to prevent new charges, and then reclaim and OOM kill until the
3212 new limit is met - or the task writing to memory.max is killed.
3221 groups can sabotage swapping by other means - such as referencing its
3222 anonymous memory in a tight loop - and an admin can not assume full
3227 that cgroup controllers should account and limit specific physical