linux/Documentation/sysctl/vm.txt
<<
>>
Prefs
   1Documentation for /proc/sys/vm/*        kernel version 2.6.29
   2        (c) 1998, 1999,  Rik van Riel <riel@nl.linux.org>
   3        (c) 2008         Peter W. Morreale <pmorreale@novell.com>
   4
   5For general info and legal blurb, please look in README.
   6
   7==============================================================
   8
   9This file contains the documentation for the sysctl files in
  10/proc/sys/vm and is valid for Linux kernel version 2.6.29.
  11
  12The files in this directory can be used to tune the operation
  13of the virtual memory (VM) subsystem of the Linux kernel and
  14the writeout of dirty data to disk.
  15
  16Default values and initialization routines for most of these
  17files can be found in mm/swap.c.
  18
  19Currently, these files are in /proc/sys/vm:
  20
  21- admin_reserve_kbytes
  22- block_dump
  23- compact_memory
  24- compact_unevictable_allowed
  25- dirty_background_bytes
  26- dirty_background_ratio
  27- dirty_bytes
  28- dirty_expire_centisecs
  29- dirty_ratio
  30- dirty_writeback_centisecs
  31- drop_caches
  32- extfrag_threshold
  33- hugepages_treat_as_movable
  34- hugetlb_shm_group
  35- laptop_mode
  36- legacy_va_layout
  37- lowmem_reserve_ratio
  38- max_map_count
  39- memory_failure_early_kill
  40- memory_failure_recovery
  41- min_free_kbytes
  42- min_slab_ratio
  43- min_unmapped_ratio
  44- mmap_min_addr
  45- mmap_rnd_bits
  46- mmap_rnd_compat_bits
  47- nr_hugepages
  48- nr_overcommit_hugepages
  49- nr_trim_pages         (only if CONFIG_MMU=n)
  50- numa_zonelist_order
  51- oom_dump_tasks
  52- oom_kill_allocating_task
  53- overcommit_kbytes
  54- overcommit_memory
  55- overcommit_ratio
  56- page-cluster
  57- panic_on_oom
  58- percpu_pagelist_fraction
  59- stat_interval
  60- stat_refresh
  61- swappiness
  62- user_reserve_kbytes
  63- vfs_cache_pressure
  64- zone_reclaim_mode
  65
  66==============================================================
  67
  68admin_reserve_kbytes
  69
  70The amount of free memory in the system that should be reserved for users
  71with the capability cap_sys_admin.
  72
  73admin_reserve_kbytes defaults to min(3% of free pages, 8MB)
  74
  75That should provide enough for the admin to log in and kill a process,
  76if necessary, under the default overcommit 'guess' mode.
  77
  78Systems running under overcommit 'never' should increase this to account
  79for the full Virtual Memory Size of programs used to recover. Otherwise,
  80root may not be able to log in to recover the system.
  81
  82How do you calculate a minimum useful reserve?
  83
  84sshd or login + bash (or some other shell) + top (or ps, kill, etc.)
  85
  86For overcommit 'guess', we can sum resident set sizes (RSS).
  87On x86_64 this is about 8MB.
  88
  89For overcommit 'never', we can take the max of their virtual sizes (VSZ)
  90and add the sum of their RSS.
  91On x86_64 this is about 128MB.
  92
  93Changing this takes effect whenever an application requests memory.
  94
  95==============================================================
  96
  97block_dump
  98
  99block_dump enables block I/O debugging when set to a nonzero value. More
 100information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
 101
 102==============================================================
 103
 104compact_memory
 105
 106Available only when CONFIG_COMPACTION is set. When 1 is written to the file,
 107all zones are compacted such that free memory is available in contiguous
 108blocks where possible. This can be important for example in the allocation of
 109huge pages although processes will also directly compact memory as required.
 110
 111==============================================================
 112
 113compact_unevictable_allowed
 114
 115Available only when CONFIG_COMPACTION is set. When set to 1, compaction is
 116allowed to examine the unevictable lru (mlocked pages) for pages to compact.
 117This should be used on systems where stalls for minor page faults are an
 118acceptable trade for large contiguous free memory.  Set to 0 to prevent
 119compaction from moving pages that are unevictable.  Default value is 1.
 120
 121==============================================================
 122
 123dirty_background_bytes
 124
 125Contains the amount of dirty memory at which the background kernel
 126flusher threads will start writeback.
 127
 128Note: dirty_background_bytes is the counterpart of dirty_background_ratio. Only
 129one of them may be specified at a time. When one sysctl is written it is
 130immediately taken into account to evaluate the dirty memory limits and the
 131other appears as 0 when read.
 132
 133==============================================================
 134
 135dirty_background_ratio
 136
 137Contains, as a percentage of total available memory that contains free pages
 138and reclaimable pages, the number of pages at which the background kernel
 139flusher threads will start writing out dirty data.
 140
 141The total available memory is not equal to total system memory.
 142
 143==============================================================
 144
 145dirty_bytes
 146
 147Contains the amount of dirty memory at which a process generating disk writes
 148will itself start writeback.
 149
 150Note: dirty_bytes is the counterpart of dirty_ratio. Only one of them may be
 151specified at a time. When one sysctl is written it is immediately taken into
 152account to evaluate the dirty memory limits and the other appears as 0 when
 153read.
 154
 155Note: the minimum value allowed for dirty_bytes is two pages (in bytes); any
 156value lower than this limit will be ignored and the old configuration will be
 157retained.
 158
 159==============================================================
 160
 161dirty_expire_centisecs
 162
 163This tunable is used to define when dirty data is old enough to be eligible
 164for writeout by the kernel flusher threads.  It is expressed in 100'ths
 165of a second.  Data which has been dirty in-memory for longer than this
 166interval will be written out next time a flusher thread wakes up.
 167
 168==============================================================
 169
 170dirty_ratio
 171
 172Contains, as a percentage of total available memory that contains free pages
 173and reclaimable pages, the number of pages at which a process which is
 174generating disk writes will itself start writing out dirty data.
 175
 176The total available memory is not equal to total system memory.
 177
 178==============================================================
 179
 180dirty_writeback_centisecs
 181
 182The kernel flusher threads will periodically wake up and write `old' data
 183out to disk.  This tunable expresses the interval between those wakeups, in
 184100'ths of a second.
 185
 186Setting this to zero disables periodic writeback altogether.
 187
 188==============================================================
 189
 190drop_caches
 191
 192Writing to this will cause the kernel to drop clean caches, as well as
 193reclaimable slab objects like dentries and inodes.  Once dropped, their
 194memory becomes free.
 195
 196To free pagecache:
 197        echo 1 > /proc/sys/vm/drop_caches
 198To free reclaimable slab objects (includes dentries and inodes):
 199        echo 2 > /proc/sys/vm/drop_caches
 200To free slab objects and pagecache:
 201        echo 3 > /proc/sys/vm/drop_caches
 202
 203This is a non-destructive operation and will not free any dirty objects.
 204To increase the number of objects freed by this operation, the user may run
 205`sync' prior to writing to /proc/sys/vm/drop_caches.  This will minimize the
 206number of dirty objects on the system and create more candidates to be
 207dropped.
 208
 209This file is not a means to control the growth of the various kernel caches
 210(inodes, dentries, pagecache, etc...)  These objects are automatically
 211reclaimed by the kernel when memory is needed elsewhere on the system.
 212
 213Use of this file can cause performance problems.  Since it discards cached
 214objects, it may cost a significant amount of I/O and CPU to recreate the
 215dropped objects, especially if they were under heavy use.  Because of this,
 216use outside of a testing or debugging environment is not recommended.
 217
 218You may see informational messages in your kernel log when this file is
 219used:
 220
 221        cat (1234): drop_caches: 3
 222
 223These are informational only.  They do not mean that anything is wrong
 224with your system.  To disable them, echo 4 (bit 3) into drop_caches.
 225
 226==============================================================
 227
 228extfrag_threshold
 229
 230This parameter affects whether the kernel will compact memory or direct
 231reclaim to satisfy a high-order allocation. The extfrag/extfrag_index file in
 232debugfs shows what the fragmentation index for each order is in each zone in
 233the system. Values tending towards 0 imply allocations would fail due to lack
 234of memory, values towards 1000 imply failures are due to fragmentation and -1
 235implies that the allocation will succeed as long as watermarks are met.
 236
 237The kernel will not compact memory in a zone if the
 238fragmentation index is <= extfrag_threshold. The default value is 500.
 239
 240==============================================================
 241
 242hugepages_treat_as_movable
 243
 244This parameter controls whether we can allocate hugepages from ZONE_MOVABLE
 245or not. If set to non-zero, hugepages can be allocated from ZONE_MOVABLE.
 246ZONE_MOVABLE is created when kernel boot parameter kernelcore= is specified,
 247so this parameter has no effect if used without kernelcore=.
 248
 249Hugepage migration is now available in some situations which depend on the
 250architecture and/or the hugepage size. If a hugepage supports migration,
 251allocation from ZONE_MOVABLE is always enabled for the hugepage regardless
 252of the value of this parameter.
 253IOW, this parameter affects only non-migratable hugepages.
 254
 255Assuming that hugepages are not migratable in your system, one usecase of
 256this parameter is that users can make hugepage pool more extensible by
 257enabling the allocation from ZONE_MOVABLE. This is because on ZONE_MOVABLE
 258page reclaim/migration/compaction work more and you can get contiguous
 259memory more likely. Note that using ZONE_MOVABLE for non-migratable
 260hugepages can do harm to other features like memory hotremove (because
 261memory hotremove expects that memory blocks on ZONE_MOVABLE are always
 262removable,) so it's a trade-off responsible for the users.
 263
 264==============================================================
 265
 266hugetlb_shm_group
 267
 268hugetlb_shm_group contains group id that is allowed to create SysV
 269shared memory segment using hugetlb page.
 270
 271==============================================================
 272
 273laptop_mode
 274
 275laptop_mode is a knob that controls "laptop mode". All the things that are
 276controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
 277
 278==============================================================
 279
 280legacy_va_layout
 281
 282If non-zero, this sysctl disables the new 32-bit mmap layout - the kernel
 283will use the legacy (2.4) layout for all processes.
 284
 285==============================================================
 286
 287lowmem_reserve_ratio
 288
 289For some specialised workloads on highmem machines it is dangerous for
 290the kernel to allow process memory to be allocated from the "lowmem"
 291zone.  This is because that memory could then be pinned via the mlock()
 292system call, or by unavailability of swapspace.
 293
 294And on large highmem machines this lack of reclaimable lowmem memory
 295can be fatal.
 296
 297So the Linux page allocator has a mechanism which prevents allocations
 298which _could_ use highmem from using too much lowmem.  This means that
 299a certain amount of lowmem is defended from the possibility of being
 300captured into pinned user memory.
 301
 302(The same argument applies to the old 16 megabyte ISA DMA region.  This
 303mechanism will also defend that region from allocations which could use
 304highmem or lowmem).
 305
 306The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is
 307in defending these lower zones.
 308
 309If you have a machine which uses highmem or ISA DMA and your
 310applications are using mlock(), or if you are running with no swap then
 311you probably should change the lowmem_reserve_ratio setting.
 312
 313The lowmem_reserve_ratio is an array. You can see them by reading this file.
 314-
 315% cat /proc/sys/vm/lowmem_reserve_ratio
 316256     256     32
 317-
 318Note: # of this elements is one fewer than number of zones. Because the highest
 319      zone's value is not necessary for following calculation.
 320
 321But, these values are not used directly. The kernel calculates # of protection
 322pages for each zones from them. These are shown as array of protection pages
 323in /proc/zoneinfo like followings. (This is an example of x86-64 box).
 324Each zone has an array of protection pages like this.
 325
 326-
 327Node 0, zone      DMA
 328  pages free     1355
 329        min      3
 330        low      3
 331        high     4
 332        :
 333        :
 334    numa_other   0
 335        protection: (0, 2004, 2004, 2004)
 336        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 337  pagesets
 338    cpu: 0 pcp: 0
 339        :
 340-
 341These protections are added to score to judge whether this zone should be used
 342for page allocation or should be reclaimed.
 343
 344In this example, if normal pages (index=2) are required to this DMA zone and
 345watermark[WMARK_HIGH] is used for watermark, the kernel judges this zone should
 346not be used because pages_free(1355) is smaller than watermark + protection[2]
 347(4 + 2004 = 2008). If this protection value is 0, this zone would be used for
 348normal page requirement. If requirement is DMA zone(index=0), protection[0]
 349(=0) is used.
 350
 351zone[i]'s protection[j] is calculated by following expression.
 352
 353(i < j):
 354  zone[i]->protection[j]
 355  = (total sums of managed_pages from zone[i+1] to zone[j] on the node)
 356    / lowmem_reserve_ratio[i];
 357(i = j):
 358   (should not be protected. = 0;
 359(i > j):
 360   (not necessary, but looks 0)
 361
 362The default values of lowmem_reserve_ratio[i] are
 363    256 (if zone[i] means DMA or DMA32 zone)
 364    32  (others).
 365As above expression, they are reciprocal number of ratio.
 366256 means 1/256. # of protection pages becomes about "0.39%" of total managed
 367pages of higher zones on the node.
 368
 369If you would like to protect more pages, smaller values are effective.
 370The minimum value is 1 (1/1 -> 100%).
 371
 372==============================================================
 373
 374max_map_count:
 375
 376This file contains the maximum number of memory map areas a process
 377may have. Memory map areas are used as a side-effect of calling
 378malloc, directly by mmap and mprotect, and also when loading shared
 379libraries.
 380
 381While most applications need less than a thousand maps, certain
 382programs, particularly malloc debuggers, may consume lots of them,
 383e.g., up to one or two maps per allocation.
 384
 385The default value is 65536.
 386
 387=============================================================
 388
 389memory_failure_early_kill:
 390
 391Control how to kill processes when uncorrected memory error (typically
 392a 2bit error in a memory module) is detected in the background by hardware
 393that cannot be handled by the kernel. In some cases (like the page
 394still having a valid copy on disk) the kernel will handle the failure
 395transparently without affecting any applications. But if there is
 396no other uptodate copy of the data it will kill to prevent any data
 397corruptions from propagating.
 398
 3991: Kill all processes that have the corrupted and not reloadable page mapped
 400as soon as the corruption is detected.  Note this is not supported
 401for a few types of pages, like kernel internally allocated data or
 402the swap cache, but works for the majority of user pages.
 403
 4040: Only unmap the corrupted page from all processes and only kill a process
 405who tries to access it.
 406
 407The kill is done using a catchable SIGBUS with BUS_MCEERR_AO, so processes can
 408handle this if they want to.
 409
 410This is only active on architectures/platforms with advanced machine
 411check handling and depends on the hardware capabilities.
 412
 413Applications can override this setting individually with the PR_MCE_KILL prctl
 414
 415==============================================================
 416
 417memory_failure_recovery
 418
 419Enable memory failure recovery (when supported by the platform)
 420
 4211: Attempt recovery.
 422
 4230: Always panic on a memory failure.
 424
 425==============================================================
 426
 427min_free_kbytes:
 428
 429This is used to force the Linux VM to keep a minimum number
 430of kilobytes free.  The VM uses this number to compute a
 431watermark[WMARK_MIN] value for each lowmem zone in the system.
 432Each lowmem zone gets a number of reserved free pages based
 433proportionally on its size.
 434
 435Some minimal amount of memory is needed to satisfy PF_MEMALLOC
 436allocations; if you set this to lower than 1024KB, your system will
 437become subtly broken, and prone to deadlock under high loads.
 438
 439Setting this too high will OOM your machine instantly.
 440
 441=============================================================
 442
 443min_slab_ratio:
 444
 445This is available only on NUMA kernels.
 446
 447A percentage of the total pages in each zone.  On Zone reclaim
 448(fallback from the local zone occurs) slabs will be reclaimed if more
 449than this percentage of pages in a zone are reclaimable slab pages.
 450This insures that the slab growth stays under control even in NUMA
 451systems that rarely perform global reclaim.
 452
 453The default is 5 percent.
 454
 455Note that slab reclaim is triggered in a per zone / node fashion.
 456The process of reclaiming slab memory is currently not node specific
 457and may not be fast.
 458
 459=============================================================
 460
 461min_unmapped_ratio:
 462
 463This is available only on NUMA kernels.
 464
 465This is a percentage of the total pages in each zone. Zone reclaim will
 466only occur if more than this percentage of pages are in a state that
 467zone_reclaim_mode allows to be reclaimed.
 468
 469If zone_reclaim_mode has the value 4 OR'd, then the percentage is compared
 470against all file-backed unmapped pages including swapcache pages and tmpfs
 471files. Otherwise, only unmapped pages backed by normal files but not tmpfs
 472files and similar are considered.
 473
 474The default is 1 percent.
 475
 476==============================================================
 477
 478mmap_min_addr
 479
 480This file indicates the amount of address space  which a user process will
 481be restricted from mmapping.  Since kernel null dereference bugs could
 482accidentally operate based on the information in the first couple of pages
 483of memory userspace processes should not be allowed to write to them.  By
 484default this value is set to 0 and no protections will be enforced by the
 485security module.  Setting this value to something like 64k will allow the
 486vast majority of applications to work correctly and provide defense in depth
 487against future potential kernel bugs.
 488
 489==============================================================
 490
 491mmap_rnd_bits:
 492
 493This value can be used to select the number of bits to use to
 494determine the random offset to the base address of vma regions
 495resulting from mmap allocations on architectures which support
 496tuning address space randomization.  This value will be bounded
 497by the architecture's minimum and maximum supported values.
 498
 499This value can be changed after boot using the
 500/proc/sys/vm/mmap_rnd_bits tunable
 501
 502==============================================================
 503
 504mmap_rnd_compat_bits:
 505
 506This value can be used to select the number of bits to use to
 507determine the random offset to the base address of vma regions
 508resulting from mmap allocations for applications run in
 509compatibility mode on architectures which support tuning address
 510space randomization.  This value will be bounded by the
 511architecture's minimum and maximum supported values.
 512
 513This value can be changed after boot using the
 514/proc/sys/vm/mmap_rnd_compat_bits tunable
 515
 516==============================================================
 517
 518nr_hugepages
 519
 520Change the minimum size of the hugepage pool.
 521
 522See Documentation/vm/hugetlbpage.txt
 523
 524==============================================================
 525
 526nr_overcommit_hugepages
 527
 528Change the maximum size of the hugepage pool. The maximum is
 529nr_hugepages + nr_overcommit_hugepages.
 530
 531See Documentation/vm/hugetlbpage.txt
 532
 533==============================================================
 534
 535nr_trim_pages
 536
 537This is available only on NOMMU kernels.
 538
 539This value adjusts the excess page trimming behaviour of power-of-2 aligned
 540NOMMU mmap allocations.
 541
 542A value of 0 disables trimming of allocations entirely, while a value of 1
 543trims excess pages aggressively. Any value >= 1 acts as the watermark where
 544trimming of allocations is initiated.
 545
 546The default value is 1.
 547
 548See Documentation/nommu-mmap.txt for more information.
 549
 550==============================================================
 551
 552numa_zonelist_order
 553
 554This sysctl is only for NUMA.
 555'where the memory is allocated from' is controlled by zonelists.
 556(This documentation ignores ZONE_HIGHMEM/ZONE_DMA32 for simple explanation.
 557 you may be able to read ZONE_DMA as ZONE_DMA32...)
 558
 559In non-NUMA case, a zonelist for GFP_KERNEL is ordered as following.
 560ZONE_NORMAL -> ZONE_DMA
 561This means that a memory allocation request for GFP_KERNEL will
 562get memory from ZONE_DMA only when ZONE_NORMAL is not available.
 563
 564In NUMA case, you can think of following 2 types of order.
 565Assume 2 node NUMA and below is zonelist of Node(0)'s GFP_KERNEL
 566
 567(A) Node(0) ZONE_NORMAL -> Node(0) ZONE_DMA -> Node(1) ZONE_NORMAL
 568(B) Node(0) ZONE_NORMAL -> Node(1) ZONE_NORMAL -> Node(0) ZONE_DMA.
 569
 570Type(A) offers the best locality for processes on Node(0), but ZONE_DMA
 571will be used before ZONE_NORMAL exhaustion. This increases possibility of
 572out-of-memory(OOM) of ZONE_DMA because ZONE_DMA is tend to be small.
 573
 574Type(B) cannot offer the best locality but is more robust against OOM of
 575the DMA zone.
 576
 577Type(A) is called as "Node" order. Type (B) is "Zone" order.
 578
 579"Node order" orders the zonelists by node, then by zone within each node.
 580Specify "[Nn]ode" for node order
 581
 582"Zone Order" orders the zonelists by zone type, then by node within each
 583zone.  Specify "[Zz]one" for zone order.
 584
 585Specify "[Dd]efault" to request automatic configuration.
 586
 587On 32-bit, the Normal zone needs to be preserved for allocations accessible
 588by the kernel, so "zone" order will be selected.
 589
 590On 64-bit, devices that require DMA32/DMA are relatively rare, so "node"
 591order will be selected.
 592
 593Default order is recommended unless this is causing problems for your
 594system/application.
 595
 596==============================================================
 597
 598oom_dump_tasks
 599
 600Enables a system-wide task dump (excluding kernel threads) to be produced
 601when the kernel performs an OOM-killing and includes such information as
 602pid, uid, tgid, vm size, rss, nr_ptes, nr_pmds, swapents, oom_score_adj
 603score, and name.  This is helpful to determine why the OOM killer was
 604invoked, to identify the rogue task that caused it, and to determine why
 605the OOM killer chose the task it did to kill.
 606
 607If this is set to zero, this information is suppressed.  On very
 608large systems with thousands of tasks it may not be feasible to dump
 609the memory state information for each one.  Such systems should not
 610be forced to incur a performance penalty in OOM conditions when the
 611information may not be desired.
 612
 613If this is set to non-zero, this information is shown whenever the
 614OOM killer actually kills a memory-hogging task.
 615
 616The default value is 1 (enabled).
 617
 618==============================================================
 619
 620oom_kill_allocating_task
 621
 622This enables or disables killing the OOM-triggering task in
 623out-of-memory situations.
 624
 625If this is set to zero, the OOM killer will scan through the entire
 626tasklist and select a task based on heuristics to kill.  This normally
 627selects a rogue memory-hogging task that frees up a large amount of
 628memory when killed.
 629
 630If this is set to non-zero, the OOM killer simply kills the task that
 631triggered the out-of-memory condition.  This avoids the expensive
 632tasklist scan.
 633
 634If panic_on_oom is selected, it takes precedence over whatever value
 635is used in oom_kill_allocating_task.
 636
 637The default value is 0.
 638
 639==============================================================
 640
 641overcommit_kbytes:
 642
 643When overcommit_memory is set to 2, the committed address space is not
 644permitted to exceed swap plus this amount of physical RAM. See below.
 645
 646Note: overcommit_kbytes is the counterpart of overcommit_ratio. Only one
 647of them may be specified at a time. Setting one disables the other (which
 648then appears as 0 when read).
 649
 650==============================================================
 651
 652overcommit_memory:
 653
 654This value contains a flag that enables memory overcommitment.
 655
 656When this flag is 0, the kernel attempts to estimate the amount
 657of free memory left when userspace requests more memory.
 658
 659When this flag is 1, the kernel pretends there is always enough
 660memory until it actually runs out.
 661
 662When this flag is 2, the kernel uses a "never overcommit"
 663policy that attempts to prevent any overcommit of memory.
 664Note that user_reserve_kbytes affects this policy.
 665
 666This feature can be very useful because there are a lot of
 667programs that malloc() huge amounts of memory "just-in-case"
 668and don't use much of it.
 669
 670The default value is 0.
 671
 672See Documentation/vm/overcommit-accounting and
 673mm/mmap.c::__vm_enough_memory() for more information.
 674
 675==============================================================
 676
 677overcommit_ratio:
 678
 679When overcommit_memory is set to 2, the committed address
 680space is not permitted to exceed swap plus this percentage
 681of physical RAM.  See above.
 682
 683==============================================================
 684
 685page-cluster
 686
 687page-cluster controls the number of pages up to which consecutive pages
 688are read in from swap in a single attempt. This is the swap counterpart
 689to page cache readahead.
 690The mentioned consecutivity is not in terms of virtual/physical addresses,
 691but consecutive on swap space - that means they were swapped out together.
 692
 693It is a logarithmic value - setting it to zero means "1 page", setting
 694it to 1 means "2 pages", setting it to 2 means "4 pages", etc.
 695Zero disables swap readahead completely.
 696
 697The default value is three (eight pages at a time).  There may be some
 698small benefits in tuning this to a different value if your workload is
 699swap-intensive.
 700
 701Lower values mean lower latencies for initial faults, but at the same time
 702extra faults and I/O delays for following faults if they would have been part of
 703that consecutive pages readahead would have brought in.
 704
 705=============================================================
 706
 707panic_on_oom
 708
 709This enables or disables panic on out-of-memory feature.
 710
 711If this is set to 0, the kernel will kill some rogue process,
 712called oom_killer.  Usually, oom_killer can kill rogue processes and
 713system will survive.
 714
 715If this is set to 1, the kernel panics when out-of-memory happens.
 716However, if a process limits using nodes by mempolicy/cpusets,
 717and those nodes become memory exhaustion status, one process
 718may be killed by oom-killer. No panic occurs in this case.
 719Because other nodes' memory may be free. This means system total status
 720may be not fatal yet.
 721
 722If this is set to 2, the kernel panics compulsorily even on the
 723above-mentioned. Even oom happens under memory cgroup, the whole
 724system panics.
 725
 726The default value is 0.
 7271 and 2 are for failover of clustering. Please select either
 728according to your policy of failover.
 729panic_on_oom=2+kdump gives you very strong tool to investigate
 730why oom happens. You can get snapshot.
 731
 732=============================================================
 733
 734percpu_pagelist_fraction
 735
 736This is the fraction of pages at most (high mark pcp->high) in each zone that
 737are allocated for each per cpu page list.  The min value for this is 8.  It
 738means that we don't allow more than 1/8th of pages in each zone to be
 739allocated in any single per_cpu_pagelist.  This entry only changes the value
 740of hot per cpu pagelists.  User can specify a number like 100 to allocate
 7411/100th of each zone to each per cpu page list.
 742
 743The batch value of each per cpu pagelist is also updated as a result.  It is
 744set to pcp->high/4.  The upper limit of batch is (PAGE_SHIFT * 8)
 745
 746The initial value is zero.  Kernel does not use this value at boot time to set
 747the high water marks for each per cpu page list.  If the user writes '0' to this
 748sysctl, it will revert to this default behavior.
 749
 750==============================================================
 751
 752stat_interval
 753
 754The time interval between which vm statistics are updated.  The default
 755is 1 second.
 756
 757==============================================================
 758
 759stat_refresh
 760
 761Any read or write (by root only) flushes all the per-cpu vm statistics
 762into their global totals, for more accurate reports when testing
 763e.g. cat /proc/sys/vm/stat_refresh /proc/meminfo
 764
 765As a side-effect, it also checks for negative totals (elsewhere reported
 766as 0) and "fails" with EINVAL if any are found, with a warning in dmesg.
 767(At time of writing, a few stats are known sometimes to be found negative,
 768with no ill effects: errors and warnings on these stats are suppressed.)
 769
 770==============================================================
 771
 772swappiness
 773
 774This control is used to define how aggressive the kernel will swap
 775memory pages.  Higher values will increase agressiveness, lower values
 776decrease the amount of swap.  A value of 0 instructs the kernel not to
 777initiate swap until the amount of free and file-backed pages is less
 778than the high water mark in a zone.
 779
 780The default value is 60.
 781
 782==============================================================
 783
 784- user_reserve_kbytes
 785
 786When overcommit_memory is set to 2, "never overcommit" mode, reserve
 787min(3% of current process size, user_reserve_kbytes) of free memory.
 788This is intended to prevent a user from starting a single memory hogging
 789process, such that they cannot recover (kill the hog).
 790
 791user_reserve_kbytes defaults to min(3% of the current process size, 128MB).
 792
 793If this is reduced to zero, then the user will be allowed to allocate
 794all free memory with a single process, minus admin_reserve_kbytes.
 795Any subsequent attempts to execute a command will result in
 796"fork: Cannot allocate memory".
 797
 798Changing this takes effect whenever an application requests memory.
 799
 800==============================================================
 801
 802vfs_cache_pressure
 803------------------
 804
 805This percentage value controls the tendency of the kernel to reclaim
 806the memory which is used for caching of directory and inode objects.
 807
 808At the default value of vfs_cache_pressure=100 the kernel will attempt to
 809reclaim dentries and inodes at a "fair" rate with respect to pagecache and
 810swapcache reclaim.  Decreasing vfs_cache_pressure causes the kernel to prefer
 811to retain dentry and inode caches. When vfs_cache_pressure=0, the kernel will
 812never reclaim dentries and inodes due to memory pressure and this can easily
 813lead to out-of-memory conditions. Increasing vfs_cache_pressure beyond 100
 814causes the kernel to prefer to reclaim dentries and inodes.
 815
 816Increasing vfs_cache_pressure significantly beyond 100 may have negative
 817performance impact. Reclaim code needs to take various locks to find freeable
 818directory and inode objects. With vfs_cache_pressure=1000, it will look for
 819ten times more freeable objects than there are.
 820
 821=============================================================
 822
 823watermark_scale_factor:
 824
 825This factor controls the aggressiveness of kswapd. It defines the
 826amount of memory left in a node/system before kswapd is woken up and
 827how much memory needs to be free before kswapd goes back to sleep.
 828
 829The unit is in fractions of 10,000. The default value of 10 means the
 830distances between watermarks are 0.1% of the available memory in the
 831node/system. The maximum value is 1000, or 10% of memory.
 832
 833A high rate of threads entering direct reclaim (allocstall) or kswapd
 834going to sleep prematurely (kswapd_low_wmark_hit_quickly) can indicate
 835that the number of free pages kswapd maintains for latency reasons is
 836too small for the allocation bursts occurring in the system. This knob
 837can then be used to tune kswapd aggressiveness accordingly.
 838
 839==============================================================
 840
 841zone_reclaim_mode:
 842
 843Zone_reclaim_mode allows someone to set more or less aggressive approaches to
 844reclaim memory when a zone runs out of memory. If it is set to zero then no
 845zone reclaim occurs. Allocations will be satisfied from other zones / nodes
 846in the system.
 847
 848This is value ORed together of
 849
 8501       = Zone reclaim on
 8512       = Zone reclaim writes dirty pages out
 8524       = Zone reclaim swaps pages
 853
 854zone_reclaim_mode is disabled by default.  For file servers or workloads
 855that benefit from having their data cached, zone_reclaim_mode should be
 856left disabled as the caching effect is likely to be more important than
 857data locality.
 858
 859zone_reclaim may be enabled if it's known that the workload is partitioned
 860such that each partition fits within a NUMA node and that accessing remote
 861memory would cause a measurable performance reduction.  The page allocator
 862will then reclaim easily reusable pages (those page cache pages that are
 863currently not used) before allocating off node pages.
 864
 865Allowing zone reclaim to write out pages stops processes that are
 866writing large amounts of data from dirtying pages on other nodes. Zone
 867reclaim will write out dirty pages if a zone fills up and so effectively
 868throttle the process. This may decrease the performance of a single process
 869since it cannot use all of system memory to buffer the outgoing writes
 870anymore but it preserve the memory on other nodes so that the performance
 871of other processes running on other nodes will not be affected.
 872
 873Allowing regular swap effectively restricts allocations to the local
 874node unless explicitly overridden by memory policies or cpuset
 875configurations.
 876
 877============ End of Document =================================
 878
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.