Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bf024e6 authored by Johannes Weiner's avatar Johannes Weiner Committed by Tejun Heo
Browse files

cgroup: put controller Kconfig options in meaningful order



To make it easier to quickly find what's needed list the basic
resource controllers of cgroup2 first - io, memory, cpu - while
pushing the more exotic and/or legacy controllers to the bottom.

tj: Removed spurious "&& CGROUPS" from CGROUP_PERF as suggested by Li.

Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
Acked-by: default avatarZefan Li <lizefan@huawei.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent a0166ec4
Loading
Loading
Loading
Loading
+107 −107
Original line number Diff line number Diff line
@@ -940,64 +940,6 @@ menuconfig CGROUPS

if CGROUPS

config CGROUP_DEBUG
	bool "Example controller"
	default n
	help
	  This option enables a simple controller that exports
	  debugging information about the cgroups framework.

	  Say N.

config CGROUP_FREEZER
	bool "Freezer controller"
	help
	  Provides a way to freeze and unfreeze all tasks in a
	  cgroup.

config CGROUP_PIDS
	bool "PIDs controller"
	help
	  Provides enforcement of process number limits in the scope of a
	  cgroup. Any attempt to fork more processes than is allowed in the
	  cgroup will fail. PIDs are fundamentally a global resource because it
	  is fairly trivial to reach PID exhaustion before you reach even a
	  conservative kmemcg limit. As a result, it is possible to grind a
	  system to halt without being limited by other cgroup policies. The
	  PIDs cgroup subsystem is designed to stop this from happening.

	  It should be noted that organisational operations (such as attaching
	  to a cgroup hierarchy will *not* be blocked by the PIDs subsystem),
	  since the PIDs limit only affects a process's ability to fork, not to
	  attach to a cgroup.

config CGROUP_DEVICE
	bool "Device controller"
	help
	  Provides a cgroup controller implementing whitelists for
	  devices which a process in the cgroup can mknod or open.

config CPUSETS
	bool "Cpuset controller"
	help
	  This option will let you create and manage CPUSETs which
	  allow dynamically partitioning a system into sets of CPUs and
	  Memory Nodes and assigning tasks to run only within those sets.
	  This is primarily useful on large SMP or NUMA systems.

	  Say N if unsure.

config PROC_PID_CPUSET
	bool "Include legacy /proc/<pid>/cpuset file"
	depends on CPUSETS
	default y

config CGROUP_CPUACCT
	bool "Simple CPU accounting controller"
	help
	  Provides a simple controller for monitoring the
	  total CPU consumed by the tasks in a cgroup.

config PAGE_COUNTER
       bool

@@ -1039,31 +981,40 @@ config MEMCG_KMEM
	  the kmem extension can use it to guarantee that no group of processes
	  will ever exhaust kernel resources alone.

config CGROUP_HUGETLB
	bool "HugeTLB controller"
	depends on HUGETLB_PAGE
	select PAGE_COUNTER
config BLK_CGROUP
	bool "IO controller"
	depends on BLOCK
	default n
	help
	  Provides a cgroup controller for HugeTLB pages.
	  When you enable this, you can put a per cgroup limit on HugeTLB usage.
	  The limit is enforced during page fault. Since HugeTLB doesn't
	  support page reclaim, enforcing the limit at page fault time implies
	  that, the application will get SIGBUS signal if it tries to access
	  HugeTLB pages beyond its limit. This requires the application to know
	  beforehand how much HugeTLB pages it would require for its use. The
	  control group is tracked in the third page lru pointer. This means
	  that we cannot use the controller with huge page less than 3 pages.
	---help---
	Generic block IO controller cgroup interface. This is the common
	cgroup interface which should be used by various IO controlling
	policies.

config CGROUP_PERF
	bool "Perf controller"
	depends on PERF_EVENTS && CGROUPS
	help
	  This option extends the perf per-cpu mode to restrict monitoring
	  to threads which belong to the cgroup specified and run on the
	  designated cpu.
	Currently, CFQ IO scheduler uses it to recognize task groups and
	control disk bandwidth allocation (proportional time slice allocation)
	to such task groups. It is also used by bio throttling logic in
	block layer to implement upper limit in IO rates on a device.

	  Say N if unsure.
	This option only enables generic Block IO controller infrastructure.
	One needs to also enable actual IO controlling logic/policy. For
	enabling proportional weight division of disk bandwidth in CFQ, set
	CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
	CONFIG_BLK_DEV_THROTTLING=y.

	See Documentation/cgroups/blkio-controller.txt for more information.

config DEBUG_BLK_CGROUP
	bool "IO controller debugging"
	depends on BLK_CGROUP
	default n
	---help---
	Enable some debugging help. Currently it exports additional stat
	files in a cgroup which can be useful for debugging.

config CGROUP_WRITEBACK
	bool
	depends on MEMCG && BLK_CGROUP
	default y

menuconfig CGROUP_SCHED
	bool "CPU controller"
@@ -1103,40 +1054,89 @@ config RT_GROUP_SCHED

endif #CGROUP_SCHED

config BLK_CGROUP
	bool "IO controller"
	depends on BLOCK
config CGROUP_PIDS
	bool "PIDs controller"
	help
	  Provides enforcement of process number limits in the scope of a
	  cgroup. Any attempt to fork more processes than is allowed in the
	  cgroup will fail. PIDs are fundamentally a global resource because it
	  is fairly trivial to reach PID exhaustion before you reach even a
	  conservative kmemcg limit. As a result, it is possible to grind a
	  system to halt without being limited by other cgroup policies. The
	  PIDs cgroup subsystem is designed to stop this from happening.

	  It should be noted that organisational operations (such as attaching
	  to a cgroup hierarchy will *not* be blocked by the PIDs subsystem),
	  since the PIDs limit only affects a process's ability to fork, not to
	  attach to a cgroup.

config CGROUP_FREEZER
	bool "Freezer controller"
	help
	  Provides a way to freeze and unfreeze all tasks in a
	  cgroup.

config CGROUP_HUGETLB
	bool "HugeTLB controller"
	depends on HUGETLB_PAGE
	select PAGE_COUNTER
	default n
	---help---
	Generic block IO controller cgroup interface. This is the common
	cgroup interface which should be used by various IO controlling
	policies.
	help
	  Provides a cgroup controller for HugeTLB pages.
	  When you enable this, you can put a per cgroup limit on HugeTLB usage.
	  The limit is enforced during page fault. Since HugeTLB doesn't
	  support page reclaim, enforcing the limit at page fault time implies
	  that, the application will get SIGBUS signal if it tries to access
	  HugeTLB pages beyond its limit. This requires the application to know
	  beforehand how much HugeTLB pages it would require for its use. The
	  control group is tracked in the third page lru pointer. This means
	  that we cannot use the controller with huge page less than 3 pages.

	Currently, CFQ IO scheduler uses it to recognize task groups and
	control disk bandwidth allocation (proportional time slice allocation)
	to such task groups. It is also used by bio throttling logic in
	block layer to implement upper limit in IO rates on a device.
config CPUSETS
	bool "Cpuset controller"
	help
	  This option will let you create and manage CPUSETs which
	  allow dynamically partitioning a system into sets of CPUs and
	  Memory Nodes and assigning tasks to run only within those sets.
	  This is primarily useful on large SMP or NUMA systems.

	This option only enables generic Block IO controller infrastructure.
	One needs to also enable actual IO controlling logic/policy. For
	enabling proportional weight division of disk bandwidth in CFQ, set
	CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
	CONFIG_BLK_DEV_THROTTLING=y.
	  Say N if unsure.

	See Documentation/cgroups/blkio-controller.txt for more information.
config PROC_PID_CPUSET
	bool "Include legacy /proc/<pid>/cpuset file"
	depends on CPUSETS
	default y

config DEBUG_BLK_CGROUP
	bool "IO controller debugging"
	depends on BLK_CGROUP
config CGROUP_DEVICE
	bool "Device controller"
	help
	  Provides a cgroup controller implementing whitelists for
	  devices which a process in the cgroup can mknod or open.

config CGROUP_CPUACCT
	bool "Simple CPU accounting controller"
	help
	  Provides a simple controller for monitoring the
	  total CPU consumed by the tasks in a cgroup.

config CGROUP_PERF
	bool "Perf controller"
	depends on PERF_EVENTS
	help
	  This option extends the perf per-cpu mode to restrict monitoring
	  to threads which belong to the cgroup specified and run on the
	  designated cpu.

	  Say N if unsure.

config CGROUP_DEBUG
	bool "Example controller"
	default n
	---help---
	Enable some debugging help. Currently it exports additional stat
	files in a cgroup which can be useful for debugging.
	help
	  This option enables a simple controller that exports
	  debugging information about the cgroups framework.

config CGROUP_WRITEBACK
	bool
	depends on MEMCG && BLK_CGROUP
	default y
	  Say N.

endif # CGROUPS