git: kernel - Add flexibility to the RSS rlimit

Matthew Dillon dillon at crater.dragonflybsd.org
Wed Dec 28 14:18:45 PST 2016


commit 486b807a221da48a97f879876c53696f68ca20c7
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Dec 28 14:07:02 2016 -0800

    kernel - Add flexibility to the RSS rlimit
    
    * Add sysctl vm.pageout_memuse_mode, defaulting to 1:
    
      0 - disable (behavior prior to memoryuse rlimit commits).  RLIMIT_RSS
          is ignored.  Pagedaemon operates normally based on global page
          queues.
    
      1 - passive mode (default).  Pagedaemon operates normally, but additional
          actions are taken for processes exceeding their RLIMIT_RSS.
    
          Enforces RSS on a per-process basis by removing pages from the pmap,
          but simply deactivates the page and does not synchronously free it
          or page it out to swap.  The deactivated pages are more likely to be
          cleaned out by the system by the pagedaemon verses what it would
          normally choose from the global page queues.
    
          This mode has the smoothest results for the process being limited,
          as well as a lower impact on actual paging to swap, but this mode
          has the similar impact on alloctable memory for other unrelated
          processes if the limited process continues to allocate large amounts
          of memory.
    
      2 - active mode.  Pagedaemon operates normally, but additional actions
          are taken for processes exceeding their RLIMIT_RSS.
    
          Enforces RSS on a per-process basis by actively freeing clean pages
          and actively paging out dirty pages.  This has the least impact on
          other unrelated processes but can cause the limited process to stall
          for short periods of time.  This mode has the least impact on
          allocatable memory.
    
          However, this mode can cause excessive paging to swap, and thus is
          not the default.

Summary of changes:
 sys/vm/vm_fault.c   |  3 ++-
 sys/vm/vm_pageout.c | 31 +++++++++++++++++++++----------
 sys/vm/vm_pageout.h |  1 +
 3 files changed, 24 insertions(+), 11 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/486b807a221da48a97f879876c53696f68ca20c7


-- 
DragonFly BSD source repository


More information about the Commits mailing list