linux/Documentation
Roman Gushchin bf8d5d52ff memcg: introduce memory.min
Memory controller implements the memory.low best-effort memory
protection mechanism, which works perfectly in many cases and allows
protecting working sets of important workloads from sudden reclaim.

But its semantics has a significant limitation: it works only as long as
there is a supply of reclaimable memory.  This makes it pretty useless
against any sort of slow memory leaks or memory usage increases.  This
is especially true for swapless systems.  If swap is enabled, memory
soft protection effectively postpones problems, allowing a leaking
application to fill all swap area, which makes no sense.  The only
effective way to guarantee the memory protection in this case is to
invoke the OOM killer.

It's possible to handle this case in userspace by reacting on MEMCG_LOW
events; but there is still a place for a fail-safe in-kernel mechanism
to provide stronger guarantees.

This patch introduces the memory.min interface for cgroup v2 memory
controller.  It works very similarly to memory.low (sharing the same
hierarchical behavior), except that it's not disabled if there is no
more reclaimable memory in the system.

If cgroup is not populated, its memory.min is ignored, because otherwise
even the OOM killer wouldn't be able to reclaim the protected memory,
and the system can stall.

[guro@fb.com: s/low/min/ in docs]
Link: http://lkml.kernel.org/r/20180510130758.GA9129@castle.DHCP.thefacebook.com
Link: http://lkml.kernel.org/r/20180509180734.GA4856@castle.DHCP.thefacebook.com
Signed-off-by: Roman Gushchin <guro@fb.com>
Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-06-07 17:34:36 -07:00
..
ABI media updates for v4.18-rc1 2018-06-07 12:34:37 -07:00
EDID
PCI
RCU doc: Ensure whatisRCU.txt actually says what RCU is 2018-05-15 10:28:12 -07:00
accelerators ocxl: Document new OCXL IOCTLs 2018-06-03 20:40:33 +10:00
accounting
acpi ACPI / CPPC: Document CPPC sysfs interface 2018-04-24 12:33:28 +02:00
admin-guide memcg: introduce memory.min 2018-06-07 17:34:36 -07:00
aoe
arm Documentation: arm: clean up Marvell Berlin family info 2018-05-16 13:11:57 -06:00
arm64 ARM: 2018-04-09 11:42:31 -07:00
auxdisplay
backlight
block There's been a fair amount of work in the docs tree this time around, 2018-06-04 12:34:27 -07:00
blockdev zram: introduce zram memory tracking 2018-06-07 17:34:34 -07:00
bpf bpf, doc: howto use/run the BPF selftests 2018-05-14 23:02:58 -07:00
bus-devices
cdrom Documentation/cdrom: fix German sharp s in LaTex 2018-03-08 19:35:29 -07:00
cgroup-v1 page cache: use xa_lock 2018-04-11 10:28:39 -07:00
cma
connector
console
core-api Printk changes for 4.18 2018-06-06 16:04:55 -07:00
cpu-freq cpufreq: Drop cpufreq_table_validate_and_show() 2018-04-10 08:40:45 +02:00
cpuidle cpuidle: Add definition of residency to sysfs documentation 2018-04-09 13:44:37 +02:00
crypto docs: */index.rst: Add newer documents to their respective index.rst 2018-05-08 09:57:35 -06:00
dev-tools doc: dev-tools: kselftest.rst: update contributing new tests 2018-04-27 16:56:15 -06:00
device-mapper dm thin: update Documentation to clarify when "read_only" is valid 2018-05-10 11:18:49 -04:00
devicetree media updates for v4.18-rc1 2018-06-07 12:34:37 -07:00
doc-guide MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
driver-api Driver core changes for 4.18-rc1 2018-06-05 16:29:19 -07:00
driver-model
early-userspace
extcon
fault-injection Documentation: nvme: Documentation for nvme fault injection 2018-03-26 08:53:43 -06:00
fb
features mm: introduce ARCH_HAS_PTE_SPECIAL 2018-06-07 17:34:35 -07:00
filesystems overlayfs fixes for 4.18 2018-06-07 08:53:50 -07:00
firmware_class
fmc
gpio Documentation: gpio: Move drivers-on-gpio.txt to driver-api 2018-03-23 04:22:29 +01:00
gpu Merge remote-tracking branch 'drm/drm-next' into drm-misc-next 2018-05-11 18:08:10 +02:00
hid
hwmon hwmon: (ltc2990) support all measurement modes 2018-05-21 07:52:01 -07:00
i2c i2c: ocores: update HDL sources URL 2018-05-29 20:14:32 +02:00
ia64
ide
iio
infiniband
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2018-04-05 13:21:57 -07:00
ioctl Char/Misc driver patches for 4.18-rc1 2018-06-05 16:20:22 -07:00
isdn Documentation/isdn: check and fix dead links ... 2018-03-26 12:31:13 -04:00
kbuild Documentation: kconfig: document a new Kconfig macro language 2018-05-29 03:31:19 +09:00
kdump
kernel-hacking
laptops
leds
lightnvm
livepatch livepatch: Allow to call a custom callback when freeing shadow variables 2018-04-17 13:42:48 +02:00
locking
m68k
maintainer
md
media media: cec: improve cec status documentation 2018-05-25 15:34:50 -04:00
memory-devices
mic
mips
misc-devices misc: IBM Virtual Management Channel Driver (VMC) 2018-05-14 16:35:42 +02:00
mmc
mtd
namespaces
netlabel
networking netdev-FAQ: clarify DaveM's position for stable backports 2018-06-05 14:19:45 -04:00
nfc
nios2
nvdimm
nvmem
openrisc
parisc
pcmcia
perf
phy
platform
power firmware: Fix firmware documentation for recent file renames 2018-04-23 13:03:26 +02:00
powerpc
pps
process There's been a fair amount of work in the docs tree this time around, 2018-06-04 12:34:27 -07:00
pti
ptp ptp: Fix documentation to match code. 2018-03-26 12:13:21 -04:00
rapidio
s390
scheduler sched/deadline/Documentation: Add overrun signal and GRUB-PA documentation 2018-05-14 09:12:27 +02:00
scsi block: remove BLK_EH_HANDLED 2018-05-29 08:59:21 -06:00
security docs: */index.rst: Add newer documents to their respective index.rst 2018-05-08 09:57:35 -06:00
serial
sh
sound sound updates for 4.18 2018-06-06 09:08:38 -07:00
sparc sparc64: Add support for ADI (Application Data Integrity) 2018-03-18 07:38:48 -07:00
sphinx MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
sphinx-static
spi
sysctl Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-06-06 18:39:49 -07:00
target
thermal thermal: Add cooling device's statistics in sysfs 2018-04-02 21:49:01 +08:00
timers
trace One new feature was added to ftrace, which is the trace_marker now supports 2018-06-06 16:39:18 -07:00
translations Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 16:40:11 -07:00
usb
userspace-api audit/stable-4.18 PR 20180605 2018-06-06 16:34:00 -07:00
virtual kvm: rename KVM_HINTS_DEDICATED to KVM_HINTS_REALTIME 2018-05-17 19:12:13 +02:00
vm docs/vm: move ksm and transhuge from "user" to "internals" section. 2018-05-29 06:45:55 -06:00
w1
watchdog watchdog: remove bfin_wdt driver 2018-03-26 15:57:04 +02:00
wimax
x86 Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 21:34:39 -07:00
xtensa
.gitignore
00-INDEX docs: admin-guide: add cgroup-v2 documentation 2018-05-10 15:42:41 -06:00
Changes
CodingStyle
DMA-API-HOWTO.txt
DMA-API.txt
DMA-ISA-LPC.txt
DMA-attributes.txt
IPMI.txt
IRQ-affinity.txt
IRQ-domain.txt
IRQ.txt
Intel-IOMMU.txt
Makefile
SAK.txt
SM501.txt
SubmittingPatches
atomic_bitops.txt
atomic_t.txt
bt8xxgpio.txt
btmrvl.txt
bus-virt-phys-mapping.txt
clearing-warn-once.txt
conf.py
cpu-load.txt
cputopology.txt
crc32.txt
dcdbas.txt
debugging-modules.txt
debugging-via-ohci1394.txt
dell_rbu.txt Documentation: remove stale firmware API reference 2018-05-14 16:44:41 +02:00
digsig.txt
docutils.conf
dontdiff
efi-stub.txt
eisa.txt
flexible-arrays.txt
futex-requeue-pi.txt
gcc-plugins.txt
highuid.txt
hw_random.txt
hwspinlock.txt
index.rst docs/vm: add index.rst and link MM documentation to top level index 2018-04-16 14:18:15 -06:00
intel_txt.txt
io-mapping.txt
io_ordering.txt
iostats.txt
irqflags-tracing.txt
isa.txt
isapnp.txt
kernel-per-CPU-kthreads.txt
kobject.txt
kprobes.txt
kref.txt
ldm.txt
lockup-watchdogs.txt
logo.gif
logo.txt
lsm.txt
lzo.txt
mailbox.txt
memory-barriers.txt Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 16:40:11 -07:00
memory-hotplug.txt
men-chameleon-bus.txt
nommu-mmap.txt
ntb.txt
numastat.txt
padata.txt
parport-lowlevel.txt
percpu-rw-semaphore.txt
phy.txt
pi-futex.txt
pnp.txt
preempt-locking.txt
pwm.txt
rbtree.txt
remoteproc.txt
rfkill.txt
robust-futex-ABI.txt
robust-futexes.txt
rpmsg.txt
rtc.txt
sgi-ioc4.txt
siphash.txt
smsc_ece1099.txt
speculation.txt
static-keys.txt
svga.txt
switchtec.txt
sync_file.txt
tee.txt
this_cpu_ops.txt
unaligned-memory-access.txt
vfio-mediated-device.txt
vfio.txt vfio: fix documentation 2018-05-08 09:16:41 -06:00
video-output.txt
xillybus.txt
xz.txt
zorro.txt