linux/mm/vmscan.c
<<
>>
Prefs
   1/*
   2 *  linux/mm/vmscan.c
   3 *
   4 *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
   5 *
   6 *  Swap reorganised 29.12.95, Stephen Tweedie.
   7 *  kswapd added: 7.1.96  sct
   8 *  Removed kswapd_ctl limits, and swap out as many pages as needed
   9 *  to bring the system back to freepages.high: 2.4.97, Rik van Riel.
  10 *  Zone aware kswapd started 02/00, Kanoj Sarcar (kanoj@sgi.com).
  11 *  Multiqueue VM started 5.8.00, Rik van Riel.
  12 */
  13
  14#include <linux/mm.h>
  15#include <linux/module.h>
  16#include <linux/gfp.h>
  17#include <linux/kernel_stat.h>
  18#include <linux/swap.h>
  19#include <linux/pagemap.h>
  20#include <linux/init.h>
  21#include <linux/highmem.h>
  22#include <linux/vmstat.h>
  23#include <linux/file.h>
  24#include <linux/writeback.h>
  25#include <linux/blkdev.h>
  26#include <linux/buffer_head.h>  /* for try_to_release_page(),
  27                                        buffer_heads_over_limit */
  28#include <linux/mm_inline.h>
  29#include <linux/backing-dev.h>
  30#include <linux/rmap.h>
  31#include <linux/topology.h>
  32#include <linux/cpu.h>
  33#include <linux/cpuset.h>
  34#include <linux/compaction.h>
  35#include <linux/notifier.h>
  36#include <linux/rwsem.h>
  37#include <linux/delay.h>
  38#include <linux/kthread.h>
  39#include <linux/freezer.h>
  40#include <linux/memcontrol.h>
  41#include <linux/delayacct.h>
  42#include <linux/sysctl.h>
  43#include <linux/oom.h>
  44#include <linux/prefetch.h>
  45
  46#include <asm/tlbflush.h>
  47#include <asm/div64.h>
  48
  49#include <linux/swapops.h>
  50
  51#include "internal.h"
  52
  53#define CREATE_TRACE_POINTS
  54#include <trace/events/vmscan.h>
  55
  56struct scan_control {
  57        /* Incremented by the number of inactive pages that were scanned */
  58        unsigned long nr_scanned;
  59
  60        /* Number of pages freed so far during a call to shrink_zones() */
  61        unsigned long nr_reclaimed;
  62
  63        /* How many pages shrink_list() should reclaim */
  64        unsigned long nr_to_reclaim;
  65
  66        unsigned long hibernation_mode;
  67
  68        /* This context's GFP mask */
  69        gfp_t gfp_mask;
  70
  71        int may_writepage;
  72
  73        /* Can mapped pages be reclaimed? */
  74        int may_unmap;
  75
  76        /* Can pages be swapped as part of reclaim? */
  77        int may_swap;
  78
  79        int order;
  80
  81        /* Scan (total_size >> priority) pages at once */
  82        int priority;
  83
  84        /*
  85         * The memory cgroup that hit its limit and as a result is the
  86         * primary target of this reclaim invocation.
  87         */
  88        struct mem_cgroup *target_mem_cgroup;
  89
  90        /*
  91         * Nodemask of nodes allowed by the caller. If NULL, all nodes
  92         * are scanned.
  93         */
  94        nodemask_t      *nodemask;
  95};
  96
  97#define lru_to_page(_head) (list_entry((_head)->prev, struct page, lru))
  98
  99#ifdef ARCH_HAS_PREFETCH
 100#define prefetch_prev_lru_page(_page, _base, _field)                    \
 101        do {                                                            \
 102                if ((_page)->lru.prev != _base) {                       \
 103                        struct page *prev;                              \
 104                                                                        \
 105                        prev = lru_to_page(&(_page->lru));              \
 106                        prefetch(&prev->_field);                        \
 107                }                                                       \
 108        } while (0)
 109#else
 110#define prefetch_prev_lru_page(_page, _base, _field) do { } while (0)
 111#endif
 112
 113#ifdef ARCH_HAS_PREFETCHW
 114#define prefetchw_prev_lru_page(_page, _base, _field)                   \
 115        do {                                                            \
 116                if ((_page)->lru.prev != _base) {                       \
 117                        struct page *prev;                              \
 118                                                                        \
 119                        prev = lru_to_page(&(_page->lru));              \
 120                        prefetchw(&prev->_field);                       \
 121                }                                                       \
 122        } while (0)
 123#else
 124#define prefetchw_prev_lru_page(_page, _base, _field) do { } while (0)
 125#endif
 126
 127/*
 128 * From 0 .. 100.  Higher means more swappy.
 129 */
 130int vm_swappiness = 60;
 131long vm_total_pages;    /* The total number of pages which the VM controls */
 132
 133static LIST_HEAD(shrinker_list);
 134static DECLARE_RWSEM(shrinker_rwsem);
 135
 136#ifdef CONFIG_MEMCG
 137static bool global_reclaim(struct scan_control *sc)
 138{
 139        return !sc->target_mem_cgroup;
 140}
 141#else
 142static bool global_reclaim(struct scan_control *sc)
 143{
 144        return true;
 145}
 146#endif
 147
 148static unsigned long get_lru_size(struct lruvec *lruvec, enum lru_list lru)
 149{
 150        if (!mem_cgroup_disabled())
 151                return mem_cgroup_get_lru_size(lruvec, lru);
 152
 153        return zone_page_state(lruvec_zone(lruvec), NR_LRU_BASE + lru);
 154}
 155
 156/*
 157 * Add a shrinker callback to be called from the vm
 158 */
 159void register_shrinker(struct shrinker *shrinker)
 160{
 161        atomic_long_set(&shrinker->nr_in_batch, 0);
 162        down_write(&shrinker_rwsem);
 163        list_add_tail(&shrinker->list, &shrinker_list);
 164        up_write(&shrinker_rwsem);
 165}
 166EXPORT_SYMBOL(register_shrinker);
 167
 168/*
 169 * Remove one
 170 */
 171void unregister_shrinker(struct shrinker *shrinker)
 172{
 173        down_write(&shrinker_rwsem);
 174        list_del(&shrinker->list);
 175        up_write(&shrinker_rwsem);
 176}
 177EXPORT_SYMBOL(unregister_shrinker);
 178
 179static inline int do_shrinker_shrink(struct shrinker *shrinker,
 180                                     struct shrink_control *sc,
 181                                     unsigned long nr_to_scan)
 182{
 183        sc->nr_to_scan = nr_to_scan;
 184        return (*shrinker->shrink)(shrinker, sc);
 185}
 186
 187#define SHRINK_BATCH 128
 188/*
 189 * Call the shrink functions to age shrinkable caches
 190 *
 191 * Here we assume it costs one seek to replace a lru page and that it also
 192 * takes a seek to recreate a cache object.  With this in mind we age equal
 193 * percentages of the lru and ageable caches.  This should balance the seeks
 194 * generated by these structures.
 195 *
 196 * If the vm encountered mapped pages on the LRU it increase the pressure on
 197 * slab to avoid swapping.
 198 *
 199 * We do weird things to avoid (scanned*seeks*entries) overflowing 32 bits.
 200 *
 201 * `lru_pages' represents the number of on-LRU pages in all the zones which
 202 * are eligible for the caller's allocation attempt.  It is used for balancing
 203 * slab reclaim versus page reclaim.
 204 *
 205 * Returns the number of slab objects which we shrunk.
 206 */
 207unsigned long shrink_slab(struct shrink_control *shrink,
 208                          unsigned long nr_pages_scanned,
 209                          unsigned long lru_pages)
 210{
 211        struct shrinker *shrinker;
 212        unsigned long ret = 0;
 213
 214        if (nr_pages_scanned == 0)
 215               nr_pages_scanned = nr_pages_scanne6.LUSTER_MAXscan.c#L188" id=nne6.LUSTER_MAXline" name="L212"> 212    n class="   if (( 187#d2         2           struct mem_cgroup_disab clasclas_try
shrinker_rwsem);
  57     2         2                        2     2                       which the VM controls */Athat iweng  82     2         2           prevref="mm/vmscan.c#L213" id="L213" class="lin1name="L22">  22#includ href="mma href="include/linux/ini=pref2tchw" class="sref">prego61"ref="mm/vmscan.ouL213" id="L213" ouLline" name="L212"> 212   ude < 186
<2ude < 153  2ude <list_add_tail(&_hea="L_eache=_heaef">unregister_shrine=sc" class="sref">sc);
  57     2ude < 212   u         a href="include/linux/blkL126"22ed" class="sref">nr_p
 212   un class="a href="include/linux/bufclass22ass="sref">_page)
 212   u        2omment">                 f="mm22=page" class="sref">p">do_shrinker_shrinsref">sc#L213" id="L213" sref">sc#Lss="line" name="L213"> 213
 212   u        2a href="include/linux/bacef="m22class="sref">prev>nr_pages_scannedew_>,de=SHu4de=snr_paew_>,line" name="L212"> 212    pre>nr_pages_scannednr_pages_sccode=shrink" class="sref">shrink)(nr_pages_sccode=shrink" class="sref">shrink)( 212    de < 212    de < 133st2tic pref="mm/vmscan.maxes_mm/vmscan.c#L131"maxes_mmline"sref">nr_pages_sck(struct shrin, sc);
 162  2tic  215    href="mm2vmscan.c#L136" id="L136"2class23class="sref">prev =  162  2tn class="f="+code=CONFIG_MEMCG" c2ass="23line" name="L187"> 187#d2tic bo23=page" class="sref">p.c#L189" id="L189" class="line" name="L189"> 189doscanocal vari9s u="line" name="L189"> 189 194 206  82     2tic bo24ass="sref">_page)ages_scanned,de=SHu4de=snr_pagline"sref">nr_pages_scclass="sref"xchgde=SHu4de=snr_pclass="sref"xchgrinker->list);
 162  2a href="m2/vmscan.c#L144" id="L1442 clas24line" name="L214"> 214        retu2n 
 212   a href="m2/vmscan.c#L146" id="L1462 clas24ed" class="sref">nr_pages_scanned = nr_pages_sccode=shrink" class="sref">shrink)( 212   an class="f="mm/vmscan.c#L147" id=2L147"24ass="sref">_page)ages_scanned;
 212    href="mm2vmscan.c#L148" id="L148"2class24=page" class="sref">p.f">nr_pages_sck_k 162  2a href="m2ed long 
nr_pages_sckeltaef="+code=shrinkeltaline" name="L212"> 212   a href="m2/vmscan.c#L150" id="L1502 clas24class="sref">prevnr_pages_scanned
  57     2     if (2prefetchw(&d208" id="L208" c="">d2shrin, ine" name="L82">  82     2         2   return prefetchwine" n" name="L209"> 209    href="mm2vmscan.c#L153" id="L153"2class25ass="sref">_page)ef">prefetchw(&shrink)(shrinker
 162  2     retu2n p         ef="mm/vmscan.an>
 212   a href="m2/vmscan.c#L155" id="L1552 clas25                     " name="L186"> 186
<2 href="mm2vmscan.c#L156" id="L156"2class2"line" name="L156"> 156/*
_page)ac#L189" id="L189" class="line" name="L189"> 189 * Add a shrink2r cal2back to be called from the vmmmmmmmmmmmmmmmmmes) onn>
 194 */

  86  86
  86

  86 ine" name="L86">  86 206 206
 20626et of this reclaim invocation. 206  82     2an class=2comment">/*
 215   an class=2comment"> * Remove one
26class="sref">prev = 
 162  2an class=2comment"> */
  71     2d  189 189 189 206  82     2a href="m2/vmscan.c#L177" id="L1772 clas27ass="sref">_page)->ages_scanned
  82     2an class=2e=EXPORT_SYMBOL" class="2ref">27=page" class="sref">page  ef="mm/vmscan.an>
 162  2an class=2vmscan.c#L179" id="L179"2class2"line" name="L179"> 179st2tic 27class="sref">prevref="mm/vmscan.trace_mm_ol" class="">lrrL213" id="L213" trace_mm_ol" class="">lrrLshrin, sc);
;
 209            2                        2truct2ref="mm/vmscan.>,
 209     
 162  2a href="m2/vmscan.c#L183" id="L1832 clas28line" name="L133"> 133st2     sc<28=page" class="sref">pss="linages_scanned
;
  57     2     retu2n (*do_shrinker_shrind="be="Lemscan.c#L209" id="be="Leline" name="L212"> 212   a href="m2/vmscan.c#L186" id="L1862 clas28line" name="L156"> 156prefetch(&nr_pages_sck(struct shrin, sc);
 162  2fine page  ef="mm/vmscan.sref">sc#L213" id="L213" sref">sc#Lss="linef">nr_pages_sck(struct shrin, sc);
 162  2fn class=2comment">/*
 162  2fic  * Call the shr2nk fu28class="sref">prev = sc#L213" id="L213" sref">sc#Lss="li= -1eame="L82">  82     2an class=2comment"> *
 162  2an class=2comment"> * Here we assu2e it 29 long sc#L213" id="L213" sref">sc#Lss="l"freiages_scanned  82     2a href="m2comment"> * takes a seek2to re29ass="sref">_page)ef">prefetchwref="mm/vmscan.c#L213" id="L213" class="l+sref">nr_pages_scd="be="Lemscan.c#L209" id="be="Leline"-  ef="mm/vmscan.sref">sc#L213" id="L213" sref">sc#Lss="" name="L162"> 162  2a     * percentages 2f the29=page" class="sref">p         ef="mm/vmscan.press_vm_eventm/vmscan.c#L131"press_vm_eventmshrin,  162  2an class=2comment"> * generated by2these29                             ages_scanned
 162  2a href="m2comment"> *
 156 * If the vm en2ounte29ch" class="sref">prefetch(& 162  2aine  * slab to avoi2 swap29                       name="L162"> 162  2an class=2comment"> *
 179st2an class=2comment"> * We do weird 2hings29class="sref">prevrc#L189" id="L189" class="line" name="L189"> 189 *
dosn>
 189 * Here we assu39; re3resents the number of on-LRU ssssssssssssssss* 0ass=r="L192handles2hriaurr" c
updat"mm/IfL206exhaus.c#Ls="line" name="L86">  86 * are eligible3for t3e caller's allocation attssssssssssssssss* /a><,Ls="rL scanoonn>
 206 * slab reclaim3versu3 page reclaim.
  82     3an class=3comment"> *
 215  3an class=3comment"> * Returns the 3umber30class="sref">prev = nr_pages_scdew_>,de=SHu4de=snr_paew_>,line"sref">nr_pages_scclass="sref"sref eker 215  3a6 class=3comment"> * If the vm en3ef="m30ch" class="sref">prefetch>>>>>>>>>>>>>>>>r->list);
 162  3igned lon3  142st3         3             unsigned lo3g nr_pages_scdew_>,de=SHu4de=snr_paew_>,line"sref">nr_pages_scclass="sref"clasde=SHu4de=snr_pclass="sref"classhrinr->list);
 162  3i9       3 omment"> * We do weird 3g  162  3a href="m3/vmscan.c#L211" id="L2113 clas31a href="+code=shrink_ref="mm/vmscan.trace_mm_ol" class=""ensde=SHu4de=snr_ptrace_mm_ol" class=""ensshrin, sc);
sc#Lss=""i;
nr_pages_scdew_>,de=SHu4de=snr_paew_>,linee" name="L162"> 162  3     stru3t  186
<3     unsi3ned long retef">nr_pages_scup"clasde=SHu4de=snr_pup"classhrinr-> 176}
3 href="mm3vmscan.c#L214" id="L214"3class3"line"-> 176}
3 n class=3a href="+code=nr_pages_s3anned3 class="sref">(& 162  3         3  zone_page_state(c#L213" id="L213" class="" name="L162"> 162  3 6 class=3   if (( 177 168do_shrinker_shrinis"sref"ref="_free9s urinker_shrink" cs"sref"ref="_free9s ushrinker *, ;
,  215  3         3            150  3d href="m3a href="include/linux/in3=pref3tchw" class="src#L189" id="L189" class="line" name="L189"> 189
 189 189
 206  82     3u        3a href="include/linux/bl3L126"32ed" class="sr">zone_page_state(sref"rress="+code=_page" c/a>"rressshrin, , "has"srivat"shrin, ,  162  3un class=3a href="include/linux/bu3class32"line" name="L177"> 177                3f="mm32line" name="L168"> 168do_shrinker_shrinmayss="sr claque45" id="L145" clamayss="sr claque45shrinker *;
 215  3u        3a href="include/linux/ba3ef="m32class="sref">prev>>>>>>>>>>>>>>can_control *sc)
 143{
3  211  3 de <<3"+code=vm_total_pages" c3ass="33 long );
ntrol * 143{
3     unsi3vmscan.c#L133" id="L133"3class33ass="sref">_page)">zone_1name="L22">  22#incl3tic mem_cgroup_disab"diss="sr >)
ges.c#="+code=lruvec""diss="sr >)
ges.c#shrin,  151  3tic zone_1name="L22">  22#incl3t        3vmscan.c#L136" id="L136"3class33class="sref">nr_pages_scanned);
 151  3tn class=3f="+code=CONFIG_MEMCG" c3ass="33ch" class="sref">pref">zone_1name="L22">  22#incl3t        3f="+code=bool" class="sr3f">bo33=page" class=">zone_e" name="L213"> 213
<3a href="m3/vmscan.c#L139" id="L1393 clas33mscan" name="L177"> 177 162  3a href="m3/vmscan.c#L141" id="L1413 clas34mscan.c#L201" id="L201" class="line" name="L189"> 189 189bo34 caller's allocation attem-ENOSPCmm/v onn>
dosn>
)line" name="L189"> 189 206 205
 203="line" name="L203"> 203
 206 199 194 206  82     3 href="mm3vmscan.c#L153" id="L153"3class35ass="class="ef">unregister_shrinhandless="sr error="+code=lruvec"handless="sr errorshrinker * 215  3     retu3n p        >>>>>>>>can_control *, ;
, do_shrinker_shrinerror="+code=lruvec"errorshri" name="L151"> 151  3a href="m3/vmscan.c#L155" id="L1553 clas35     " name="L211"> 211  3 href="mm3vmscan.c#L156" id="L156"3class35>up_write(&,  213
<3an class=3comment">/*
_pnr_pages_scanned"m" clas" id="L145" clac/a>"m" classhrin, ,  151  3a        3comment"> * Add a shrink3r cal35=page" class="sref">p.f">nr_pages_scma clas">sh error="+code=lruvec"ma clas">sh errorshrin,  213
<3a href="m3comment"> */
,  213
<3a href="m3"+code=register_shrinker3 clas35o avo" name="L177"> 177  71     3a        3ef="+code=atomic_long_se3" cla36nodes allowed by the caller/ ipossis usouLhrm>ce tc/a>ouL() e"line" name="L82">  82     3ahref="mm3ef="+code=down_write" cl3ss="s36  57     3a    retu3ef="+code=list_add_tail"3class3"sref">list_addallowed by the caller/ ifail>
  82     3a href="m3ef="+code=up_write" clas3="sre3">up_write(& 215  3 href="mm3/vmscan.c#L166" id="L1663 clas365ref">list_addallowed by the caller/ i0" cl="L20dosn>
  82     3an class=3e=EXPORT_SYMBOL" class="3ref">366up_write(& 215  3         3vmscan.c#L168" id="L168"3class367ref">list_addallowed by the caller/ i="L20has been s" c
dosn>
  82     3a href="m3comment">/*
 215  3  href="m3comment"> * Remove one
36class="sref">dallowed by the caller/ i="L20scanlelow id=locked e"line" name="L82">  82     3an class=3comment"> */
 215  3d  *ouL_sss="" name="L162"> 162  3a href="m3/vmscan.c#L173" id="L1733 clas37line" name="L133"> 133st3a    retu3ef="+code=down_write" cl3ss="s37ref="mm/vmscan.c#L94" id="Lss="line" name="L189"> 189ouL scanallc#L195sref">sc/a>"ass=() ed feachLdirtytc/a>s="line" name="L206"> 206 206 207un3an class=3e=EXPORT_SYMBOL" class="3ref">37=pageclass="page_state(hrefouL_s="+code=_page" c/a>ouL_sss=""page_state(hrefouL="+code=_page" c/a>ouLshrinker *, ;
, can_control * 215  3an class=3vmscan.c#L179" id="L179"3class37                           \
 *sc)
 143{
3tic 37"line" name="L150"> 150  3         3                        3truct38chw" class="src#L189" id="L189" class="line" name="L189"> 189 189
 189sc<38page reclaim.
 189
)line" name="L189"> 189 206 189 189/*
)line" name="L189"> 189 * Call the shr3nk fu3ctions to age shrinkable cachssssssss*=wi2" blocks="line" name="L206"> 206 *
 189 * Here we assu3e it 3osts one seek to replace a lrssssssss* ncrease="L20sca98" ref=",.s="sr ispmscanevenn"f."L19 w#L19="line" name="L189"> 189 * takes a seek3to re3reate a cache object.  With tssssssss* block,d="L2srm>cthrottllass mscanh 189 * percentages 3f the3lru and ageable caches.  This4" class* c8" _" caief"devL16foncanbust: ispdoesnng  86 * generated by3these3structures.
)
ges.ref=clasece the sc8" devmm/vEasf="o fix,n"f.nn>
eds="line" name="L206"> 206 *
 207un3an class=3comment"> * If the vm en3ounte39ass="sref">_pnr_pmem_cgroup_disabis"sref"ref="_free9s urinker_shrink" cs"sref"ref="_free9s ushrin, ,  143{
3aine  * slab to avoi3 swap39                     ">zone_page_state(PAGE_KEEP/vmscan.c#L131"PAGE_KEEPline" name="L162"> 162  3an class=3comment"> *
_pnr_pmem_cgroup_disabm" clas" id="L145" clama clasline" name="L57">  57     3an class=3comment"> * We do weird 3hings39class="sref">prevrc#L189" id="L189" class="line" name="L189"> 189 *
cdata jooneallas orpha= 0;scan.cren 189 * Here we assu49; re4resents the number of on-LRU ssssssssssssssss* ="L2 206 * are eligible4for t4e caller's allocation attssssssssssssssss*s="line" name="L207"> 207un4an class=4comment"> * slab reclaim4versu40=page" class="sref">pnr_pages_scanned"has"srivat"="+code=_page" c/a>"has"srivat"shrin, ,   57     4an class=4comment"> *
pnr_pages_scanned,   57     4a5 class=4comment"> *
prev = r ,  213
<4a6 class=4comment"> * If the vm en4ef="m40ch" class="sref">prefetch>>>>>>>>, d208" id="L208" c="">d2shrin,r's allostm/vm"line" nng<7;s: orpha= 0;scan\nl.hine" n">,  213
<4a7 class=4comment"> * slab to avoi4ab" c40                                     ">zone_page_state(PAGE_CLEAN/vmscan.c#L131"PAGE_CLEANline" name="L213"> 213
<4a8 class=4comment"> *
 177 * We do weird 4g  177zone_page_state(PAGE_KEEP/vmscan.c#L131"PAGE_KEEPline" name="L162"> 162  4     stru4t  186
<4     unsi4ned long retnr_pages_scanned 143{
4 href="mm4vmscan.c#L214" id="L214"4class41=page" class="sref">p">zone_page_state(PAGE_ACTIVATE/vmscan.c#L131"PAGE_ACTIVATEline" name="L162"> 162  4 n class=4a href="+code=nr_pages_s4anned4 class="sref">nr_pmem_cgroup_disabm"yss="sr claque45" id="L145" clamayss="sr claque45shrinages_scanned 143{
4 5 class=4  nr_p">zone_page_state(PAGE_KEEP/vmscan.c#L131"PAGE_KEEPline" name="L162"> 162  4 6 class=4   if (( 187#d4         4           struct page_state(nlel="L209_dirtya="L_io="+code=lruvec"nlel="L209_dirtya="L_ioshrin, ,   57     4         4                        4     4                      ">do_shrinker_shrinr.c#L210" id="L210remline" name="L212"> 212  4         4           prevcan_control *s="srmsca+code=scss=""page_state(wb id="L143" classwb line"= name="L57">  57     4d href="m4a href="include/linux/in4=pref4tchw" class="sref">preeeeeeeee.mm/vmscan.c#L185ync_m#L1id="L143" class=ync_m#L1line"= mm/vmscan.c#L18WB_SYNC_NONE/vmscan.c#L131"WB_SYNC_NONElinee name="L215"> 215  4ude <<4a href="include/linux/hi4     42 long  215  4u    unsi4  href="include/linux/vm4tt" c42ass="sref">_page)ef">pref.mm/vmscan.c#L18ran"L">lrrL213" id="L213" ran"L">lrrLline"= 0e name="L215"> 215  4uhref="mm4a href="include/linux/fi4124" 42=page" class="sref">p        .mm/vmscan.c#L18ran"L"ensde=SHu4de=snr_pran"L"ensline"= mm/vmscan.c#L18LLONG_MAX/vmscan.c#L131"LLONG_MAXlinee name="L215"> 215  4un class=4a href="include/linux/wr4lru_p42                     "sref">p.mm/vmscan.c#L18="L_reef=imscan.c#L176" id="L_reef=imline"= 1e name="L215"> 215  4u5 class=4a href="include/linux/bl4L126"42ed" class="sref">nr_p}" name="L212"> 212  4un class=4a href="include/linux/bu4class42line" name="L187"> 187#d4u        4omment">                4f="mm42=page" class="sref">pmm/vmscan.c#L18=etP"L2Reef=imscan.c#L176" id=etP"L2Reef=imshrin, ,  213
<4ude <<4a href="include/linux/mm4.  Hi42                     _shrinker_shrinr.c#L210" id="L210remlinecan;
, r-> 213
<4u        4a href="include/linux/ba4ef="m42class="sref">prevef">page_state(r.c#L210" id="L210remlinec"freine name="L213"> 213
<4 prefetchw(& *,  * 213
<4 de <<4"+code=vm_total_pages" c4ass="43 long page_state(r.c#L210" id="L210remlinec== ages_scanned  57     4     unsi4vmscan.c#L133" id="L133"4class43ass="sref">_page)fetchw(&,  213
<4tic p        ">zone_page_state(PAGE_ACTIVATE/vmscan.c#L131"PAGE_ACTIVATEline" name="L162"> 162  4tic  186
<4t        4vmscan.c#L136" id="L136"4class43line" name="L156"> 156prefnr_pmem_cgroup_disabP"L2W="srmsca/vmscan.c#L131"P"L2W="srmscashrin, ,   57     4t        4f="+code=bool" class="sr4f">bo43=page" class="sref">page  allowed by the caller/ isynchronous s="sr or brokenn>_opc?s*s="line" name="L207"> 207un4a href="m4/vmscan.c#L139" id="L1394 clas43ef="+code=nr_pages_scanned" cef">nr_pages_scClelrP"L2Reef=imscan.c#L176" idClelrP"L2Reef=imshrin, ,  213
<4t        4n ! 177, ref="mm/vmscan.trace_reef=im_flagm/vmscan.c#L131"trace_reef=im_flagmshrin, ,  213
<4se
, ref="mm/vmscan.NR_VMSCAN_WRITE/vmscan.c#L131"NR_VMSCAN_WRITE,  213
<4s    unsi4f="+code=bool" class="sr4f">bo44ass="sref">_page)">zone_page_state(PAGE_SUCCESS/vmscan.c#L131"PAGE_SUCCESSline" name="L213"> 213
<4sic  177 177zone_page_state(PAGE_CLEAN/vmscan.c#L131"PAGE_CLEANline" name="L213"> 213
<4an class=4f="mm/vmscan.c#L147" id=4L147"44"line" name="L177"> 177 168 189
)line" name="L189"> 189zonecd=withapa="Lpresspof 0s="line" name="L206"> 206  82     4 href="mm4vmscan.c#L153" id="L153"4class45ass="class="">do_shrinker_shrin__"L0" c"m" clas08" id="L208" c__"L0" c"m" claslinencan_control *can_control *, ;
,  213
<4     retu4n   57     4a href="m4/vmscan.c#L155" id="L1554 clas45>up_write(&,  213
<4 href="mm4vmscan.c#L156" id="L156"4class45>up_write(&"m" clas" id="L145" clac/a>"m" classhrin, ,  213
<4 n class=4comment">/*
 187#d4a        4comment"> * Add a shrink4r cal45=page" class=mm/vmscan.c#L185cla_lock"irqid="L143" class=cla_lock"irqshrinr-> 213
<4a href="m4comment"> */
 189 206 189
one0has="line" name="L194"> 194 206
. So scrP"L2Dirty#L20"es.c#"be="Le c/a>"rressshline" name="L206"> 206 189 18946et of this reclaim invocation.L209);="line" name="L189"> 189 189/*
 189 * Remove one
46o avoid (scanned*seeks*entrissssssssnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk!P"L2Dirty(L209)kkkk[good]="line" name="L189"> 189 */
 189 189"rress(L209)kkk[good, 189 189 189 189

 18947ack to be called from the vmmmmmmmmm* e89 189 20647o avoid (scanned*seeks*entrissssssssn="line" name="L206"> 206ways 206
ef="c#Lord="las0cannot requireds="line" name="L206"> 206  82     4     retu4ef="+code=sc" class="sre4">sc<48=page" class=nr_pmem_cgroup_disabL209_freeze_refm/vmscan.c#L131"L209_freeze_refmlinen, , 2"" name="L143"> 143{
4     (nennot_free="+code=lruvec"nennot_freeline" name="L213"> 213
<4a href="m4/vmscan.c#L186" id="L1864 clas485ref">list_addallowed by the caller/ ino  82     4 n class=4vmscan.c#L187" id="L187"4class48ass="sref">_pnr_pages_scanned,   57     4 n class=4ef="+code=SHRINK_BATCH" 4lass=48=page" class="sref">pem_cgroup_disabL209_unfreeze_refm/vmscan.c#L131"L209_unfreeze_refmlinen, , 2"" name="L213"> 213
<4a href="m4comment">/*
 213
<4aic  * Call the shr4nk fu48class="sref">" name="L177"> 177 *
  71     4an class=4comment"> * Here we assu4e it 49 long ,   57     4a href="m4comment"> * takes a seek4to re49ass="sref">_page)mm/vmscan.c#L185wp_allry cid="L143" class=wp_allry css="smm/vmscan.c#L185wapid="L143" class=waplinecan{p.mm/vmscan.c#L18vac" class="sref">vaclinecan;
"srivat"shrin, ,  212  4a    retu4comment"> * percentages 4f the49=page" class="sref">p_shrinker_shrin__delet9_from_c8" _cef="="+code=_page" __delet9_from_c8" _cef="shrin, ,  213
<4an class=4comment"> * generated by4these49                     mm/vmscan.c#L185cla_unlock"irqid="L143" class=cla_unlock"irqshrinr-> 213
<4a href="m4comment"> *
nr_pmm/vmscan.c#L185wapref="_freeid="L143" class=wapref="_freeshrin,  *,  213
<4an class=4comment"> * If the vm en4ounte49ass="sref">_p} ine" name="L57">  57     4an class=4comment"> * slab to avoi4 swap49                     ef">u(>;
 *, "" name="L213"> 213
<4a href="m4comment"> *
 179st4an class=4comment"> * We do weird 4hings49class="sref">prevr
;
 213
<5an class=5comment"> *
  71     5a1 class=5comment"> * Here we assu59; re50oup_get_lru_size" claam_cgroup_disab__delet9_from_sref"ref="="+code=_page" __delet9_from_sref"ref="shrin, ,  213
<5an class=5comment"> * are eligible5for t50ass="sref">_page)mm/vmscan.c#L185cla_unlock"irqid="L143" class=cla_unlock"irqshrinr-> 213
<5an class=5comment"> * slab reclaim5versu50=page" class="sref">p->,  213
<5a4 class=5comment"> * generated by5f="mm50mscan name="L177"> 177 *
prevnr_pages_scanned 143{
5a6 class=5comment"> * If the vm en5ef="m50ch" class="sref">prefetchages_scanned,  213
<5a7 class=5comment"> * slab to avoi5ab" c50             " name="L177"> 177 *
 179st5i9       5 omment"> * We do weird 5g zone_1name="L22">  22#incl5a href="m5/vmscan.c#L211" id="L2115 clas51ne" name="L71">  71     5     stru5t (nennot_free="+code=lruvec"nennot_freeline: name="L176"> 176}
5     unsi5ned long retef">nr_pages_sc5cla_unlock"irqid="L143" class=cla_unlock"irqshrinr-> 213
<5 href="mm5vmscan.c#L214" id="L214"5class51=page" class=">zone_e" name="L213"> 213
<5 n class=5a href="+code=nr_pages_s5anned5 class" name="L177"> 177 156 189 189one0ine" has pa="Lhref="mmL192, abort  id=">zone_e.  ncrit0was="line" name="L194"> 194zone_1.  Assumesthe salanci0hasapasinglea="Lhre="line" name="L194"> 194 206  82     5u    unsi5  href="include/linux/vm5tt" c52ass="">do_shrinker_shrinr.0" c"m" clas08" id="L208" c"L0" c"m" claslinencan_control *can_control *, ;
,  213
<5uhref="mm5a href="include/linux/fi5124" 52=pagename="L57">  57     5un class=5a href="include/linux/wr5lru_p52class="sref">nr_pam_cgroup_disab__"L0" c"m" clas08" id="L208" c__"L0" c"m" claslinenm/vmscan.c#L143m" clas" id="L145" clama claslinee>, ,   57     5u5 class=5a href="include/linux/bl5L126"52ed" class="sref">nr_pn.c#L207" id="L207" clss="line" name="L189"> 189
 189                5f="mm52ack to be called from the vmmmmmmmmmssssssss* dropsf="mmL192ref="sr"Lhed fus sithouL requir/vmscnothci="line" name="L189"> 189 206  82     5 preem_cgroup_disabL209_unfreeze_refm/vmscan.c#L131"L209_unfreeze_refmlinen, , 1"" name="L213"> 213
<5 de <<5"+code=vm_total_pages" c5ass="53 long zone_1name="L22">  22#incl5     unsi5vmscan.c#L133" id="L133"5class53ass="sref">_p" name="L177"> 177 213
<5tic  177 156 189bo53ng.
dosa cropriasecLRUcass=="line" name="L189"> 189 189 189 206 206bo54 caller's allocation atte="line" name="L206"> 206derrupts must bL1en9s uds="line" name="L206"> 206  82     5a        5/vmscan.c#L146" id="L1465 clas54ed" cef">unregister_shrinputmsca+lru_href="+code=_page" cutmsca+lru_hreflinencan_control *, ;
,  213
<5an class=5f="mm/vmscan.c#L147" id=5L147"54"linename="L57">  57     5a        5vmscan.c#L148" id="L148"5class54=page" class=e>do_shrinker_shrinlru="+code=_page" lru,  213
<5  href="m5ed long do_shrinker_shrinac/vmsde=SHu4de=snr_pcc/vms, ,  213
<5a href="m5/vmscan.c#L150" id="L1505 clas549page" class=e>do_shrinker_shrinwas_unevict9s u="+code=_page" was_unevict9s u, ;
,  213
<5     if (5  71     5         5   return ,  213
<5     unsi5vmscan.c#L153" id="L153"5class55line" name="L133"> 133st5     retu5n  176}
5a href="m5/vmscan.c#L155" id="L1555 clas55>up_write(&,  213
<5         5vmscan.c#L156" id="L156"5class55line" name="L156"> 156/*
_pnr_pages_scanned"evict9s u="+code=_page" c/a>"evict9s ushrin, ,   57     5a        5comment"> * Add a shrink5r cal55=page" class="sref">p..c#L207" id="L207" clss="line" name="L189"> 189 */
 206 194 206 206  82     5a    retu5ef="+code=list_add_tail"5class56=page" class="sref">p->;
"lru_bas2_type, ,  213
<5a href="m5ef="+code=up_write" clas5="sre56                     mm/vmscan.c#L18lru_ref="_add_lru="+code=_page" lru_ref="_add_lrulinen, , -> 213
<5a        5/vmscan.c#L166" id="L1665 clas565ref">list_ad} ine" name="L57">  57     5an class=5e=EXPORT_SYMBOL" class="5ref">56ch" class="sref">pref..c#L207" id="L207" clss="line" name="L189"> 189 189/*
 206 * Remove one
56o avoid (scanned*seeks*entrissssssssssssssss*"line" name="L82">  82     5an class=5comment"> */
preem_cgroup_disablru="+code=_page" lru, ;
 213
<5d "to_unevict9s u"ass=de=SHu4de=snr_pcdd_c/a>"to_unevict9s u"ass=, ,  213
<5dhref="mm5/vmscan.c#L173" id="L1735 clas57ass="sref">_page)m.c#L207" id="L207" clss="line" name="L189"> 189 189aL screaseos="rs"Lrea9="line" name="L189"> 189 194 19457ack to be called from the vmmmmmmmmmssssssss* wL1see PG_mlocked/AS_UNEVICTABLE nlel=c#"below  id=0" c="line" name="L194"> 194 20657o avoid (scanned*seeks*entrissssssssssssssss*="line" name="L206"> 206 206  82     5  href="m5/vmscan.c#L183" id="L1835 clas58ass="sref">_page)mm/vmscan.c#L185mp_mbid="L143" class=mp_mb,  213
<5     retu5ef="+code=sc" class="sre5">sc<58=page" class=" name="L177"> 177 177list_addallowed by the caller/ line" name="L82">  82     5 n class=5vmscan.c#L187" id="L187"5class58et of this reclaim invocation. 189 unevict9s uhass=,Lit never bL1freed.kTo aef">un>aL,="line" name="L194"> 194/*
 206 * Call the shr5nk fu5ctions to age shrinkable cachssssssss*"line" name="L82">  82     5an class=5comment"> *
;
rreem_cgroup_disabL209_evict9s u="+code=_page" c/a>"evict9s ushrin, ,   57     5an class=5comment"> * Here we assu5e it 59 long mem_cgroup_disabisolate+lru_href="+code=_page" isolate+lru_hrefshrin, ,   57     5a href="m5comment"> * takes a seek5to re59ass="sref">_page)age)mm/vmscan.c#L18put"sref="+code=_page" cut_hrefshrin, ,  213
<5a    retu5comment"> * percentages 5f the59=page" class="sref">pppppppppgodospage_state(r.do="+code=lruvec"r.doline" name="L213"> 213
<5a     * generated by5these59                     " name="L177"> 177 *
nr_pmallowed by the caller/ imscanmeansnsrm>one0ine" droppedhdacanc"L20L158"LRUshne" name="L82">  82     5an class=5comment"> * If the vm en5ounte59vmscan.c#L207" id="L207" cla4" classssssssss* So,Lit wi2" bL1freed d fcutmsca2sosLRUcagains Tasr90cashne" name="L82">  82     5an class=5comment"> * slab to avoi5 swap59ack to be called from the vmmmmmmmmmssssssss* nothlas0no do ="rLs="line" name="L206"> 206 *
  82     5aic  * We do weird 5hings59class="sref">" name="L177"> 177 *
  71     6a1 class=6comment"> * Here we assu69; re60 long reem_cgroup_disablru="+code=_page" lru,  213
<6an class=6comment"> * are eligible6for t60ass="sref">_page)mm/vmscan.c#L18press_vm_event="+code=_page" press_vm_eventshrin,  213
<6an class=6comment"> * slab reclaim6versu60=page" class=ine" ef">mem_cgroup_disabwas_unevict9s u="+code=_page" was_unevict9s u, reem_cgroup_disablru="+code=_page" lru, ;
 213
<6a4 class=6comment"> * generated by6f="mm60                     mm/vmscan.c#L18press_vm_event="+code=_page" press_vm_eventshrin,  213
<6a5 class=6comment"> *
 156 * If the vm en6ef="m60ch" class="srmm/vmscan.c#L18put"sref="+code=_page" cut_hrefshrin, , nr_pmallowed by the caller/ idropsr"Lhe158"isolates*"line" name="L82">  82     6a7 class=6comment"> * slab to avoi6ab" c60     " name="L177"> 177 *
 179st6i9       6 omment"> * We do weird 6g m/vmscan.c#L131"L209_rLf"rLnc>mh" clname="L57">  57     6a href="m6/vmscan.c#L211" id="L2116 clas61a href="+code,   57     6a1 class=6t   57     6an class=6ned long retef">nr_pages_scPAGEREF_KEEP/vmscan.c#L131"PAGEREF_KEEP,   57     6an class=6vmscan.c#L214" id="L214"6class61=page" class=ef">nr_pages_scPAGEREF_ACTIVATE/vmscan.c#L131"PAGEREF_ACTIVATE,   57     6a4 class=6a href="+code=nr_pages_s6anned6 class"" name="L213"> 213
<6 5 class=6   156m/vmscan.c#L131"L209_rLf"rLnc>mh" clem_cgroup_disabL209_check_rLf"rLnc>m/vmscan.c#L131"L209_check_rLf"rLnc>mlinencan_control *, ;
,   57     6a7 class=6           struct page                           can_control * +code=sc" class="sref">/a> +code=sc, ;
  57     6a8 class=6                        6     61mscanname="L57">  57     6a9       6           do_shrinker_shrinrLf"rLnc>d_pt.c#L210" id="L210ref"rLnc>d_pt.c, ->d_pref="+code=_page" ref"rLnc>d_prefline" name="L213"> 213
<6d href="m6a href="include/linux/in6=pref6tchw" class="sunsigecd=loas -> 213
<6d1 class=6a href="include/linux/hi6     62esent name="L213"> 213
<6dn class=6  href="include/linux/vm6tt" c62ss="sref">retef">nr_pages_scrLf"rLnc>d_pt.c#L210" id="L210ref"rLnc>d_pt.c, ;
d/vmscan.c#L131"L209_rLf"rLnc>dshrin, ,   57     6uhref="mm6a href="include/linux/fi6124" 62=page" class="sref">p                          r-> 213
<6un class=6a href="include/linux/wr6lru_p62>up_write(&d_pref="+code=_page" ref"rLnc>d_preflinecan;
d/vmscan.c#L131"TestClelrP"L2Ref"rLnc>dshrin, ,  213
<6u5 class=6a href="include/linux/bl6L126"62line" name="L156"> 156  82     6u        6omment">                6f="mm62ack to be called from the vmmmmmmmmm* Mlockn
  82     6u8 class=6a href="include/linux/mm6.  Hi62mscan.c#L189" id="L189" clammmmmmmmm*10" crease="L20soseaseunevict9s uhass=s="line" name="L206"> 206  82     6 eem_cgroup_disabVM_LOCKED="+code=_page" VM_LOCKEDline"ame="L57">  57     6 de <<6"+code=vm_total_pages" c6ass="63 long zone_,  213
<6     unsi6vmscan.c#L133" id="L133"6class63line" name="L133"> 133st6tic nr_pages_scrLf"rLnc>d_pt.c#L210" id="L210ref"rLnc>d_pt.c,   57     6tic ,   57     6t5 class=6vmscan.c#L136" id="L136"6class63ed" class="sref">nr_p="+code=">zone_,  213
<6 n class=6f="+code=CONFIG_MEMCG" c6ass="63ch" class="sref">prefmallowed by the caller/ line" name="L82">  82     6t        6f="+code=bool" class="sr6f">bo63ng.
 189m=L158"n>

, line" name="L189"> 189 189., line" name="L189"> 189 189bo64 caller's allocation attaaaaaaaaaaaaaaaa* Markrit0and r&#rcrit0ed fanos="rs"rip arouid=thu, line" name="L189"> 189 wi2", line" name="L189"> 189 206 206
 189
 189 206  82     6     if (6preem_cgroup_disab=etP"L2Ref"rLnc>d/vmscan.c#L131"=etP"L2Ref"rLnc>dshrin, ,  213
<6         6   return  213
<6     unsi6vmscan.c#L153" id="L153"6class65ass="sref">_page)nr_pef">nr_pages_scrLf"rLnc>d_pref="+code=_page" ref"rLnc>d_preflinec||tef">nr_pages_scrLf"rLnc>d_pt.c#L210" id="L210ref"rLnc>d_pt.c,   57     6     retu6n p        ">zone_,  213
<6a href="m6/vmscan.c#L155" id="L1556 clas65mscan name="L177"> 177nr_pmallowed by the caller/ line" name="L82">  82     6 n class=6comment">/*
 206 * Add a shrink6r cal65ng.
  82     6 de <<6comment"> */
eem_cgroup_disabVM_EXEC="+code=_page" VM_EXECline"ame="L57">  57     6a href="m6"+code=register_shrinker6 clas65class="sref">prev        ">zone_,  213
<6a href="m6/vmscan.c#L161" id="L1616 clas66ne" name="L71">  71     6a        6ef="+code=atomic_long_se6" cla66 long zone_,  213
<6a    unsi6ef="+code=down_write" cl6ss="s66ass="sref">_p" name="L177"> 177 177  82     6a        6/vmscan.c#L166" id="L1666 clas665ref">list_adnr_pef">nr_pages_scrLf"rLnc>d_pref="+code=_page" ref"rLnc>d_preflinecrremem_cgroup_disabP"L2SwapBacked/vmscan.c#L131"P"L2SwapBackedshrin, ,   57     6an class=6e=EXPORT_SYMBOL" class="6ref">66ch" class="sref">pref">zone_,  213
<6a        6vmscan.c#L168" id="L168"6class66ack t name="L213"> 213
<6ade <<6comment">/*
zone_,  213
<6a href="m6comment"> * Remove one
66o avo" name="L177"> 177 */
  71     6d   82     6dhref="mm6/vmscan.c#L173" id="L1736 clas67
zonesf="mmnumb="mm/areed imed=="L2pline" name="L82">  82     6d    retu6ef="+code=down_write" cl6ss="s67ref="mm/vmscan.c#L94" id="L9*"line" name="L82">  82     6a    "ass=linencan_control *;
"ass=line,ame="L57">  57     6ahref="mm6ef="+code=up_write" clas6="sre67ed" class="sref">nr_p="+code===============can_control *;
  57     6an class=6/vmscan.c#L177" id="L1776 clas67ch" class="sref">prefetch==============can_control * +code=sc" class="sref">/a> +code=sc, ;
  57     6a        6e=EXPORT_SYMBOL" class="6ref">67=page" class="sref">page               enumeem_cgroup_disabttu_flagm/vmscan.c#L131"ttu_flagmh" clem_cgroup_disabttu_flagm/vmscan.c#L131"ttu_flagmh" c,ame="L57">  57     6ade <<6vmscan.c#L179" id="L179"6class67                                           unsigecd=loas >;
z_nr_dirty="+code=_page" rez_nr_dirtyh" c,ame="L57">  57     6a href="m6f="+code=inline" class="6ref">67class="sref">prev                      unsigecd=loas >;
z_nr_s="srmsca="+code=_page" rez_nr_s="srmscah" c,ame="L57">  57     6         6                        6truct68chw" class="sref">preeeeeeeeeeeeeeeeeeeeeee;
bosch" clem_cgroup_disabforc9_rLed im" class="sref">forc9_rLed imline"ame="L57">  57     6    57     6  href="m6/vmscan.c#L183" id="L1836 clas68ss="sref">retef">nr_pages_scLIST_HEAD="+code=_page" LIST_HEADshrin,  213
<6     retu6ef="+code=sc" class="sre6">sc<68=page" class=ef">nr_pages_scLIST_HEAD="+code=_page" LIST_HEADshrin,  213
<6     do_shrinker_shrinpgac/vm heid="L143" classcgac/vm helinecane" name="L213"> 213
<6a href="m6/vmscan.c#L186" id="L1866 clas685ref">list_adunsigecd=loas -> 213
<6an class=6vmscan.c#L187" id="L187"6class68ass="sref">_punsigecd=loas -> 213
<6a        6ef="+code=SHRINK_BATCH" 6lass=68=page" class=unsigecd=loas -> 213
<6ade <<6comment">/*
 213
<6a href="m6comment"> * Call the shr6nk fu6ctions name="L213"> 213
<6an class=6comment"> *
 213
<6an class=6comment"> * Here we assu6e it 69esent name="L213"> 213
<6a href="m6comment"> * takes a seek6to re69ss="sref">retef">nr_pages_scmem_cgroup_uncharef"clart="+code=_page" mem_cgroup_uncharef"clartshrin"" name="L213"> 213
<6a    retu6comment"> * percentages 6f the69=page" class=ss="li>mem_cgroup_disabass=_empcy="+code=_page" ass=_empcyshrin, "ass=line"" name="L57">  57     6a     * generated by6these69                     can_control * 213
<6a href="m6comment"> *
nr_pcan_control *, ;
,  213
<6an class=6comment"> * If the vm en6ounte69ch" class="sref">prefe>do_shrinker_shrinmay_aller_fm/vmscan.c#L131"may_aller_fm,  213
<6a        6comment"> * slab to avoi6 swap69                     enumeem_cgroup_disabL209_rLf"rLnc>m/vmscan.c#L131"L209_rLf"rLnc>mh" clem_cgroup_disabrLf"rLnc>m/vmscan.c#L131"rLf"rLnc>mh" clan;
 213
<6a href="m6comment"> *
 179st6aic  * We do weird 6hings69class="sref">prevr
 213
<7an class=7comment"> *
  71     7a1 class=7comment"> * Here we assu79; re70oup_get_lru_size" claam_cgroup_disabhref="+code=_page" c/a>, ;
"ass=line"" name="L213"> 213
<7a2 class=7comment"> * takes a seek7for t70ass="sref">_page)mm/vmscan.c#L18ass=_dec" class="sref">ass=_decshrinr->,  213
<7an class=7comment"> * slab reclaim7versu70=page name="L177"> 177 * generated by7f="mm70                     ef">mem_cgroup_disabtrylock"href="+code=_page" trylock"hrefshrin, ,   57     7a5 class=7comment"> *
prev>>>>>>>>godospage_state(keepid="L143" classkeep,  213
<7a6 class=7comment"> * If the vm en7ef="m70ch" c name="L213"> 213
<7a7 class=7comment"> * slab to avoi7ab" c70=page" class="sref">p.m_cgroup_disabVM_BUG_ON/vmscan.c#L131"VM_BUG_ONlinen, ,  213
<7a8 class=7comment"> *
"zoneshrin, ,  213
<7a9 class=7comment"> * We do weird 7g  213
<7a href="m7/vmscan.c#L211" id="L2117 clas71chw" class="sref">preem_cgroup_disab5 id="L143" class="line 213
<7a1 class=7t  213
<7an class=7ned long _page)nr_pef">nr_pages_scunlikely="+code=_page" unlikelyshrinmem_cgroup_disabL209_evict9s u="+code=_page" c/a>"evict9s ushrin, ,   57     7an class=7vmscan.c#L214" id="L214"7class71=page" class="sref">p        godospage_state(cull_mlocked="+code=_page" cull_mlocked,  213
<7a4 class=7a href="+code=nr_pages_s7anned71mscan name="L177"> 177prevnr_pmem_cgroup_disab5 id="L143" class="linereem_cgroup_disabL209_m" ced="+code=_page" c/a>"m" cedshrin, ,   57     7 6 class=7   if ((prefetchgodospage_state(keep_locked="+code=_page" keep_locked,  213
<7a7 class=7           struct  213
<7a8 class=7                        7     71                     .allowed by the caller/ iDoublcreaseslabipressu19sed fm" ced and rwapref="s="L2ca*"line" name="L82">  82     7a9       7           prevnr_pages_scanned"m" ced="+code=_page" c/a>"m" cedshrin, , nr_pages_scP"L2SwapCef="/vmscan.c#L131"P"L2SwapCef="shrin, ,   57     7d href="m7a href="include/linux/in7=pref72chw" class="sref">preeeeeeeeeem_cgroup_disab5 id="L143" class="line 213
<7d1 class=7a href="include/linux/hi7     72esent name="L213"> 213
<7dn class=7  href="include/linux/vm7tt" c72ass="sref">_page)mm/vmscan.c#L18may_aller_fm/vmscan.c#L131"may_aller_fm, )mm/vmscan.c#L18__GFP_FS="+code=_page" __GFP_FS,  213
<7dn class=7a href="include/linux/fi7124" 72=page" class="sref">p        pages_scanned, ren, )mm/vmscan.c#L18__GFP_IO="+code=_page" __GFP_IO,  213
<7un class=7a href="include/linux/wr7lru_p72mscan name="L177"> 177nr_pnr_pages_scanned,   57     7un class=7a href="include/linux/bu7class72ch" class="sref">prefetch allowed by the caller/ line" name="L82">  82     7u        7omment">                7f="mm72ack to be called from the vmmmmmmmmmssssssssssssssss* memcg doesnng  82     7u8 class=7a href="include/linux/mm7.  Hi72mscan.c#L189" id="L189" clammmmmmmmmssssssssssssssss* could easily OOM just bLcausethoofm"ny=="L2paaru ie="line" name="L194"> 194 206 206 189  82     7tic   82     7tn class=7f="+code=DECLARE_RWSEM" 7lass=73mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaassssssss* (loop m"sas offs__GFP_IO|__GFP_FS0Ld fdacan">ason);line" name="L82">  82     7t5 class=7vmscan.c#L136" id="L136"7class73group that hit its limit and as a ressssssssssssssss* buL 0"ru thought would probably show 0"ru ">asoncs="line" name="L206"> 206 206bo73ng.
 206 206 206 206 206bo74 caller's allocation attaaaaaaaaaaaaaaaassssssss*"line" name="L82">  82     7aic p        nr_pages_scannedglobal_rLed imshrin,  213
<7aic P"L2RLed imshrin, , )mm/vmscan.c#L18__GFP_IO="+code=_page" __GFP_IO,   57     7a        7/vmscan.c#L146" id="L1467 clas74ed" class="sref">nr_p="+code========= allowed by the caller/ line" name="L82">  82     7an class=7f="mm/vmscan.c#L147" id=7L147"74vmscan.c#L207" id="L207" cla4" classssssssssaaaaaaaassssssss*imscanis slightlysracy -1end_c/a>"s="srmsca()line" name="L82">  82     7a        7vmscan.c#L148" id="L148"7class74ng.
 194
, line" name="L189"> 189aL does not mattci="line" name="L189"> 189aL we do want ca Ld fdaca="line" name="L189"> 189 189af="sf="mmeestpaabove, so it wi2"="line" name="L189"> 189uOOM;line" name="L82">  82     7a href="m7/vmscan.c#L155" id="L1557 clas75mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaassssssssssssssss*iaid=itng 206  82     7 n class=7comment">/*
prefetch========mm/vmscan.c#L18=etP"L2Reed im" class="sref">=etP"L2Reed imshrin, ,  213
<7a        7comment"> * Add a shrink7r cal75=page" class="sref">petch========mm/vmscan.c#L18nr_s="srmsca="+code=_page" nr_s="srmscah" c++" name="L213"> 213
<7 de <<7comment"> */
 213
<7a href="m7"+code=register_shrinker7 clas75class="sref">prev        " name="L177"> 177preeeeeeeeeem_cgroup_disabwait_on_c/a>"s="srmsca="+code=_page" wait_on_c/a>"s="srmscashrin, ,  213
<7a        7ef="+code=atomic_long_se7" cla76 long  177 133st7a    retu7ef="+code=list_add_tail"7class76=page" class="sref">pnr_pmem_cgroup_disabforc9_rLed im" class="sref">forc9_rLed imline"ame="L57">  57     7a href="m7ef="+code=up_write" clas7="sre76                     eeeeeeeeem_cgroup_disabrLf"rLnc>m/vmscan.c#L131"rLf"rLnc>mh" clan;
m/vmscan.c#L131"L209_check_rLf"rLnc>mlinen, ,  213
<7a        7/vmscan.c#L166" id="L1667 clas76line" name="L156"> 15676ch" class="sref">prefswitch_pef">nr_pages_scrLf"rLnc>m/vmscan.c#L131"rLf"rLnc>mh" c" name="L57">  57     7a        7vmscan.c#L168" id="L168"7class76=page" class="sref">pcase_,   57     7ade <<7comment">/*
 213
<7a href="m7comment"> * Remove one
76class="sref">prevcase_,   57     7an class=7comment"> */
pre        godospage_state(keep_locked="+code=_page" keep_locked,  213
<7d   57     7a    unsi7/vmscan.c#L173" id="L1737 clas77ass="sref">_page)case_,   57     7a    retu7ef="+code=down_write" cl7ss="s77=page" class="sref">p        ; .allowed by the caller/ itry dosreed im ease="L20melow *"line" name="L82">  82     7a     177 156pref allowed by the caller/ line" name="L82">  82     7a        7e=EXPORT_SYMBOL" class="7ref">77ack to be called from the vmmmmmmmmmssssssss* Anonymous proc>manmemory has0mscalas store?line" name="L82">  82     7ade <<7vmscan.c#L179" id="L179"7class77mscan.c#L189" id="L189" clammmmmmmmmssssssss* Try dosalloc he it srm> rwap r&#cu ="rLs="line" name="L206"> 20677o avoid (scanned*seeks*entrissssssssssssssss*"line" name="L82">  82     7         7                        7truct78chw" class="sref">prenr_pages_scannedP"L2Anonshrin, , remem_cgroup_disabP"L2SwapCef="/vmscan.c#L131"P"L2SwapCef="shrin, ,   57     7  prenr_p!n, )mm/vmscan.c#L18__GFP_IO="+code=_page" __GFP_IO,   57     7     unsi7/vmscan.c#L183" id="L1837 clas78ass="sref">_page)))))))))))))))))godospage_state(keep_locked="+code=_page" keep_locked,  213
<7     retu7ef="+code=sc" class="sre7">sc<78=page" class="sref">p        nr_pmem_cgroup_disabadd_to_rwap="+code=_page" add_to_rwapshrin, ,   57     7     (ac/vm he_locked="+code=_page" ac/vm he_locked,  213
<7a href="m7/vmscan.c#L186" id="L1867 clas78ed" class="sref">nr_p="+code=mm/vmscan.c#L18may_aller_fm/vmscan.c#L131"may_aller_fm,  213
<7an class=7vmscan.c#L187" id="L187"7class78ch" class="sref">pref" name="L177"> 177 213
<7ade <<7comment">/*
;
"m" classhrin, ,  213
<7a href="m7comment"> * Call the shr7nk fu7ctions name="L213"> 213
<7an class=7comment"> *
preeallowed by the caller/ line" name="L82">  82     7an class=7comment"> * Here we assu7e it 79nodes allowed by the caller.aaaaaaaaaaaaaaaa* Tase="L20scam" ced intorease="L20s9s us of one0d fm"ru, line" name="L189"> 189 * takes a seek7to re79 caller's allocation attaaaaaaaaaaaaaaaa* proc>maes. Try dosunmap it ="rLs="line" name="L206"> 206 * percentages 7f the79page reclaim.
  82     7a     * generated by7these79                     nr_pages_scanned"m" ced="+code=_page" c/a>"m" cedshrin, , reem_cgroup_disabm" clas" id="L145" clama clasline" name="L57">  57     7a href="m7comment"> *
nr_pppppppppswitch_pef">nr_pages_scery co_unmap" id="L145" claery co_unmaplinen, ,   57     7an class=7comment"> * If the vm en7ounte79ch" class="sref">prefffffffffcase_, =WAP_FAIL,   57     7a        7comment"> * slab to avoi7 swap79                                     godospage_state(ac/vm he_locked="+code=_page" ac/vm he_locked,  213
<7a href="m7comment"> *
  57     7a href="m7comment"> * We do weird 7hings79class="sref">prev                godospage_state(keep_locked="+code=_page" keep_locked,  213
<8an class=8comment"> *
pre        case_,   57     8a1 class=8comment"> * Here we assu89; re80oup_get_lru_size" cla                godospage_state(cull_mlocked="+code=_page" cull_mlocked,  213
<8a2 class=8comment"> * takes a seek8for t80ass="sref">_page)        case_,   57     8a3 class=8comment"> * percentages 8versu80=page" class="sref">p                ; .allowed by the caller/ itry dosfree ease="L20melow *"line" name="L82">  82     8a4 class=8comment"> * generated by8f="mm80                             " name="L177"> 177 *
prev" name="L177"> 177 * If the vm en8ef="m80ch" c name="L213"> 213
<8a7 class=8comment"> * slab to avoi8ab" c80=page" class="sref">pnr_pages_scanned,   57     8a8 class=8comment"> *
 213
<8a9 class=8comment"> * We do weird 8g  213
<8a href="m8/vmscan.c#L211" id="L2118 clas81chw" class="sref">pre        mallowed by the caller/ line" name="L82">  82     8a1 class=8t   82     8a2 class=8ned long urisk of stsca2" crflow buL do not s="srmscashne" name="L82">  82     8a3 class=8vmscan.c#L214" id="L214"8class81page reclaim.
manunder sigeificant pressu19s="line" name="L206"> 206  82     8 5 class=8  prev>>>>>>>>nr_pages_scanned"is_fils_ref="="+code=_page" c/a>"is_fils_ref="shrin, , rame="L82">  82     8 6 class=8   if ((prefetch>>>>>>>>>>>>>>>>pmem_cgroup_disabcurr" c"is_krwapd="+code=_page" curr" c"is_krwapdshrin"c|| name="L213"> 213
<8a7 class=8           struct page                  ,   57     8a8 class=8                        8     81                                     ,allowed by the caller/ line" name="L82">  82     8a9 class=8            206()line" name="L82">  82     8d1 class=8a href="include/linux/hi8     82nodes allowed by the caller.aaaaaaaaaaaaaaaassssssssssssssss*iexcepL we alrea9yshave tase="L20scolat>
, line" name="L189"> 189 189
  82     8un class=8a href="include/linux/wr8lru_p82                                 ))));
"clasf="+code=_page" inc"zone_c/a>"clasflinen, ,  213
<8u5 class=8a href="include/linux/bl8L126"82ed" class="sref">nr_p            ))));
=etP"L2Reed imshrin, ,  213
<8un class=8a href="include/linux/bu8class82ch" c name="L213"> 213
<8u        8omment">                8f="mm82                                     godospage_state(keep_locked="+code=_page" keep_locked,  213
<8u8 class=8a href="include/linux/mm8.  Hi82                             " name="L177"> 177 213
<8 pre        nr_pef">nr_pages_scrLf"rLnc>m/vmscan.c#L131"rLf"rLnc>mh" claan;
  57     8 1 class=8"+code=vm_total_pages" c8ass="83 long  213
<8     unsi8vmscan.c#L133" id="L133"8class83ass="sref">_page)        nr_pmem_cgroup_disabmay_aller_fm/vmscan.c#L131"may_aller_fm,   57     8 3 class=8f="+code=LIST_HEAD" clas8="sre83=page" class="sref">p                godospage_state(keep_locked="+code=_page" keep_locked,  213
<8 n class=8f="+code=DECLARE_RWSEM" 8lass=83                             nr_pmem_cgroup_disab5 id="L143" class="line  57     8 5 class=8vmscan.c#L136" id="L136"8class83ed" class="sref">nr_p="+code=        godospage_state(keep_locked="+code=_page" keep_locked,  213
<8 n class=8f="+code=CONFIG_MEMCG" c8ass="83ch" c name="L213"> 213
<8         8f="+code=bool" class="sr8f">bo83                             .allowed by the caller/ iP"L20scadirty,itry doss="sr it ouL hur90*"line" name="L82">  82     8 8 class=8/vmscan.c#L139" id="L1398 clas83                             switch_pef">nr_pages_schrefouL="+code=_page" c/a>ouLlinen, ,   57     8t        8n !prev        case_,   57     8a href="m8/vmscan.c#L141" id="L1418 clas84chw" class="sref">preeeeeeeeeeeeeeeeemm/vmscan.c#L18nr_cod09cted/vmscan.c#L131"nr_cod09ctedh" c++" name="L213"> 213
<8a1 class=8="mm/vmscan.c#L142" id="8142" 84 long  213
<8a    unsi8f="+code=bool" class="sr8f">bo84ass="sref">_page)        case_,   57     8aic p                godospage_state(ac/vm he_locked="+code=_page" ac/vm he_locked,  213
<8aic   57     8a5 class=8/vmscan.c#L146" id="L1468 clas84ed" class="sref">nr_p="+code=========nr_pages_scanned,   57     8an class=8f="mm/vmscan.c#L147" id=8L147"84ch" class="sref">prefetch>>>>>>>>>>>>>>>>godospage_state(keepid="L143" classkeep,  213
<8a        8vmscan.c#L148" id="L148"8class84                                     nr_pages_scanned,  213
<8a8 class=8ed long  213
<8a        8/vmscan.c#L150" id="L1508 clas84tions name="L213"> 213
<8     if (8preeeeeeeeeeeeeeeee,allowed by the caller/ line" name="L82">  82     8 1 class=8   return   82     8     unsi8vmscan.c#L153" id="L153"8class85 caller's allocation attaaaaaaaaaaaaaaaassssssssssssssss*iahead aid=try dosreed im ease="L2s="line" name="L206"> 206  82     8a href="m8/vmscan.c#L155" id="L1558 clas85                                 ))))ef">mem_cgroup_disabtrylock"href="+code=_page" trylock"hrefshrin, ,   57     8         8vmscan.c#L156" id="L156"8class85ed" class="sref">nr_p="+code===============>>godospage_state(keepid="L143" classkeep,  213
<8 n class=8comment">/*
prefetch========nr_pages_scanned, nr_pages_scP"L2W="srmsca="+code=_page" P"L2W="srmscashrin, ,   57     8a        8comment"> * Add a shrink8r cal85=page" class="sref">petch==============>>godospage_state(keep_locked="+code=_page" keep_locked,  213
<8 de <<8comment"> */
;
"m" classhrin, ,  213
<8a href="m8"+code=register_shrinker8 clas85class="sref">prev        case_,   57     8a href="m8/vmscan.c#L161" id="L1618 clas86chw" class="sref">preeeeeeeeeeeeeeeee; .allowed by the caller/ itry dosfree ease="L20melow *"line" name="L82">  82     8a        8ef="+code=atomic_long_se8" cla86 long  177_page)" name="L177"> 177 177  82     8a        8/vmscan.c#L166" id="L1668 clas86group that hit its limit and as a ressssssss* If ease="L20has0muffers,itry dosfree easemuffer m" clasa="line" name="L189"> 18986vmscan.c#L207" id="L207" cla4" classssssssss*iassoci hedawithfdacan="L2s If we succeedaweitry dosfree="line" name="L189"> 189 206/*
 206 * Remove one
86o avoid (scanned*seeks*entrissssssssssssssss* We do eacaneven=nr_tase="L20sc P"L2Dirty()s="line" name="L206"> 206 */
() does not perform I/O, buL it ca="line" name="L206"> 206 189 189 189 206aL nlelnn>manaid=wi2"="line" name="L189"> 189 20687ack to be called from the vmmmmmmmmmssssssss*="line" name="L206"> 206 18987o avoid (scanned*seeks*entrissssssssssssssss*_tase="L2sfwhich_wur90not successfully invalid hedaie="line" name="L194"> 194().  Weitry dosdrop eaose mufferanhur9="line" name="L194"> 194aL worked,2aid=tase="L20sc no loaseram" ced into="line" name="L194"> 194 206sc<88page reclaim.
 206  82     8a href="m8/vmscan.c#L186" id="L1868 clas88ed" class="sref">nr_pnr_pages_scanned"has_prvm he" id="L145" clac/a>"has_prvm heshrin, ,   57     8an class=8vmscan.c#L187" id="L187"8class88ch" class="sref">prefef">nr_pnr_pmem_cgroup_disabtry co_release_c/a>="+code=_page" try co_release_c/a>linen, ,   57     8a        8ef="+code=SHRINK_BATCH" 8lass=88                                     godospage_state(ac/vm he_locked="+code=_page" ac/vm he_locked,  213
<8ade <<8comment">/*
nr_pnr_pmem_cgroup_disabm" clas" id="L145" clama claslinelrreem_cgroup_disabL209_count" id="L145" clac/a>"countshrin, ,   57     8a href="m8comment"> * Call the shr8nk fu88class="sref">prev                , ,  213
<8an class=8comment"> *
pre        ef">nr_pnr_p, "eestzeroshrin, ,   57     8an class=8comment"> * Here we assu8e it 89 long  213
<8a href="m8comment"> * takes a seek8to re89ass="sref">_page)))))))))))))))))ine" name="L57">  57     8a    retu8comment"> * percentages 8f the89=page" class="sref">p                        ,allowed by the caller/ line" name="L82">  82     8a     * generated by8these89mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaassssssssssssssssssssssss* raru r#cu withfspecula/vms rLf"rLnc>s="line" name="L206"> 206 *
 wi2" free="line" name="L189"> 189 * If the vm en8ounte89vmscan.c#L207" id="L207" cla4" classssssssssaaaaaaaassssssssssssssss* eacan="L2 shortly, so wL may="line" name="L189"> 189 * slab to avoi8 swap89ng.
 189 *
 206 * We do weird 8hings89o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaassssssssssssssss*"line" name="L82">  82     9an class=9comment"> *
pre                        mm/vmscan.c#L18nr_rLed imed/vmscan.c#L131"nr_rLed imedh" c++" name="L213"> 213
<9a1 class=9comment"> * Here we assu99; re90oup_get_lru_size" cla                        continue" name="L213"> 213
<9a2 class=9comment"> * takes a seek9for t90ass="sref">_page)                " name="L177"> 177 * percentages 9versu90=page" class="sref">p        " name="L177"> 177 * generated by9f="mm90                     " name="L177"> 177 *
 156 * If the vm en9ef="m90ch" class="sref">prefnr_pmem_cgroup_disabm" clas" id="L145" clama claslinel||t!em_cgroup_disab__rLmov>"m" clas" id="L145" cla__rLmov>"m" classhrin, ,   57     9a7 class=9comment"> * slab to avoi9ab" c90=page" class="sref">pppppppppgodospage_state(keep_locked="+code=_page" keep_locked,  213
<9a8 class=9comment"> *
 213
<9a9 class=9comment"> * We do weird 9g prev,allowed by the caller/ line" name="L82">  82     9a href="m9/vmscan.c#L211" id="L2119 clas91mscan.c#L201" id="L201" claaaaaaaaaaaaaaaaaa iAt eacan=oint, wL have no othur rLf"rLnc>s aid=thur90caline" name="L82">  82     9a1 class=9t d from LRU, rLmov>dline" name="L82">  82     9a2 class=9ned long ref="). C#39usetnon-atomic bitopc now0(aid="line" name="L189"> 189
ma="line" name="L189"> 189ss="line" name="L206"> 206  82     9 6 class=9   if ((prefem_cgroup_disab__nlel=_c/a>"locked="+code=_page" __nlel=_c/a>"lockedshrin, ,  213
<9a7 class=9           struct   57     9a8 class=9                        9     91                     mm/vmscan.c#L18nr_rLed imed/vmscan.c#L131"nr_rLed imedh" c++" name="L213"> 213
<9a9 class=9            213
<9d href="m9a href="include/linux/in9=pref92chw" class="sref">preeallowed by the caller/ line" name="L82">  82     9d1 class=9a href="include/linux/hi9     92nodes allowed by the caller.aaaaaaaaaaaaaaaa* Isthhur90need dosperiodically free_c/a>"list? It wouldline" name="L82">  82     9d2 class=9  href="include/linux/vm9tt" c92 caller's allocation attaaaaaaaaaaaaaaaa* appel=0not as0easecounts should b20lowline" name="L82">  82     9d3 class=9a href="include/linux/fi9124" 92page reclaim.
  82     9un class=9a href="include/linux/wr9lru_p92                     mm/vmscan.c#L18list_add/vmscan.c#L131"list_addshrinr, , m/vmscan.c#L131"free_c/a>m,  213
<9u5 class=9a href="include/linux/bl9L126"92ed" class="sref">nr_pcontinue" name="L213"> 213
<9un class=9a href="include/linux/bu9class92ch" c name="L213"> 213
<9u        9omment">                9f="mm92=pagepage_state(cull_mlocked="+code=_page" cull_mlocked,   57     9u8 class=9a href="include/linux/mm9.  Hi92                     nr_pages_scanned,   57     9u9 class=9a href="include/linux/ba9ef="m92class="sref">prev        em_cgroup_disabtry co_free_rwap="+code=_page" try co_free_rwapshrin, ,  213
<9 pre, ,  213
<9 1 class=9"+code=vm_total_pages" c9ass="93 long ,  213
<9 2 class=9vmscan.c#L133" id="L133"9class93ass="sref">_page)continue" name="L213"> 213
<9 3 class=9f="+code=LIST_HEAD" clas9="sre93=page name="L177"> 177(ac/vm he_locked="+code=_page" ac/vm he_locked,   57     9 5 class=9vmscan.c#L136" id="L136"9class93ed" class="sref">nr_p.allowed by the caller/ iNot a candid hehLd fsw" clas, so reed im rwap r&#cu.a*"line" name="L82">  82     9 n class=9f="+code=CONFIG_MEMCG" c9ass="93ch" class="sref">prefnr_pages_scanned, reem_cgroup_disabvm_rwap_full="+code=_page" vm_rwap_fullshrin""ame="L57">  57     9         9f="+code=bool" class="sr9f">bo93                             .m_cgroup_disabtry co_free_rwap="+code=_page" try co_free_rwapshrin, ,  213
<9 8 class=9/vmscan.c#L139" id="L1399 clas93                     , ,  213
<9 9 class=9n !prev, ,  213
<9a href="m9/vmscan.c#L141" id="L1419 clas94chw" class="sref">pre,  213
<9a1 class=9="mm/vmscan.c#L142" id="9142" 94 longpage_state(keep_locked="+code=_page" keep_locked,   57     9a    unsi9f="+code=bool" class="sr9f">bo94ass="sref">_page), ,  213
<9aic   57     9an class=9n , , m/vmscan.c#L131"ret_c/a>m,  213
<9a5 class=9/vmscan.c#L146" id="L1469 clas94ed" class="sref">nr_p, , nr_pages_scP"L2Unevics9s u/vmscan.c#L131"P"L2Unevics9s ushrin, ,  213
<9an class=9f="mm/vmscan.c#L147" id=9L147"94ch" class="sr" name="L177"> 177 213
<9a8 class=9ed long   82     9a        9/vmscan.c#L150" id="L1509 clas94o avoid (scanned*seeks*entriaaaaaaaa* Tag a zone as0cod09ctedfnr_allseasedirtye="L2sfencounteredawer9="line" name="L194"> 194 194 194 194  82     9a href="m9/vmscan.c#L155" id="L1559 clas95             nr_pages_scannedreem_cgroup_disabnr_dirty="+code=_page" nr_dirtyh" claan;
reem_cgroup_disabglobal_rLed im" class="sref">global_rLed imshrin,   82     9a5 class=9vmscan.c#L156" id="L156"9class95ed" class="sref">nr_p,  213
<9 n class=9comment">/*
 213
<9a        9comment"> * Add a shrink9r cal95=page" class=, "listshrinr, m,  213
<9 8 class=9comment"> */
 213
<9a href="m9"+code=register_shrinker9 clas95class="sref">mm/vmscan.c#L18list_spliceid="L143" classlist_spliceshrinr, m, "listshri"" name="L213"> 213
<9a href="m9/vmscan.c#L161" id="L1619 clas96chw" class="spage_state(count_vm_eventm/vmscan.c#L131"count_vm_eventmshrin,  213
<9a1 class=9ef="+code=atomic_long_se9" cla96 long "endshrin"" name="L213"> 213
<9a    unsi9ef="+code=down_write" cl9ss="s96ass="sref">_p*,  213
<9aic _p*, ;
 213
<9a href="m9ef="+code=up_write" clas9="sre96             return mm/vmscan.c#L18nr_rLed imed/vmscan.c#L131"nr_rLed imedh" c" name="L213"> 213
<9a5 class=9/vmscan.c#L166" id="L1669 clas96group" name="L177"> 17796ch" c name="L213"> 213
<9a        9vmscan.c#L168" id="L168"9class96ack tunsigeedfloas mm/vmscan.c#L18rLed im_nleln_c/a>m_from"list/vmscan.c#L131"rLed im_nleln_c/a>m_from"listshrinstructp,  213
<9a8 class=9comment">/*
"listshri" name="L213"> 213
<9a href="m9comment"> * Remove one
96o avoname="L57">  57     9an class=9comment"> */
 _codtrol="+code=_page" /a> _codtrolhw" c,   57     9a        9"+code=unregister_shrink9r" cl97 long ;
GFP_KERNELline= name="L213"> 213
<9a    unsi9/vmscan.c#L173" id="L1739 clas97ass="sref">_page).em_cgroup_disabprio="sy="+code=_page" prio="sylinecan;
 213
<9aic p.em_cgroup_disabmay_unmap" id="L145" clamay_unmaplinecan1= name="L213"> 213
<9a href="m9ef="+code=list_del" clas9="sre97             }" name="L213"> 213
<9a        9ef="+code=up_write" clas9="sre97ed" class="srunsigeedfloas mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<9an class=9/vmscan.c#L177" id="L1779 clas976hw" class="sstructp, , ,  213
<9a        9e=EXPORT_SYMBOL" class="9ref">97=page" class=, mh" c"" name="L213"> 213
<9ade <<9vmscan.c#L179" id="L179"9class97      name="L213"> 213
<9a href="m9f="+code=inline" class="9ref">97class="sref">mm/vmscan.c#L18list_for_each_allry_safeid="L143" classlist_for_each_allry_safeshrin, , "listshri="mm/vmscan.c#L18lru/vmscan.c#L131"lruline) name="L57">  57     9         9                        9truct98chw" class="sref">prenr_pages_scanned"is_fils_ref="="+code=_page" c/a>"is_fils_ref="shrin, , rt!em_cgroup_disabP"L2Dirty/vmscan.c#L131"P"L2Dirtyshrin, ,   57     9         9                        9nsign98oup_get_lru_size" cla        , ,  213
<9     unsi9/vmscan.c#L183" id="L1839 clas98ass="sref">_page)        mm/vmscan.c#L18list_mov>id="L143" classlist_mov>shrinr, , m/vmscan.c#L131"cleln_c/a>mh" c"" name="L213"> 213
<9     retu9ef="+code=sc" class="sre9">sc<98=page" class="sref">p" name="L177"> 177 177 156;
"listshrinr, mh" c="mm/vmscan.c#L18zoneid="L143" classzoneline="r,  213
<9a        9ef="+code=SHRINK_BATCH" 9lass=98                                     ,  213
<9ade <<9comment">/*
nr_pppppppppr,  213
<9  href="m9comment"> * Call the shr9nk fu98class="sref">mm/vmscan.c#L18list_spliceid="L143" classlist_spliceshrinr, mh" c="mm/vmscan.c#L18href"list/vmscan.c#L131"c/a>"listshri"" name="L213"> 213
<9an class=9comment"> *
"clasf="+code=_page" __mod"zone_c/a>"clasfshrin,  213
<9a        9comment"> * Here we assu9e it 99 long  213
<9a    unsi9comment"> * takes a seek9to re99ass="} name="L177"> 177 * percentages 9f the99=page name="L177"> 177 * generated by9these99mscan.c#L205" id="L205" cla/ line" name="L82">  82     9a href="m9comment"> *
  82     9an class=9comment"> * If the vm en9ounte99vmscan.c#L207" id="L207" cla*enr_it is ofseas appropri he P"L2Ac/vm" ststus.  PaL2sfwhich_ar90belasline" name="L82">  82     9a        9comment"> * slab to avoi9 swap99ng.
 206 *
  82     9a href="m9comment"> * We do weird 9hings99o avoid (scanned*seeks*entri*n="L2:   82     10an class=10an cent"> * We do weird 10an >10an avoid (scanned*seeks*entri*nmod2: shne" nam/pre>me="L82">  82     10a1 class=10aomment"> * Here we assu10aom>10anodes allowed by the caller. line" name="L82">  82     10a2 class=10aomment"> * takes a seek10aom>10a caller's allocation att*freturns 0 onssuccess="-m" errno on failu19s="line" name="L206"> 206 * percentages 10aom>10apage reclaim.
  82     10a4 class=10aomment"> * generated by10aom>10amscanintp, _lru"hrefshrinstructp, , , _mod2_thw" c,  213
<10a5 class=10aomment"> *
10a5 avoname="L57">  57     10a6 class=10aomment"> * If the vm en10aom>10ach" class="srintp, EINVAL,  213
<10a7 class=10aomment"> * slab to avoi10aom>10aack t name="L213"> 213
<10a8 class=10aomment"> *
10a             eallowed by the caller/  Only take ="L2sfonseas LRU.a*"line" name="L82">  82     10a9 class=10aomment"> * We do weird 10aom>10aclass="sref">nr_pmem_cgroup_disabP"L2LRU/vmscan.c#L131"P"L2LRUshrin, ,  213
<101n class=10/vmscan.c#L211" id="L21110/vm>10/v                    return mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<10/1 class=10t  213
<1012 class=10ned long   82     1013 class=10vmscan.c#L214" id="L214"10vms>10/3lass="sref">nr_pem_cgroup_disabP"L2Unevics9s u/vmscan.c#L131"P"L2Unevics9s ushrin, , rt!n, eem_cgroup_disabISOLATE_UNEVICTABLE/vmscan.c#L131"ISOLATE_UNEVICTABLE,  213
<1014 class=10a href="+code=nr_pages_s10a h>10/                     return mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<10/5 class=10   156 213
<10/7 class=10           struct 10/ack t name="L213"> 213
<1018 class=10                        10   >10/             eallowed by the caller/ line" name="L82">  82     10/9 class=10            189 onswithouLliline" name="L189"> 189 206 206d. msca="line" name="L206"> 206  82     10a5 class=10a href="include/linux/bl10a h>10agroup that hit its limit and as a re*="line" name="L206"> 206aL it only wants to c/a>mh"line" name="L206"> 206                10omm>10ang.
 206  82     1029 class=10a href="include/linux/ba10a h>10aclass="sref">nr_p, ep,   57     103n class=10+code=vm_swappiness" cla10+co>10+c                    eallowed by the caller/  Allseasecaller can do on P"L2W="srmsca canmlocka*"line" name="L82">  82     1031 class=10"+code=vm_total_pages" c10"+c>10+oup_get_lru_size" clanr_pages_scanned,   57     10+2 class=10vmscan.c#L133" id="L133"10vms>10+ass="sref">_page)        return mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<1033 class=10f="+code=LIST_HEAD" clas10f=">10+=page name="L177"> 177,   57     1035 class=10vmscan.c#L136" id="L136"10vms>10+ed" class="sref">nr_p="+code=structp,  213
<1036 class=10f="+code=CONFIG_MEMCG" c10f=">10+ch" c name="L213"> 213
<10+7 class=10f="+code=bool" class="sr10f=">10+                             .allowed by the caller/  ISOLATE_CLEAN melns only nleln ="L2sf*"line" name="L82">  82     1038 class=10/vmscan.c#L139" id="L13910/vm>10+                     ef">nr_pnr_p, eem_cgroup_disabISOLATE_CLEAN/vmscan.c#L131"ISOLATE_CLEAN,   57     10+9 class=10n !10+class="sref">prev                return mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<104n class=10/vmscan.c#L141" id="L14110/vm>10/vh" c name="L213"> 213
<1041 class=10="mm/vmscan.c#L142" id="10="m>10/oup_get_lru_size" cla        ,allowed by the caller/ line" name="L82">  82     1042 class=10f="+code=bool" class="sr10f=">10/ caller's allocation attaaaaaaaaaaaaaaaassssssss  Only ="L2sfwithouL m" clasa or n>aL have aline" name="L82">  82     1043 class=10/vmscan.c#L144" id="L14410/vm>10/page reclaim.
="L20callmsca ar90=ossis uhto migrat>line" name="L82">  82     1044 class=10n 10/mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaassssssss* withouL mlocklash"line" name="L206"> 206  82     1046 class=10f="mm/vmscan.c#L147" id=10f=">10/ch" class="sref">prefef">nr_p, ;
"m" classhrin, ,  213
<10/7 class=10vmscan.c#L148" id="L148"10vms>10/                             nr_p, remem_cgroup_disabm" clas" id="L145" clama clasline="L2,   57     1048 class=10ed long nr_pppppppppreturn mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<1049 class=10/vmscan.c#L150" id="L15010/vm>10/class="sref">prev} name="L177"> 177 177 213
<1052 class=10vmscan.c#L153" id="L153"10vms>10_pnr_pn, eem_cgroup_disabISOLATE_UNMAPPEDid="L143" classISOLATE_UNMAPPED, rt;
"m" cedshrin, ,   57     1053 class=10n preturn mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<1054 class=10/vmscan.c#L155" id="L15510/vm>10<4ck t name="L213"> 213
<1055 class=10vmscan.c#L156" id="L156"10vms>10<5ss="sref">_pnr_pmm/vmscan.c#L18likely="+code=_page" likelyshrin, _unl97"_zeroshrin, ,   57     1056 class=10comment">/*
10prefeallowed by the caller/ line" name="L82">  82     1057 class=10comment"> * Add a shrink10com>10 194 */
10 18910 206  82     1061 class=10ef="+code=atomic_long_se10ef=>10/ long ,  213
<1062 class=10ef="+code=down_write" cl10ef=>10/ass="sref">_page),  213
<1063 class=10ef="+code=list_add_tail"10ef=>10/3            } name="L177"> 17710/4ck t name="L213"> 213
<1065 class=10/vmscan.c#L166" id="L16610/vm>10/5ss="sref">_preturn mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<1066 class=10e=EXPORT_SYMBOL" class="10e=E>10/6ss="} name="L177"> 17710/ack t name="L213"> 213
<1068 class=10comment">/*
10/mscan.c#L189" id="L189" cla/ line" name="L82">  82     1069 class=10comment"> * Remove one10/o avoid (scanned*seeks*entri*nzoned.  Some ofseas func/vons n>aLline" name="L82">  82     107n class=10comment"> */
10co avoid (scanned*seeks*entri*nshrinkseas listssperform0better by taklas out a batch ofsc/a>mh"line" name="L206"> 20610cnodes allowed by the caller. said=worklas onstasm outsideseas LRU0locks="line" name="L206"> 206 20610cpage reclaim.
ref="rintensvm" workloads, eacanfunc/vonacaneas hoteest="line" name="L206"> 20610cmscan.c#L205" id="L205" clas*nspot0inseas kernel (a="rt0from copy_*_user func/vons)s="line" name="L206"> 20610cgroup that hit its limit and ="line" name="L206"> 206 206 20610cmscan.c#L199" id="L199" claa  @nr co_06m to looksearoughfonseas lists="line" name="L206"> 20610co avoid (scanned*seeks*entri*n@lruvec:  20610   avoid (scanned*seeks*entri*n@dst:  20610 nodes allowed by the caller. s@nr 06m t>aL wur9006 206 206 206 206 20610 vmscan.c#L207" id="L207" cla*ereturns how maiy ="L2sfwur90mov>d odto *@dsts="line" name="L206"> 20610 ng.
  82     1088 class=10comment">/*
10 mscanststicrunsigeedfloas mm/vmscan.c#L18scolat>_lru"hrefm/vmscan.c#L131"scolat>_lru"hrefmshrinunsigeedfloas mm/vmscan.c#L18nr co_06 213
<10 9 class=10comment"> * Call the shr10com>10 class="sref">prevstructp, structp,  213
<109n class=10comment"> *
10colass="sref">prevunsigeedfloas *, structp,  _codtrollinep*,  213
<10c1 class=10comment"> * Here we assu10com>10c long _mod2_t/vmscan.c#L131"scolat>_mod2_thw" c,  213
<10c2 class=10comment"> * takes a seek10com>10c callname="L57">  57     1093 class=10comment"> * percentages 10com>10c3            structp, ,  213
<1094 class=10comment"> * generated by10com>10c             unsigeedfloas mm/vmscan.c#L18nr cake//vmscan.c#L131"nr cake/,  213
<1095 class=10comment"> *
10ced" class="srunsigeedfloas mm/vmscan.c#L1806 213
<1096 class=10comment"> * If the vm en10com>10cch" c name="L213"> 213
<1097 class=10comment"> * slab to avoi10com>10c             Ld fn, eem_cgroup_disabnr_co_06remem_cgroup_disablist_empty="+code=_page" list_emptyshrin,   57     1098 class=10comment"> *
10c                     structp, , ,  213
<1099 class=10comment"> * We do weird 10com>10cclass="sref">previntp,  213
<11an class=11an cent"> * We do weird 11an >110vh" c name="L213"> 213
<11a1 class=11aomment"> * Here we assu11aom>110oup_get_lru_size" cla, , ;
 213
<11a2 class=11aomment"> * takes a seek11aom>110ass="sref">_page), ,  213
<11a3 class=11aomment"> * percentages 11aom>110=page name="L177"> 177 * generated by11aom>110                     mm/vmscan.c#L18VM_BUG_ON/vmscan.c#L131"VM_BUG_ONshrinmem_cgroup_disabP"L2LRU/vmscan.c#L131"P"L2LRUshrin, ,  213
<11a5 class=11aomment"> *
110line" name="L156"> 156 * If the vm en11aom>110ch" class="sref">prefswitch n, _lru"hrefshrin, ,   57     11a7 class=11aomment"> * slab to avoi11aom>110                     case 0:ame="L57">  57     1108 class=11aomment"> *
110                     ef">nr_p, ;
_nr"hrefmshrin, ,  213
<11a9 class=11aomment"> * We do weird 11aom>110class="sref">prev        em_cgroup_disabmem_cgroup_updat>_lru"siz2" id="L145" clamem_cgroup_updat>_lru"siz2shrin, ,  213
<111n class=11/vmscan.c#L211" id="L21111/vm>11/v                            em_cgroup_disablist_mov>id="L143" classlist_mov>shrinr, ,  213
<1111 class=11t ;
 213
<1112 class=11ned long _page)        break" name="L213"> 213
<1113 class=11vmscan.c#L214" id="L214"11vms>111=page name="L177"> 177  57     11/5 class=11  nr_p="+code=.allowed by the caller/  ine" it canbelassfreed)ine"whur90*"line" name="L82">  82     11/6 class=11   if ((prefef">nr_p, shrinr, ,  213
<11/7 class=11           struct 111                             continue" name="L213"> 213
<1118 class=11                        11   >111      name="L213"> 213
<1119 class=11           prevdefault:ame="L57">  57     112n class=11a href="include/linux/in11a h>112v                            em_cgroup_disabBUGid="L143" classBUGshrin)" name="L213"> 213
<1121 class=11a href="include/linux/hi11a h>112oup_get_lru_size" cla} name="L177"> 177_p} name="L177"> 177 177;
 213
<11a5 class=11a href="include/linux/bl11a h>112ed" class="sr;
/vmscan.c#L131"trace_mm_ 213shrin, ;
 213
<1126 class=11a href="include/linux/bu11a h>112ch" class="sref">prefef">nr_p            em_cgroup_disabnr cake//vmscan.c#L131"nr cake/,  213
<1127 class=11omment">                11omm>112             return mm/vmscan.c#L18nr_cake//vmscan.c#L131"nr cake/,  213
<1128 class=11a href="include/linux/mm11a h>11amscan} name="L177"> 177 177113  avoid (scanned*seeks*entr/* ="line" name="L206"> 206113nodes allowed by the caller. sscolat>_lru"href - tries to scolat> af="L20from its LRU listhwline" name="L206"> 206113 caller's allocation att*f@="L2: ="L20to scolat> from its LRU listhwline" name="L206"> 206 206s af@="L20from L20LRU list, nlel=s P"L2LRU aid=adjusts_tash"line" name="L189"> 189113group that hit its limit and i 18tat ststistic correspondlas eo what>verfLRU0list tase="L20wasfons="line" name="L206"> 206 206113ng.
d0from L20LRU lists="line" name="L206"> 206 206113o avoid (scanned*seeks*entri*="line" name="L206"> 206d.  Ir_it wasffound od="line" name="L206"> 206114nodes allowed by the caller. seas ac/vm" list, it wi2" have P"L2Ac/vm" set.  Ir_it wasffound od="line" name="L206"> 20611/ caller's allocation att seas unevics9s u list, it wi2" have eas P"L2Unevics9s u bit set. T>aL flagshline" name="L206"> 206 20611/mscan.c#L205" id="L205" clas*="line" name="L206"> 206 206114vmscan.c#L207" id="L207" cla*efound wi2" b90decrem7" eds="line" name="L206"> 206114ng.
 206 206  82     115n class=11  82     1151 class=11   return  206115 caller's allocation att s(2) eas lru"lockamust0not0benhelds="line" name="L206"> 206 206  82     1155 class=11vmscan.c#L156" id="L156"11vms>11<5ss="intp, _lru"hrefshrinstructp, , ,  213
<1156 class=11comment">/*
11  57     1157 class=11comment"> * Add a shrink11com>115=page" class=intp,  213
<11<8 class=11comment"> */
115      name="L213"> 213
<1159 class=11"+code=register_shrinker11"+c>115class="sref">mm/vmscan.c#L18VM_BUG_ON/vmscan.c#L131"VM_BUG_ONshrinmem_cgroup_disabc/a>_count="+code=_page" c/a>_countshrin, ,  213
<116n class=11/vmscan.c#L161" id="L16111/vm>116vh" c name="L213"> 213
<1161 class=11ef="+code=atomic_long_se11ef=>11/ long ,   57     1162 class=11ef="+code=down_write" cl11ef=>11/ass="sref">_page)structp, ;
"zoneshrin, ,  213
<1163 class=11ef="+code=list_add_tail"11ef=>11/3            age)structp,  213
<1164 class=11ef="+code=up_write" clas11ef=>11/4ck t name="L213"> 213
<1165 class=11/vmscan.c#L166" id="L16611/vm>116ed" class="sref">nr_p;
,  213
<1166 class=11e=EXPORT_SYMBOL" class="11e=E>116ch" class="sref">prefe ;
"lruvecshrin, ,  213
<1167 class=11vmscan.c#L168" id="L168"11vms>116                     nr_pages_scanned,   57     1168 class=11comment">/*
116                             intp, ;
"lrushrin, ,  213
<1169 class=11comment"> * Remove one116class="sref">prev        em_cgroup_disabget_c/a>="+code=_page" get_c/a>shrin, ,  213
<117n class=11comment"> */
117v                            em_cgroup_disabClel=P"L2LRU/vmscan.c#L131"Clel=P"L2LRUshrin, ,  213
<1171 class=11"+code=unregister_shrink11"+c>117oup_get_lru_size" cla        , "from_lru"listshrin, , ,  213
<1172 class=11/vmscan.c#L173" id="L17311/vm>117ass="sref">_page)        mm/vmscan.c#L18rLt/vmscan.c#L131"rLt,  213
<1173 class=11ef="+code=down_write" cl11ef=>117=page" class="sref">p" name="L177"> 177117                     mm/vmscan.c#L180pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<11c5 class=11ef="+code=up_write" clas11ef=>117ed" class="sr" name="L177"> 177 213
<11c7 class=11e=EXPORT_SYMBOL" class="11e=E>11cng. 177117      name="L213"> 213
<1179 class=11f="+code=inline" class="11f=">11co avoid (scanned*seeks*entr/ line" name="L82">  82     118n class=11                        11   >11   avoid (scanned*seeks*entri*nA directpreed imer may scolat> SWAP_CLUSTER_MAX ="L2sfLromseas LRU0list andline" name="L82">  82     1181 class=11                        11   >11 nodes allowed by the caller. sthun_getpreshedu uds Whun_thur90ar90m byvm" number ofstasks dolas c/a>, ne" name="L82">  82     1182 class=11/vmscan.c#L183" id="L18311/vm>11  caller's allocation att*falloca/von,0such sleeclas directpreed imers may keec pillas upfonseach CPU,, ne" name="L82">  82     1183 class=11ef="+code=sc" class="sre11ef=>11 page reclaim.
  82     1184 class=11n (* 206  82     1186 class=11vmscan.c#L187" id="L187"11vms>11 vmscaststicrintp, d/vmscan.c#L131"too_maiy"scolat>dshrinstructp,  213
<1187 class=11ef="+code=SHRINK_BATCH" 11ef=>118                     structp,  _codtrollinep*,  213
<1188 class=11comment">/*
11 mscanname="L57">  57     11 9 class=11comment"> * Call the shr11com>11 class="sref">unsigeedfloas mm/vmscan.c#L18snac/vm"="+code=_page" snac/vm"shri,p, dshri" name="L213"> 213
<119n class=11comment"> *
119vh" c name="L213"> 213
<11c1 class=11comment"> * Here we assu11com>119 long   57     11c2 class=11comment"> * takes a seek11com>119ass="sref">_page)return 0" name="L213"> 213
<1193 class=11comment"> * percentages 11com>119=page name="L177"> 177 * generated by11com>11c             nr_pmem_cgroup_disabglobal_reed im="+code=_page" global_reed imshrin,   57     11c5 class=11comment"> *
119ed" class="sref">nr_preturn 0" name="L213"> 213
<1196 class=11comment"> * If the vm en11com>11cch" c name="L213"> 213
<1197 class=11comment"> * slab to avoi11com>11c             nr_pages_scanned  57     1198 class=11comment"> *
11c                     mm/vmscan.c#L18snac/vm"="+code=_page" snac/vm"shrilan;
"ststeshrin,  213
<1199 class=11comment"> * We do weird 11com>11cclass="sref">prev, dshrilan;
"ststeshrin,  213
<12an class=12an cent"> * We do weird 12an >120a            } ine" name="L57">  57     12a1 class=12aomment"> * Here we assu12aom>120oup_get_lru_size" cla, ;
"ststeshrin,  213
<12a2 class=12aomment"> * takes a seek12aom>120ass="sref">_page), dshrilan;
"ststeshrin,  213
<12a3 class=12aomment"> * percentages 12aom>1203            } name="L177"> 177 * generated by12aom>1204ck t name="L213"> 213
<12a5 class=12aomment"> *
120ed" class="sr  82     12a6 class=12aomment"> * If the vm en12aom>120vmscan.c#L207" id="L207" cla4" class* GFP_NOIO/GFP_NOFSecallers0ar90allowedato scolat> m"ru ="L2s, so easyh"line" name="L189"> 189 * slab to avoi12aom>120ng.
 189 *
120mscan.c#L199" id="L199" claaaaaaaaaa* deldlocks="line" name="L206"> 206 * We do weird 12aom>120o avoid (scanned*seeks*entriaaaaaaaa*"line" name="L82">  82     121n class=12/vmscan.c#L211" id="L21112/vm>12/v            nr_pn, t;
;
  82     1211 class=12t  213
<1212 class=12ned long  213
<1213 class=12vmscan.c#L214" id="L214"12vms>12/3lass="sref">return mm/vmscan.c#L18scolat>d/vmscan.c#L131"scolat>dshrila hra,  213
<1214 class=12a href="+code=nr_pages_s12a h>12/     } name="L177"> 177 156 156121     , structp, "listshri"ame="L82">  82     1218 class=12                        12   >121mscanname="L57">  57     1219 class=12           structp, ,  213
<122n class=12a href="include/linux/in12a h>122v            structp, ;
 213
<1221 class=12a href="include/linux/hi12a h>122oup_get_lru_s, s co_free,  213
<1222 class=12  href="include/linux/vm12  h>122ass=" name="L213"> 213
<1223 class=12a href="include/linux/fi12a h>1223lass="sref">  82     1224 class=12a href="include/linux/wr12a h>12amscan.c#L205" id="L205" clasaaaaaaaa* PuL msca any unfreess u c/a>ss="line" name="L206"> 206  82     1226 class=12a href="include/linux/bu12a h>122ch" class="srwhi u pmem_cgroup_disablist_empty="+code=_page" list_emptyshrin, "listshri"" name="L57">  57     1227 class=12omment">                12omm>122                     structp, , , ;
"listshri"" name="L213"> 213
<1228 class=12a href="include/linux/mm12a h>122                     intp,  213
<1229 class=12a href="include/linux/ba12a h>12aclass name="L177"> 17712+c                    e ,  213
<1231 class=12"+code=vm_total_pages" c12"+c>12+oup_get_lru_size" claem_cgroup_disablist_del/vmscan.c#L131"list_delshrinr, ,  213
<1232 class=12vmscan.c#L133" id="L133"12vms>12+ass="sref">_page)nr_pages_scanned_evics9s u/vmscan.c#L131"c/a>"evics9s ushrin, ,   57     1233 class=12f="+code=LIST_HEAD" clas12f=">123=page" class="sref">pize" claem_cgroup_disab0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<1234 class=12f="+code=DECLARE_RWSEM" 12f=">123                     ize" claem_cgroup_disabhutmsca_lru"href="+code=_page" hutmsca_lru"hrefshrin, ,  213
<1235 class=12vmscan.c#L136" id="L136"12vms>123ed" class="sref">nr_p="+code=.m_cgroup_disab0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<1236 class=12f="+code=CONFIG_MEMCG" c12f=">123ch" class="sref">prefef">nr_pcontinue" name="L213"> 213
<1237 class=12f="+code=bool" class="sr12f=">123                     } name="L177"> 177 213
<1239 class=12n !123class="sref">prev, ;
"lruvecshrin, ,  213
<124n class=12/vmscan.c#L141" id="L14112/vm>124vh" c name="L213"> 213
<1241 class=12="mm/vmscan.c#L142" id="12="m>124oup_get_lru_size" claem_cgroup_disabSetP"L2LRU/vmscan.c#L131"SetP"L2LRUshrin, ,  213
<1242 class=12f="+code=bool" class="sr12f=">124ass="sref">_page), ;
"lrushrin, ,  213
<1243 class=12/vmscan.c#L144" id="L14412/vm>124=page" class="sref">p, "co_lru"listshrin, , ,  213
<1244 class=12n 1244ck t name="L213"> 213
<1245 class=12/vmscan.c#L146" id="L14612/vm>124ed" class="sref">nr_pnr_pages_scanned  57     1246 class=12f="mm/vmscan.c#L147" id=12f=">124ch" class="sref">prefef">nr_pintp, ;
 213
<1247 class=12vmscan.c#L148" id="L148"12vms>124                             intp, ;
_nr"hrefmshrin, ,  213
<1248 class=12ed long nr_p, d/vmscan.c#L131"reeit "rotat>dline[, ;
 213
<1249 class=12/vmscan.c#L150" id="L15012/vm>124class="sref">prev} name="L177"> 177"cestzeroshrin, ,   57     1251 class=12   return ,  213
<1252 class=12vmscan.c#L153" id="L153"12vms>125ass="sref">_page)        mm/vmscan.c#L18__Clel=P"L2Ac/vm"="+code=_page" __Clel=P"L2Ac/vm"shrin, ,  213
<1253 class=12n pize" claem_cgroup_disabdel_c/a>"from_lru"list/vmscan.c#L131"del_c/a>"from_lru"listshrin, , ,  213
<1254 class=12/vmscan.c#L155" id="L15512/vm>1254ck t name="L213"> 213
<1255 class=12vmscan.c#L156" id="L156"12vms>125ed" class="sref">nr_p="+code=nr_pages_scanned,   57     1256 class=12comment">/*
125ch" class="sref">prefef">nr_p        em_cgroup_disab0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<1257 class=12comment"> * Add a shrink12com>125                                     (*, "dtorshrin, , ,  213
<1258 class=12comment"> */
125                     ef">nr_p        em_cgroup_disab0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<1259 class=12"+code=register_shrinker12"+c>125class="sref">prev        } ine" name="L213"> 213
<126n class=12/vmscan.c#L161" id="L16112/vm>126v                                    em_cgroup_disablist_add/vmscan.c#L131"list_addshrinr, , , s co_free,  213
<1261 class=12ef="+code=atomic_long_se12ef=>126oup_get_lru_size" cla} name="L177"> 177126ass="sref">_p} name="L177"> 177126=page name="L177"> 177126               82     1265 class=12/vmscan.c#L166" id="L16612/vm>126group that hit its limit and as a re* To save ourecallerng 206  82     1267 class=12vmscan.c#L168" id="L168"12vms>126             em_cgroup_disablist_splicf="+code=_page" list_splicfshrinr, s co_free, , "listshri"" name="L213"> 213
<1268 class=12comment">/*
126mscan} name="L177"> 177 * Remove one126class name="L177"> 177 */
127  avoid (scanned*seeks*entr/*line" name="L82">  82     1271 class=12"+code=unregister_shrink12"+c>127nodes allowed by the caller. sshrina_snac/vm"_list() cananhelper Ld fshrina_zone().  Itereturns tse numberline" name="L82">  82     1272 class=12/vmscan.c#L173" id="L17312/vm>127 caller's allocation att*fofpreed imedf="L2s="line" name="L206"> 206127page reclaim.
  82     1274 class=12ef="+code=list_del" clas12ef=>127     ststicr,   82     1275 class=12ef="+code=up_write" clas12ef=>127ed" cem_cgroup_disab0hrina_snac/vm"_list/vmscan.c#L131"0hrina_snac/vm"_listshrinunsigeedfloas mm/vmscan.c#L18nr co_06structp,   82     1276 class=12/vmscan.c#L177" id="L17712/vm>127ch" class="sref">prefef">nstructp,  _codtrollinep*,  213
<12c7 class=12e=EXPORT_SYMBOL" class="12e=E>12cng.  57     1278 class=12vmscan.c#L179" id="L179"12vms>1278            em_cgroup_disabLIST_HEADid="L143" classLIST_HEADshrin, "listshri"" name="L213"> 213
<1279 class=12f="+code=inline" class="12f=">127class="sref">unsigeedfloas mm/vmscan.c#L18nr 06 213
<128n class=12                        12   >1280lass="sref">unsigeedfloas mm/vmscan.c#L18nr reed imed/vmscan.c#L131"nr reed imedshrilan0" name="L213"> 213
<1281 class=12                        12   >1281lass="sref">unsigeedfloas mm/vmscan.c#L18nr cake//vmscan.c#L131"nr cake/,  213
<1282 class=12/vmscan.c#L183" id="L18312/vm>1282lass="sref">unsigeedfloas mm/vmscan.c#L18nr dirty="+code=_page" nr dirtyshrilan0" name="L213"> 213
<1283 class=12ef="+code=sc" class="sre12ef=>1283lass="sref">unsigeedfloas mm/vmscan.c#L18nr writebsck="+code=_page" nr writebsckshrilan0" name="L213"> 213
<1284 class=12n (*_mod2_thw" c, _mod2shrilan0" name="L213"> 213
<1285 class=12/vmscan.c#L186" id="L18612/vm>128ed" class="srintp, ;
 213
<1286 class=12vmscan.c#L187" id="L187"12vms>128ch" class="srstructp, ;
 213
<1287 class=12ef="+code=SHRINK_BATCH" 12ef=>128             structp, ,  213
<1288 class=12comment">/*
128      name="L213"> 213
<12 9 class=12comment"> * Call the shr12com>12 class="sref">whi u pages_scannedd/vmscan.c#L131"too_maiy"scolat>dshrin,   57     129n class=12comment"> *
129c                    e  213
<12c1 class=12comment"> * Here we assu12com>129 long name="L213"> 213
<12c2 class=12comment"> * takes a seek12com>129ass="sref">_page).allowed by the caller/  W90ar90abouL to die aid=free ourememory. Return now.f*"line" name="L82">  82     1293 class=12comment"> * percentages 12com>129=page" class="sref">pnr_pages_scanned  82     1294 class=12comment"> * generated by12com>129                     ize" clareturn mm/vmscan.c#L18SWAP_CLUSTER_MAXid="L143" classSWAP_CLUSTER_MAXline" name="L213"> 213
<12c5 class=12comment"> *
129ed" class="sr} name="L177"> 177 * If the vm en12com>12cch" c name="L213"> 213
<1297 class=12comment"> * slab to avoi12com>129             em_cgroup_disablru"add_drai//vmscan.c#L131"lru"add_drai/shrin"" name="L213"> 213
<12c8 class=12comment"> *
129      name="L213"> 213
<1299 class=12comment"> * We do weird 12com>12cclass="sref">nr_pmem_cgroup_disabs id="L143" class="line 213
<13an class=13an cent"> * We do weird 13an >130c                    e _mod2shril|an;
 213
<13a1 class=13aomment"> * Here we assu13aom>130 long  213
<13a2 class=13aomment"> * takes a seek13aom>130ass="sref">_page), _mod2shril|an;
 213
<13a3 class=13aomment"> * percentages 13aom>130=page name="L177"> 177 * generated by13aom>1304            em_cgroup_disab0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<13a5 class=13aomment"> *
130line" name="L156"> 156 * If the vm en13aom>1306            em_cgroup_disabnr cake//vmscan.c#L131"nr cake/, ;
_lru"hrefmshrin, ;
r, "listshri,ame="L82">  82     13a7 class=13aomment"> * slab to avoi13aom>130                                          r, _mod2/vmscan.c#L131"scolat>_mod2shri,>,  213
<13a8 class=13aomment"> *
130      name="L213"> 213
<13a9 class=13aomment"> * We do weird 13aom>130class="sref">mm/vmscan.c#L18__mod_zone_c/a>"ststeid="L143" class__mod_zone_c/a>"ststeshrin, ,  213
<131n class=13/vmscan.c#L211" id="L21113/vm>13/v            mm/vmscan.c#L18__mod_zone_c/a>"ststeid="L143" class__mod_zone_c/a>"ststeshrin, ,  213
<1311 class=13t  213
<1312 class=13ned long _pnr_pages_scanned  57     1313 class=13vmscan.c#L214" id="L214"13vms>131=page" class="sref">p, s 06;
 213
<1314 class=13a href="+code=nr_pages_s13a h>131                     nr_pages_scanned  57     13/5 class=13  nr_p="+code=.m_cgroup_disab__count_zone_vm_evit m/vmscan.c#L131"__count_zone_vm_evit mshrin,  213
<1316 class=13   if ((prefine" name="L213"> 213
<13/7 class=13           struct 131                             .m_cgroup_disab__count_zone_vm_evit m/vmscan.c#L131"__count_zone_vm_evit mshrin,  213
<1318 class=13                        13   >1318            } name="L177"> 177mm/vmscan.c#L180pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<132n class=13a href="include/linux/in13a h>132vh" c name="L213"> 213
<1321 class=13a href="include/linux/hi13a h>132 long   57     1322 class=13  href="include/linux/vm13  h>132ass="sref">_page)return 0" name="L213"> 213
<1323 class=13a href="include/linux/fi13a h>132=page name="L177"> 177, "listshri,p,   82     13a5 class=13a href="include/linux/bl13a h>132ed" class="sref">nr_p="+code=================r, r,  213
<1326 class=13a href="include/linux/bu13a h>132ch" c name="L213"> 213
<1327 class=13omment">                13omm>132             em_cgroup_disab0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<1328 class=13a href="include/linux/mm13a h>132      name="L213"> 213
<1329 class=13a href="include/linux/ba13a h>132class="sref">mm/vmscan.c#L18reed im"ststid="L143" classreed im"ststline;
 213
<133n class=13+code=vm_swappiness" cla13+co>133vh" c name="L213"> 213
<1331 class=13"+code=vm_total_pages" c13"+c>133 long   57     1332 class=13vmscan.c#L133" id="L133"13vms>13+ass="sref">_page)nr_pages_scanned  57     1333 class=13f="+code=LIST_HEAD" clas13f=">133=page" class="sref">pize" claem_cgroup_disab__count_zone_vm_evit m/vmscan.c#L131"__count_zone_vm_evit mshrin,   57     1334 class=13f="+code=DECLARE_RWSEM" 13f=">133                     ize" cla class="sref">pize" claem_cgroup_disabnr reed imed/vmscan.c#L131"nr reed imedshri"" name="L213"> 213
<1335 class=13vmscan.c#L136" id="L136"13vms>133ed" class="sref">nr_pine" name="L213"> 213
<1336 class=13f="+code=CONFIG_MEMCG" c13f=">133ch" class="sref">prefef">nr_pem_cgroup_disab__count_zone_vm_evit m/vmscan.c#L131"__count_zone_vm_evit mshrin,   57     1337 class=13f="+code=bool" class="sr13f=">133                     ize" cla class="sref">pize" claem_cgroup_disabnr reed imed/vmscan.c#L131"nr reed imedshri"" name="L213"> 213
<1338 class=13/vmscan.c#L139" id="L13913/vm>1338            } name="L177"> 177133class name="L177"> 177;
r, "listshri"" name="L213"> 213
<1341 class=13="mm/vmscan.c#L142" id="13="m>134 long name="L213"> 213
<1342 class=13f="+code=bool" class="sr13f=">134ass="sref">_pmm/vmscan.c#L18__mod_zone_c/a>"ststeid="L143" class__mod_zone_c/a>"ststeshrin, ,  213
<1343 class=13/vmscan.c#L144" id="L14413/vm>134=page name="L177"> 1771344            em_cgroup_disab0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<1345 class=13/vmscan.c#L146" id="L14613/vm>134line" name="L156"> 1561346            em_cgroup_disabfree_hot_cold_href"list/vmscan.c#L131"free_hot_cold_href"listshrinr, "listshri,p1"" name="L213"> 213
<1347 class=13vmscan.c#L148" id="L148"13vms>134      name="L213"> 213
<1348 class=13ed long   82     1349 class=13/vmscan.c#L150" id="L15013/vm>134o avoid (scanned*seeks*entriaaaaaaaa* Ifpreed im canscolatlas dirtyf="L2sfunder writebsck, it impli2s="line" name="L206"> 206  82     1351 class=13   return   82     1352 class=13vmscan.c#L153" id="L153"13vms>135 caller's allocation attaaaaaaaa* at tsrottllas crocess2sfdue to ehe c/a> distribu/von tsroughoutshne" name="L82">  82     1353 class=13n   82     1354 class=13/vmscan.c#L155" id="L15513/vm>135mscan.c#L205" id="L205" clasaaaaaaaa* only op/von is to ehrottlefLromsreed im codtext>which is not idealshne" name="L82">  82     1355 class=13vmscan.c#L156" id="L156"13vms>135group that hit its limit and as a re* as_thur90canno guaradtee ehe dirtylas crocess is throttled in_thushne" name="L82">  82     1356 class=13comment">/*
135vmscan.c#L207" id="L207" cla4" class* s
ss="line" name="L206"> 206 * Add a shrink13com>135ng.
 206 */
135mscan.c#L199" id="L199" claaaaaaaaaa* This 06 206135o avoid (scanned*seeks*entriaaaaaaaa* bef"ru tsrottllas dependlasfonspriority. Itecanansimple mscaoff="line" name="L206"> 206  82     1361 class=13ef="+code=atomic_long_se13ef=>136nodes allowed by the caller.aaaaaaaa* DEF_PRIORITY-2>which is ehe crioritypreed im cancodsideredato bushne" name="L82">  82     1362 class=13ef="+code=down_write" cl13ef=>136 caller's allocation attaaaaaaaa* in_trous u aid=reed im cancodsideredato bu in_trous us="line" name="L206"> 206136page reclaim.
 206136mscan.c#L205" id="L205" clasaaaaaaaa* DEF_PRIORITY   100% scolat>df="L2s must befP"L2Writebsck to ehrottle="line" name="L206"> 206 206 25% must befP"L2Writebsck, kswa d in_trous u="line" name="L206"> 206136ng.
 206/*
136mscan.c#L199" id="L199" claaaaaaaaaa* DEF_PRIORITY-6 For_SWAP_CLUSTER_MAX scolat>df="L2s, ehrottlefif any="line" name="L206"> 206 * Remove one136o avoid (scanned*seeks*entriaaaaaaaa*                     scolat>df="L2 canP"L2Writebsck="line" name="L206"> 206 */
137  avoid (scanned*seeks*entriaaaaaaaa*"line" name="L82">  82     1371 class=13"+code=unregister_shrink13"+c>137 long rt;
  82     1372 class=13/vmscan.c#L173" id="L17313/vm>137ass="sref">_page)        pages_scanned  57     1373 class=13ef="+code=down_write" cl13ef=>137=page" class="sref">p,  213
<1374 class=13ef="+code=list_del" clas13ef=>1374ck t name="L213"> 213
<1375 class=13ef="+code=up_write" clas13ef=>137ed" class="sr<   57     1376 class=13/vmscan.c#L177" id="L17713/vm>137ch" class="sref">prefef="mm/vmscan.czone_idxid="L143" classzone_idxshrin,   57     1377 class=13e=EXPORT_SYMBOL" class="13e=E>137                     ,   57     1378 class=13vmscan.c#L179" id="L179"13vms>137                     ,   57     1379 class=13f="+code=inline" class="13f=">137class="sref">prev,  213
<138n class=13                        13   >1380lass="sref">return mm/vmscan.c#L18nr reed imed/vmscan.c#L131"nr reed imedshri" name="L213"> 213
<1381 class=13                        13   >1381lass} name="L177"> 177 213
<1383 class=13ef="+code=sc" class="sre13ef=>138page reclaim.
  82     1384 class=13n (* 206  82     1386 class=13vmscan.c#L187" id="L187"13vms>138vmscan.c#L207" id="L207" cla  W90mov2 ehemsehe othur way nr_ehe c/a> is L82erenc>d by one or_m"ruline" name="L82">  82     1387 class=13ef="+code=SHRINK_BATCH" 13ef=>138ng.
 206/*
138mscan.c#L199" id="L199" claa*line" name="L82">  82     1389 class=13comment"> * Call the shr13com>138o avoid (scanned*seeks*entri* Ifpehe c/a>s0ar90mostly unmapped, ehe crocesslasfis fast aid=it is="line" name="L206"> 206 *
139  avoid (scanned*seeks*entri* approcriat> to hold zone 206 * Here we assu13com>139nodes allowed by the caller. sehe c/a>s0ar90mapped, ehe crocesslasfis slow (c/a>"L82erenc>d()) so wuline" name="L82">  82     13c2 class=13comment"> * takes a seek13com>139 caller's allocation att*fshould droc zone.  Itng  82     13c3 class=13comment"> * percentages 13com>139page reclaim.
 206 * generated by13com>139mscan.c#L205" id="L205" clas* Itecansafu to rely on PG_ac/vm" agains/ tse non-LRU>="L2s in hur90becauseline" name="L82">  82     13c5 class=13comment"> *
139group that hit its limit and* nobody will play with tsat bit on a non-LRU>="L2s="line" name="L206"> 206 * If the vm en13com>139vmscan.c#L207" id="L207" cla ="line" name="L206"> 206 * slab to avoi13com>139ng.
 206 *
139mscan.c#L199" id="L199" claa* But wu hadato alter c/a> 206 * We do weird 13com>139o avoid (scanned*seeks*entri*"line" name="L82">  82     14an class=14an cent"> * We do weird 14an >140vh" c name="L213"> 213
<14a1 class=14aomment"> * Here we assu14aom>140 longststicrvoidn;
  82     14a2 class=14aomment"> * takes a seek14aom>140ass="sref">_page))))))))))))))))))))))structp,   82     14a3 class=14aomment"> * percentages 14aom>140=page" class="sref">pize" cla)))))))))))))structp, s co_free,   82     14a4 class=14aomment"> * generated by14aom>140                     ize" cla class="sref"enump,  213
<14a5 class=14aomment"> *
140line"name="L57">  57     14a6 class=14aomment"> * If the vm en14aom>140ch" class="srstructp, ;
 213
<14a7 class=14aomment"> * slab to avoi14aom>140             unsigeedfloas mm/vmscan.c#L18pgmov2d/vmscan.c#L131"cgmov2dlinelan0" name="L213"> 213
<14a8 class=14aomment"> *
1408h" class="srstructp, , ,  213
<14a9 class=14aomment"> * We do weird 14aom>140class="sref">intp,  213
<141n class=14/vmscan.c#L211" id="L21114/vm>141vh" c name="L213"> 213
<1411 class=14t   57     1412 class=14ned long _page), , ;
 213
<1413 class=14vmscan.c#L214" id="L214"14vms>141=page" class="sref">p, ;
"lruvecshrin, ,  213
<1414 class=14a href="+code=nr_pages_s14a h>1414ck t name="L213"> 213
<14/5 class=14  nr_p, ,  213
<1416 class=14   if ((pref, ,  213
<14/7 class=14           struct 141      name="L213"> 213
<1418 class=14                        14   >141                     , ;
_nr"hrefmshrin, ,  213
<1419 class=14           prev, _lru"sizfshrin, ,  213
<142n class=14a href="include/linux/in14a h>142c                    e , , ,  213
<1421 class=14a href="include/linux/hi14a h>142oup_get_lru_size" clamm/vmscan.c#L18pgmov2d/vmscan.c#L131"cgmov2dlinel+an;
 213
<1422 class=14  href="include/linux/vm14  h>142ass=" name="L213"> 213
<1423 class=14a href="include/linux/fi14a h>142=page" class="sref">pnr_pages_scanned"cestzero="+code=_page" hut_c/a>"cestzeroshrin, ,   57     1424 class=14a href="include/linux/wr14a h>142                     ize" cla, ,  213
<14a5 class=14a href="include/linux/bl14a h>142ed" class="sref">nr_p="+code=, ,  213
<1426 class=14a href="include/linux/bu14a h>142ch" class="sref">prefef">nr_pem_cgroup_disabdel_c/a>"from_lru"list/vmscan.c#L131"del_c/a>"from_lru"listshrin, , ,  213
<1427 class=14omment">                14omm>142      name="L213"> 213
<1428 class=14a href="include/linux/mm14a h>142                     ef">nr_pnr_pages_scanned,   57     1429 class=14a href="include/linux/ba14a h>142class="sref">prev        ef">nr_pem_cgroup_disab0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<143n class=14+code=vm_swappiness" cla14+co>143v                                    (*, "dtorshrin, , ,  213
<1431 class=14"+code=vm_total_pages" c14"+c>143oup_get_lru_size" cla        ef">nr_pem_cgroup_disab0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<1432 class=14vmscan.c#L133" id="L133"14vms>14+ass="sref">_page)))))))))} ine" name="L213"> 213
<1433 class=14f="+code=LIST_HEAD" clas14f=">143=page" class="sref">pize" claef">nr_pem_cgroup_disablist_add/vmscan.c#L131"list_addshrinr, , s co_free,  213
<1434 class=14f="+code=DECLARE_RWSEM" 14f=">143                     } name="L177"> 177143ed" class="sr} name="L177"> 177"ststeshrin, ,  213
<1437 class=14f="+code=bool" class="sr14f=">143             nr_pmem_cgroup_disabis_ac/vm"_lru/vmscan.c#L131"sc_ac/vm"_lrushrin,  213
<1438 class=14/vmscan.c#L139" id="L13914/vm>143                     ,  213
<1439 class=14n !143class} name="L177"> 177 213
<1441 class=14="mm/vmscan.c#L142" id="14="m>144 longststicrvoidn;
 213
<1442 class=14f="+code=bool" class="sr14f=">144ass="sref">_page))))))))))))))))structp,   82     1443 class=14/vmscan.c#L144" id="L14414/vm>144=page" class="sref">pize" claef">nr_structp,  _codtrollinep*,   82     1444 class=14n 144                     ize" cla class=enump,  213
<1445 class=14/vmscan.c#L146" id="L14614/vm>144line"name="L57">  57     1446 class=14f="mm/vmscan.c#L147" id=14f=">1446            unsigeedfloas mm/vmscan.c#L18nr cake//vmscan.c#L131"nr cake/,  213
<1447 class=14vmscan.c#L148" id="L148"14vms>144             unsigeedfloas mm/vmscan.c#L18nr 06 213
<1448 class=14ed long  213
<1449 class=14/vmscan.c#L150" id="L15014/vm>144class="sref">mm/vmscan.c#L18LIST_HEADid="L143" classLIST_HEADshrin, mallowed by the caller/  The ="L2s which wur90snipped offi*"line" name="L82">  82     145n class=14 213
<1451 class=14   return  213
<1452 class=14vmscan.c#L153" id="L153"14vms>145ass="sref">_pstructp, , ,  213
<1453 class=14n _pstructp, ,  213
<1454 class=14/vmscan.c#L155" id="L15514/vm>1454            unsigeedfloas mm/vmscan.c#L18nr rotat>d/vmscan.c#L131"nr rotat>dlinep= 0" name="L213"> 213
<1455 class=14vmscan.c#L156" id="L156"14vms>145ed" class="sr< _mod2_thw" c, _mod2shrilan0" name="L213"> 213
<1456 class=14comment">/*
1456            intp, ;
 213
<1457 class=14comment"> * Add a shrink14com>145             structp, ;
 213
<1458 class=14comment"> */
145      name="L213"> 213
<1459 class=14"+code=register_shrinker14"+c>145class="sref">mm/vmscan.c#L18lru"add_drai//vmscan.c#L131"lru"add_drai/shrin"" name="L213"> 213
<146n class=14/vmscan.c#L161" id="L16114/vm>146vh" c name="L213"> 213
<1461 class=14ef="+code=atomic_long_se14ef=>146 long  213
<1462 class=14ef="+code=down_write" cl14ef=>146ass="sref">_page), _mod2shril|an;
 213
<1463 class=14ef="+code=list_add_tail"14ef=>1463long  213
<1464 class=14ef="+code=up_write" clas14ef=>146                     , _mod2shril|an;
 213
<1465 class=14/vmscan.c#L166" id="L16614/vm>146line" name="L156"> 156,  213
<1467 class=14vmscan.c#L168" id="L168"14vms>146      name="L213"> 213
<1468 class=14comment">/*
1468            em_cgroup_disabnr cake//vmscan.c#L131"nr cake/, ;
_lru"hrefmshrin, ;
r,   82     1469 class=14comment"> * Remove one146class="sref">prev        ef">nr_ppppppr, _mod2/vmscan.c#L131"scolat>_mod2shri,>,  213
<147n class=14comment"> */
1470long  213
<1471 class=14"+code=unregister_shrink14"+c>147oup_get_lru_size" clamm/vmscan.c#L18zoneid="L143" classzonelines 06;
 213
<1472 class=14/vmscan.c#L173" id="L17314/vm>147ass=" name="L213"> 213
<1473 class=14ef="+code=down_write" cl14ef=>147=page" class=ef="mm/vmscan.creed im"ststid="L143" classreed im"ststline;
 213
<1474 class=14ef="+code=list_del" clas14ef=>1474ck t name="L213"> 213
<1475 class=14ef="+code=up_write" clas14ef=>147ed" class="sr< ,  213
<1476 class=14/vmscan.c#L177" id="L17714/vm>1476            em_cgroup_disab__mod_zone_c/a>"ststeid="L143" class__mod_zone_c/a>"ststeshrin, ,  213
<1477 class=14e=EXPORT_SYMBOL" class="14e=E>147             em_cgroup_disab__mod_zone_c/a>"ststeid="L143" class__mod_zone_c/a>"ststeshrin, ,  213
<1478 class=14vmscan.c#L179" id="L179"14vms>1478            em_cgroup_disab0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<1479 class=14f="+code=inline" class="14f=">147class name="L177"> 1771480lass="sref">whi u pmem_cgroup_disablist_empty/vmscan.c#L131"list_emptyshrinr,   57     1481 class=14                        14   >148oup_get_lru_size" clamm/vmscan.c#L18cond_resched/vmscan.c#L131"cond_reschedshrin"" name="L213"> 213
<1482 class=14/vmscan.c#L183" id="L18314/vm>148ass="sref">_page), , ;
,  213
<1483 class=14ef="+code=sc" class="sre14ef=>148=page" class="sref">p, , ,  213
<1484 class=14n (* 213
<1485 class=14/vmscan.c#L186" id="L18614/vm>148ed" class="sref">nr_pnr_pages_scanned"evictablsid="L143" classc/a>"evictablsshrin, ,   57     1486 class=14vmscan.c#L187" id="L187"14vms>148ch" class="sref">prefef">nr_pem_cgroup_disabhutmsca_lru"href="+code=_page" cutmsca_lru"hrefshrin, ,  213
<1487 class=14ef="+code=SHRINK_BATCH" 14ef=>148                     ize" clacodtinue" name="L213"> 213
<1488 class=14comment">/*
148                     } name="L177"> 177 * Call the shr14com>148class name="L177"> 177 *
149v                    nr_pages_scanned  57     14c1 class=14comment"> * Here we assu14com>149oup_get_lru_size" cla        nr_pages_scanned"has_privsteid="L143" classh/a>"has_privsteshrin, , rt;
,   57     14c2 class=14comment"> * takes a seek14com>149ass="sref">_page)))))))))))))))))nr_pages_scanned"has_privsteid="L143" classh/a>"has_privsteshrin, ,  213
<14c3 class=14comment"> * percentages 14com>149=page" class="sref">pize" cla))))))))))))) a>, ,  213
<1494 class=14comment"> * generated by14com>149                     ize" cla class="ages_scanned,  213
<14c5 class=14comment"> *
149ed" class="sref">nr_p="+code=} name="L177"> 177 * If the vm en14com>149ch" class="sref">pref} name="L177"> 177 * slab to avoi14com>149      name="L213"> 213
<1498 class=14comment"> *
149                     nr_pages_scanned"r82erenc>did="L143" classh/a>"r82erenc>dshrin, ,   82     1499 class=14comment"> * We do weird 14com>149class="sref">prev        ef">nr_pppppr,   57     15an class=15an cent"> * We do weird 15an >150v                            mm/vmscan.c#L18nr rotat>d/vmscan.c#L131"nr rotat>dlinep+an;
_nr"hrefmshrin, ,  213
<15a1 class=15aomment"> * Here we assu15aom>150oup_get_lru_size" cla        reclaim.
  82     15a2 class=15aomment"> * takes a seek15aom>150 caller's allocation attaaaaaaaaaaaaaaaaaaaaaaaa* Idon ify L82erenc>d, fils-mscaed ac/vm" ="L2s andshne" name="L82">  82     15a3 class=15aomment"> * percentages 15aom>150page reclaim.
  82     15a4 class=15aomment"> * generated by15aom>150mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaaaaaaaaaa* ehat executabls "+co get better chances to stay nn, ne" name="L82">  82     15a5 class=15aomment"> *
150group that hit its limit and as a reaaaaaaaaaaaaaaaa* memoryfunder mod2rat> memoryfpressur>.  Anonsprefmshne" name="L82">  82     15a6 class=15aomment"> * If the vm en15aom>150vmscan.c#L207" id="L207" cla4" classaaaaaaaaaaaaaaaa* ar90not likelyato bu evict>d by use-once streamingshne" name="L82">  82     15a7 class=15aomment"> * slab to avoi15aom>150ng.
  82     15a8 class=15aomment"> *
150mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa* so wu ign"ru tsemshur9.="line" name="L206"> 206 * We do weird 15aom>150o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaa*"line" name="L82">  82     151n class=15/vmscan.c#L211" id="L21115/vm>151v                            nr_pn, t;
rt;
"sc_fils_cacheshrin, ,   57     1511 class=15t nr_pem_cgroup_disablist_add/vmscan.c#L131"list_addshrinr, , ,  213
<1512 class=15ned long _page)))))))))))))))))codtinue" name="L213"> 213
<1513 class=15vmscan.c#L214" id="L214"15vms>151=page" class="sref">ppppppppp} name="L177"> 177 177 156pref, , mallowed by the caller/  wu ar90de-ac/vmatlas *"line" name="L82">  82     1517 class=15           struct 151                     , , , ,  213
<1518 class=15                        15   >151             } name="L177"> 177 177  82     1521 class=15a href="include/linux/hi15a h>152nodes allowed by the caller.aaaaaaaa* Mom" ="L2s bsck to ehe lru lists="line" name="L206"> 206  82     1523 class=15a href="include/linux/fi15a h>152=page" class=ef="mm/vmscan.c0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<1524 class=15a href="include/linux/wr15a h>152             reclaim.
  82     1525 class=15a href="include/linux/bl15a h>152group that hit its limit and as a re* Count L82erenc>d ="L2s Lromscurrently us>d mapplass as_rotat>d,shne" name="L82">  82     1526 class=15a href="include/linux/bu15a h>152vmscan.c#L207" id="L207" cla4" class* evit ehough only som> of tsemsar90ac/ually L8-ac/vmated.  Thisshne" name="L82">  82     1527 class=15omment">                15omm>152ng.
  82     1528 class=15a href="include/linux/mm15a h>152mscan.c#L199" id="L199" claaaaaaaaaa* get_/a> _ra/vos="line" name="L206"> 206  82     153n class=15+code=vm_swappiness" cla15+co>153v            mm/vmscan.c#L18reed im"ststid="L143" classreed im"ststlined/vmscan.c#L131"reeit "rotat>dline[, ;
dline" name="L213"> 213
<1531 class=15"+code=vm_total_pages" c15"+c>153oup_g name="L213"> 213
<1532 class=15vmscan.c#L133" id="L133"15vms>15+ass="sref">_p;
r, r, ,  213
<1533 class=15f="+code=LIST_HEAD" clas15f=">153=page" class=ef="mm/vmscan.cmov2_ac/vm"_hrefm"co_lru/vmscan.c#L131"mov2_ac/vm"_hrefm"co_lrushrinef="mm/vmscan.clruvec="+code=_page" lruvec, r, r, ,  213
<1534 class=15f="+code=DECLARE_RWSEM" 15f=">153             , "ststeshrin, ,  213
<1535 class=15vmscan.c#L136" id="L136"15vms>153ed" class="sref="mm/vmscan.c0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<1536 class=15f="+code=CONFIG_MEMCG" c15f=">1536     name="L213"> 213
<1537 class=15f="+code=bool" class="sr15f=">153             em_cgroup_disabfree_hot_cold_c/a>"list/vmscan.c#L131"free_hot_cold_c/a>"listshrinr,  213
<1538 class=15/vmscan.c#L139" id="L13915/vm>153     } name="L177"> 177153class name="L177"> 177 177154 longststicrintp,  213
<1542 class=15f="+code=bool" class="sr15f=">154ass="name="L57">  57     1543 class=15/vmscan.c#L144" id="L14415/vm>154=page" class=unsigeedfloas mm/vmscan.c#L18ac/vm"id="L143" classac/vm"shri,>,  213
<1544 class=15n 1544ck t name="L213"> 213
<1545 class=15/vmscan.c#L146" id="L14615/vm>154ed" class="sref="mm/vmscan.cac/vm"id="L143" classac/vm"shripan;
"ststeshrin,  213
<1546 class=15f="mm/vmscan.c#L147" id=15f=">1546            em_cgroup_disabsnac/vm"="+code=_page" snac/vm"linepan;
"ststeshrin,  213
<1547 class=15vmscan.c#L148" id="L148"15vms>154      name="L213"> 213
<1548 class=15ed long t;
 213
<1549 class=15/vmscan.c#L150" id="L15015/vm>154class="sref">prevreturn 1" name="L213"> 213
<155n class=15 213
<1551 class=15   return  213
<1552 class=15vmscan.c#L153" id="L153"15vms>155ass="} name="L177"> 177 177  82     1555 class=15vmscan.c#L156" id="L156"15vms>155group that hit its limit and* snac/vm"_anon"sc_lowl-pcheck nr_anonymous>="L2s needato bu deac/vmatedline" name="L82">  82     1556 class=15comment">/*
155vmscan.c#L207" id="L207" cla  @lruvec: LRU>vectorato checkline" name="L82">  82     1557 class=15comment"> * Add a shrink15com>155ng.
  82     1558 class=15comment"> */
155mscan.c#L199" id="L199" claa* Returns true nr_ehe zone do2s not have enough snac/vm" anonsprefm,shne" name="L82">  82     1559 class=15"+code=register_shrinker15"+c>155o avoid (scanned*seeks*entri* meanlas som> ac/vm" anonsprefm needato bu deac/vmateds="line" name="L206"> 206  82     1561 class=15ef="+code=atomic_long_se15ef=>156 longststicrintp,  213
<1562 class=15ef="+code=down_write" cl15ef=>156ass="name="L57">  57     1563 class=15ef="+code=list_add_tail"15ef=>1563long 
  82     1564 class=15ef="+code=up_write" clas15ef=>156mscan.c#L205" id="L205" clasaaaaaaaa* Ifpwe donng="L2 deac/vmationshne" name="L82">  82     1565 class=15/vmscan.c#L166" id="L16615/vm>156group that hit its limit and as a re* is>=ointlesss="line" name="L206"> 206  82     1567 class=15vmscan.c#L168" id="L168"15vms>156             nr_pmem_cgroup_disabtotal_swap"hrefm/vmscan.c#L131"total_swap"hrefm,  213
<1568 class=15comment">/*
156                     return 0" name="L213"> 213
<1569 class=15comment"> * Remove one156class name="L177"> 177 */
1570long  213
<1571 class=15"+code=unregister_shrink15"+c>157oup_get_lru_size" clareturn em_cgroup_disabmem_cgroup_snac/vm"_anon"sc_low="+code=_page" mem_cgroup_snac/vm"_anon"sc_lowshrinef="mm/vmscan.clruvec="+code=_page" lruvec,  213
<1572 class=15/vmscan.c#L173" id="L17315/vm>157ass=" name="L213"> 213
<1573 class=15ef="+code=down_write" cl15ef=>157=page" class=return em_cgroup_disabsnac/vm"_anon"sc_low_global="+code=_page" snac/vm"_anon"sc_low_globalshrinef="mm/vmscan.clruvec"zoneid="L143" classlruvec"zoneshrin,  213
<1574 class=15ef="+code=list_del" clas15ef=>1574ck t} name="L177"> 177157ed" c#ine" name="L213"> 213
<1576 class=15/vmscan.c#L177" id="L17715/vm>1576    ststicrem_cgroup_disabsn177" i+code=_page" sn177"page"intp,  213
<1577 class=15e=EXPORT_SYMBOL" class="15e=E>157     name="L57">  57     1578 class=15vmscan.c#L179" id="L179"15vms>1578            return 0" name="L213"> 213
<1579 class=15f="+code=inline" class="15f=">157class} name="L177"> 1771580lass#endif name="L177"> 177158oup_g name="L213"> 213
<1582 class=15/vmscan.c#L183" id="L18315/vm>158ass="ststicrintp,  213
<1583 class=15ef="+code=sc" class="sre15ef=>158=pagename="L57">  57     1584 class=15n (*,  213
<1585 class=15/vmscan.c#L186" id="L18615/vm>158line" name="L156"> 1561586            em_cgroup_disabac/vm"id="L143" classac/vm"shripan;
"ststeshrin,  213
<1587 class=15ef="+code=SHRINK_BATCH" 15ef=>158             em_cgroup_disabsnac/vm"="+code=_page" snac/vm"linepan;
"ststeshrin,  213
<1588 class=15comment">/*
158      name="L213"> 213
<1589 class=15comment"> * Call the shr15com>1589            return n,  213
<159n class=15comment"> *
159v    } name="L177"> 177 * Here we assu15com>159oup_g name="L213"> 213
<15c2 class=15comment"> * takes a seek15com>159 caller's allocation at/**line" name="L82">  82     15c3 class=15comment"> * percentages 15com>159page reclaim.
  82     1594 class=15comment"> * generated by15com>159mscan.c#L205" id="L205" clas  @lruvec: LRU>vectorato checkline" name="L82">  82     15c5 class=15comment"> *
159group that hit its limit and*line" name="L82">  82     15c6 class=15comment"> * If the vm en15com>159vmscan.c#L207" id="L207" cla  Whit ehe system is>dolas streaming IO, memoryfpressur>shur9line" name="L82">  82     15c7 class=15comment"> * slab to avoi15com>159ng.
  82     15c8 class=15comment"> *
159mscan.c#L199" id="L199" claa* ehan half of tse fils ="L2s ar90ot ehe snac/vm" lists="line" name="L206"> 206 * We do weird 15com>159o avoid (scanned*seeks*entri*="line" name="L206"> 206 * We do weird 16an >160  avoid (scanned*seeks*entri* Once wo get to ehat situation,fprotect ehe systemng  82     16a1 class=16aomment"> * Here we assu16aom>160nodes allowed by the caller.* set Lromsbeing evict>d by disabling ac/vm" fils ="L2 agings="line" name="L206"> 206 * takes a seek16aom>160 caller's allocation att*="line" name="L206"> 206 * percentages 16aom>160page reclaim.
s a dif2erent ra/vo ehan ehe anonymous>="L2s,sbecaus>="line" name="L206"> 206 * generated by16aom>160mscan.c#L205" id="L205" clas* ehe ="L2 cache us>s a use-once replace5" c algorithms="line" name="L206"> 206 *
160group that hit its limit and*"line" name="L82">  82     16a6 class=16aomment"> * If the vm en16aom>1606    ststicrintp,  213
<16a7 class=16aomment"> * slab to avoi16aom>160     name="L57">  57     16a8 class=16aomment"> *
160             nr_pmem_cgroup_disabmem_cgroup_disablsd/vmscan.c#L131"mem_cgroup_disablsdshrin"" name="L213"> 213
<16a9 class=16aomment"> * We do weird 16aom>160class="sref">prevreturn em_cgroup_disabmem_cgroup_snac/vm"_fils_sc_low="+code=_page" mem_cgroup_snac/vm"_fils_sc_lowshrinef="mm/vmscan.clruvec="+code=_page" lruvec,  213
<161n class=16/vmscan.c#L211" id="L21116/vm>161vh" c name="L213"> 213
<1611 class=16t  213
<1612 class=16ned long  1771613ss=" name="L177"> 177 213
<16/5 class=16    57     1616 class=16   if (( 213
<16/7 class=16           struct 161                     return ,  213
<1618 class=16                        16   >161             ine" name="L213"> 213
<16/9 class=16           prevreturn em_cgroup_disabsnac/vm"_anon"sc_low="+code=_page" snac/vm"_anon"sc_lowshrinef="mm/vmscan.clruvec="+code=_page" lruvec,  213
<162n class=16a href="include/linux/in16a h>162v    } name="L177"> 177 213
<1622 class=16  href="include/linux/vm16  h>162ass="ststicrunsigeedfloas mm/vmscan.c#L180hrina_list/vmscan.c#L131"0hrina_listshrinenump,  213
<1623 class=16a href="include/linux/fi16a h>162=page" class="sref">ppppppppppppppppppstructp,  _codtrollinep*,  213
<1624 class=16a href="include/linux/wr16a h>162     name="L57">  57     1625 class=16a href="include/linux/bl16a h>1625h" class="srnr_pages_scanned  57     1626 class=16a href="include/linux/bu16a h>162ch" class="sref">prefnr_pages_scanned 213
<1627 class=16omment">                16omm>162                     ize" clamm/vmscan.c#L180hrina_ac/vm"_list/vmscan.c#L131"0hrina_ac/vm"_listshrinmm/vmscan.c#L18nr co_06;
,  213
<1628 class=16a href="include/linux/mm16a h>162                     return 0" name="L213"> 213
<1629 class=16a href="include/linux/ba16a h>162class="sref">} name="L177"> 177163vh" c name="L213"> 213
<1631 class=16"+code=vm_total_pages" c16"+c>1631            return , ;
,  213
<1632 class=16vmscan.c#L133" id="L133"16vms>163ass="} name="L177"> 177 177 _codtrollinep*,  213
<1635 class=16vmscan.c#L136" id="L136"16vms>163line"name="L57">  57     1636 class=16f="+code=CONFIG_MEMCG" c16f=">163ch" class="srnr_pages_scanned 213
<1637 class=16f="+code=bool" class="sr16f=">163                     return ,  213
<1638 class=16/vmscan.c#L139" id="L13916/vm>1638            return em_cgroup_disabmem_cgroup_swappLARsm/vmscan.c#L131"mem_cgroup_swappLARsmshrin,  213
<1639 class=16n !163class} name="L177"> 177 213
<1641 class=16="mm/vmscan.c#L142" id="16="m>164nodes allowed by the caller/*line" name="L82">  82     1642 class=16f="+code=bool" class="sr16f=">164 caller's allocation att* Determl"  how aggressvm"lyathe anon aid=fils LRU>lists should b>="line" name="L206"> 206 of each set of LRU>lists is>determl" dline" name="L82">  82     1644 class=16n 164mscan.c#L205" id="L205" clas* byflooking at ehe frac/von of tse ="L2s 06 bsckline" name="L82">  82     1645 class=16/vmscan.c#L146" id="L14616/vm>164group that hit its limit and* odto ehe ac/vm" listrinstead of evicts="line" name="L206"> 206164vmscan.c#L207" id="L207" cla ="line" name="L206"> 206164ng.
 206 206  82     165n class=16 _count="+code=_page" get_/a> _countshrinstructp,  _codtrollinep*,  213
<1651 class=16   return  213
<1652 class=16vmscan.c#L153" id="L153"16vms>165ass="name="L57">  57     1653 class=16n ;
 213
<1654 class=16/vmscan.c#L155" id="L15516/vm>1654            unsigeedfloas mm/vmscan.c#L18anon"prvo="+code=_page" anon"prvoshri=n;
 213
<1655 class=16vmscan.c#L156" id="L156"16vms>1655            unsigeedfloas mm/vmscan.c#L18ap="+code=_page" apshri=n;
 213
<1656 class=16comment">/*
165ch" class="srstructp, ,  213
<1657 class=16comment"> * Add a shrink16com>165             em_cgroup_disabuef="+code=u classu6mscanpmm/vmscan.c#L18frac/vonid="L143" classfrac/vonscan[2]=n;
 213
<1658 class=16comment"> */
165             inump,  213
<1659 class=16"+code=register_shrinker16"+c>165class="sref">intp,  213
<166n class=16/vmscan.c#L161" id="L16116/vm>166v            mm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18force_06 213
<1661 class=16ef="+code=atomic_long_se16ef=>1661h" class="srstructp, ;
 213
<1662 class=16ef="+code=down_write" cl16ef=>166ass=" name="L213"> 213
<1663 class=16ef="+code=list_add_tail"16ef=>1663long 
  82     1664 class=16ef="+code=up_write" clas16ef=>166mscan.c#L205" id="L205" clasaaaaaaaa* Ifpehe zone or memcg is>small, nr[l] cn>
be 0.  Thisshne" name="L82">  82     1665 class=16/vmscan.c#L166" id="L16616/vm>166group that hit its limit and as a re* results in no s6=rvority aid=a poton ialshne" name="L82">  82     1666 class=16e=EXPORT_SYMBOL" class="16e=E>166vmscan.c#L207" id="L207" cla4" class*>=rvority drop.  Global direct reed im cn>
go to ehe nextshne" name="L82">  82     1667 class=16vmscan.c#L168" id="L168"16vms>166ng.
  82     1668 class=16comment">/*
166mscan.c#L199" id="L199" claaaaaaaaaa* zone bslancing aid=it needs to s6  82     1669 class=16comment"> * Remove one166o avoid (scanned*seeks*entriaaaaaaaa* reed iming for=a memcg,=a prvority drop cn>
 highline" name="L82">  82     167n class=16comment"> */
167  avoid (scanned*seeks*entriaaaaaaaa* latonci2s,sso=itng  82     1671 class=16"+code=unregister_shrink16"+c>167nodes allowed by the caller.aaaaaaaa* wells="line" name="L206"> 206  82     1673 class=16ef="+code=down_write" cl16ef=>167=page" class=nr_pages_scannedrt;
 213
<1674 class=16ef="+code=list_del" clas16ef=>167                     mm/vmscan.c#L18force_06 213
<1675 class=16ef="+code=up_write" clas16ef=>1675h" class="srnr_pmem_cgroup_disabglobal_reed im="+code=_page" global_reed imshrin,  213
<1676 class=16/vmscan.c#L177" id="L17716/vm>167ch" class="sref">pref,  213
<1677 class=16e=EXPORT_SYMBOL" class="16e=E>167      name="L213"> 213
<1678 class=16vmscan.c#L179" id="L179"16vms>1678            mallowed by the caller/  Ifpwe have no swap c#Lce,_do not boeher s6  82     1679 class=16f="+code=inline" class="16f=">1679h" class="srnr_pmem_cgroup_disab5 id="L143" class="line= 0") name="L57">  57     168n class=16                        16   >168v                    ,  213
<1681 class=16                        16   >168oup_get_lru_size" clamm/vmscan.c#L18frac/vonid="L143" classfrac/vonscan[0] = 0" name="L213"> 213
<1682 class=16/vmscan.c#L183" id="L18316/vm>168ass="sref">_page)mm/vmscan.c#L18frac/vonid="L143" classfrac/vonscan[1] = 1" name="L213"> 213
<1683 class=16ef="+code=sc" class="sre16ef=>168=page" class="sref">p;
 213
<1684 class=16n (* 213
<1685 class=16/vmscan.c#L186" id="L18616/vm>1685h" class="sr} name="L177"> 1771686     name="L213"> 213
<1687 class=16ef="+code=SHRINK_BATCH" 16ef=>168             em_cgroup_disabanonid="L143" classano/shri  = mm/vmscan.c#L18get_lru"size="+code=_page" get_lru"sizeshrin, ;
 213
<1688 class=16comment">/*
168                     mm/vmscan.c#L18get_lru"size="+code=_page" get_lru"sizeshrin, ;
 213
<1689 class=16comment"> * Call the shr16com>1689            ;
;
 213
<169n class=16comment"> *
169v                    , ;
 213
<16c1 class=16comment"> * Here we assu16com>169oup_g name="L213"> 213
<16c2 class=16comment"> * takes a seek16com>169ass="sref">_pnr_pages_scanned  57     16c3 class=16comment"> * percentages 16com>169=page" class="sref">p;
"ststeid="L143" classzone_c/a>"ststeshrin,  213
<16c4 class=16comment"> * generated by16com>169                     nr_pages_scanned, = ,   57     16c5 class=16comment"> *
1695                    "sref">p
  82     16c6 class=16comment"> * If the vm en16com>169vmscan.c#L207" id="L207" claaaaaaaaaaaaaaaaaaaaaaaaa  Ifpwe have very few ="L2 cache ="L2s,sforce-s6 206 * slab to avoi16com>169ng.
 206 *
169mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa "line" name="L82">  82     1699 class=16comment"> * We do weird 16com>169class="sref">prev"sref">p;
 213
<17an class=17an cent"> * We do weird 17an >170v                            mm/vmscan.c#L18frac/vonid="L143" classfrac/vonscan[1] = 0" name="L213"> 213
<17a1 class=17aomment"> * Here we assu17aom>170oup_get_lru_size" cla        ;
 213
<17a2 class=17aomment"> * takes a seek17aom>170ass="sref">_page)))))))))goto ;
 213
<17a3 class=17aomment"> * percentages 17aom>170=page" class="sref">p} ine"rnr_pmem_cgroup_disabsnac/vm"_fils_sc_low_global="+code=_page" snac/vm"_fils_sc_low_globalshrinef="mm/vmscan.czoneid="L143" classzoneline)) name="L57">  57     17a4 class=17aomment"> * generated by17aom>170                             
  82     17a5 class=17aomment"> *
170group that hit its limit anddddddddddddddddddddddddd* Ther90is enough snac/vm" ="L2 cache,_do notline" name="L82">  82     17a6 class=17aomment"> * If the vm en17aom>170vmscan.c#L207" id="L207" claaaaaaaaaaaaaaaaaaaaaaaaa  reed im anything fromsehe working set right now.="line" name="L206"> 206 * slab to avoi17aom>170ng.
  82     17a8 class=17aomment"> *
170                              213
<17a9 class=17aomment"> * We do weird 17aom>170class="sref">prev         213
<171n class=17/vmscan.c#L211" id="L21117/vm>171v                            mm/vmscan.c#L18denoml"ator/vmscan.c#L131"denoml"atorline = 1" name="L213"> 213
<1711 class=17t ;
 213
<1712 class=17ned long _page)} name="L177"> 177171=page" class=} name="L177"> 177 213
<17/5 class=17    82     1716 class=17   if ((With swappLARsm at 100,_anonymous>aid=fils have ehe scod prvority.="line" name="L206"> 206171ng.
 206171mscan.c#L199" id="L199" claaaaaaaaaa*"line" name="L82">  82     17/9 class=17            213
<172n class=17a href="include/linux/in17a h>172v            mm/vmscan.c#L18fils"prvo="+code=_page" fils"prvoshri = 200l-p,  213
<1721 class=17a href="include/linux/hi17a h>172oup_g name="L213"> 213
<1722 class=17  href="include/linux/vm17  h>1722d" class="sreeclaim.
  82     1723 class=17a href="include/linux/fi17a h>172page reclaim.
  82     1724 class=17a href="include/linux/wr17a h>172mscan.c#L205" id="L205" clasaaaaaaaa* prefm.a We us>athe reeit ly Lotat>d / reeit ly 06  82     1725 class=17a href="include/linux/bl17a h>172group that hit its limit and as a re* ra/vos to determl"  how valuabls each cache im.="line" name="L206"> 206 206                17omm>172ng.
 206 ststistics>as a flostias averref, which onds="line" name="L206"> 206 206173  avoid (scanned*seeks*entriaaaaaaaa*="line" name="L206"> 206173nodes allowed by the caller.aaaaaaaa* anon sn [0], fils sn [1]="line" name="L206"> 206173 caller's allocation attaaaaaaaa*"line" name="L82">  82     1733 class=17f="+code=LIST_HEAD" clas17f=">173=page" class=ef="mm/vmscan.c0pin"lock_irq/vmscan.c#L131"0pin"lock_irqshrinr,  213
<1734 class=17f="+code=DECLARE_RWSEM" 17f=">173             nr_pages_scanned  57     1735 class=17vmscan.c#L136" id="L136"17vms>1735                    ,  213
<1736 class=17f="+code=CONFIG_MEMCG" c17f=">173ch" class="sref">pref, dscan[0] /= 2" name="L213"> 213
<1737 class=17f="+code=bool" class="sr17f=">173             } name="L177"> 177 213
<1739 class=17n !1739h" class="srnr_pages_scanned  57     174n class=17/vmscan.c#L141" id="L14117/vm>174v                    ,  213
<1741 class=17="mm/vmscan.c#L142" id="17="m>174oup_get_lru_size" clamm/vmscan.c#L18reed im"ststid="L143" classreed im"ststlinedscan[1] /= 2" name="L213"> 213
<1742 class=17f="+code=bool" class="sr17f=">1742            } name="L177"> 177 177174             eeclaim.
  82     1745 class=17/vmscan.c#L146" id="L14617/vm>174group that hit its limit andaaaaaaaa* The amount of =ressur>son aion vs fils ="L2s is invers>lyshne" name="L82">  82     1746 class=17f="mm/vmscan.c#L147" id=17f=">174vmscan.c#L207" id="L207" claaaaaaaaa* propor/vonal to ehe frac/von of reeit ly 06  82     1747 class=17vmscan.c#L148" id="L148"17vms>174ng.
.="line" name="L206"> 206  82     1749 class=17/vmscan.c#L150" id="L15017/vm>1749            ;
 213
<175n class=17dscan[0] + 1" name="L213"> 213
<1751 class=17   return  213
<1752 class=17vmscan.c#L153" id="L153"17vms>1752            mm/vmscan.c#L18fp="+code=_page" fpshri = mm/vmscan.c#L18fils"prvo="+code=_page" fils"prvoshri *_pages_scanned 213
<1753 class=17n dscan[1] + 1" name="L213"> 213
<1754 class=17/vmscan.c#L155" id="L15517/vm>1754            ef="mm/vmscan.c0pin"unlock_irq/vmscan.c#L131"0pin"unlock_irqshrinr,  213
<1755 class=17vmscan.c#L156" id="L156"17vms>175line" name="L156"> 156/*
1756            em_cgroup_disabfrac/vonid="L143" classfrac/vonscan[0] = mm/vmscan.c#L18ap="+code=_page" apshri" name="L213"> 213
<1757 class=17comment"> * Add a shrink17com>175             em_cgroup_disabfrac/vonid="L143" classfrac/vonscan[1] = ef="mm/vmscan.cfp="+code=_page" fpshri" name="L213"> 213
<1758 class=17comment"> */
175             mm/vmscan.c#L18denoml"ator/vmscan.c#L131"denoml"atorline = mm/vmscan.c#L18ap="+code=_page" apshri +>,  213
<1759 class=17"+code=register_shrinker17"+c>175class;
 213
<176n class=17/vmscan.c#L161" id="L16117/vm>176v            mm/vmscan.c#L18for_each_evictabls_lru/vmscan.c#L131"for_each_evictabls_lrushrin,   57     1761 class=17ef="+code=atomic_long_se17ef=>176oup_get_lru_size" claintp,  213
<1762 class=17ef="+code=down_write" cl17ef=>176ass="sref">_page)unsigeedfloas mm/vmscan.c#L1806 213
<1763 class=17ef="+code=list_add_tail"17ef=>1763ss=" name="L177"> 177176                     mm/vmscan.c#L1806;
 213
<1765 class=17/vmscan.c#L166" id="L16617/vm>1765                    nr_pages_scanned  57     1766 class=17e=EXPORT_SYMBOL" class="17e=E>176ch" class="sref">pref        mm/vmscan.c#L1806 213
<1767 class=17vmscan.c#L168" id="L168"17vms>176                     ize" clanr_pmem_cgroup_disab5 rt;
 213
<1768 class=17comment">/*
176                                     mm/vmscan.c#L1806 213
<1769 class=17comment"> * Remove one176class="sref">prev        ;
 213
<177n class=17comment"> */
177v                    } name="L177"> 177177oup_get_lru_size" clamm/vmscan.c#L18nr/vmscan.c#L131"nrline[,  213
<1772 class=17/vmscan.c#L173" id="L17317/vm>1772            } name="L177"> 177177=page} name="L177"> 1771774ck t name="L213"> 213
<1775 class=17ef="+code=up_write" clas17ef=>177group that hit its limit an/* Use reed im/ lipac/von for=costly allocs or under memoryfpressur>s*"line" name="L82">  82     1776 class=17/vmscan.c#L177" id="L17717/vm>1776    ststicref="mm/vmscan.cbool/vmscan.c#L131"boolscanpmm/vmscan.c#L18in_reed im" lipac/von/vmscan.c#L131"sn_reed im" lipac/vonshrinstructp,  _codtrollinep*,  213
<1777 class=17e=EXPORT_SYMBOL" class="17e=E>177     name="L57">  57     1778 class=17vmscan.c#L179" id="L179"17vms>177             nr_p, rt;
rame="L57">  57     1779 class=17f="+code=inline" class="17f=">177class="sref">prev        pages_scanned  57     178n class=17                        17   >178v                    >          213
<1781 class=17                        17   >178oup_get_lru_size" clareturn em_cgroup_disabtrue="+code=_page" trueline" name="L213"> 213
<1782 class=17/vmscan.c#L183" id="L18317/vm>178ass=" name="L213"> 213
<1783 class=17ef="+code=sc" class="sre17ef=>178=page" class=return em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<1784 class=17n (* 177 156178vmscan.c#L207" id="L207" cl/*line" name="L82">  82     1787 class=17ef="+code=SHRINK_BATCH" 17ef=>178ng.
 206/*
178mscan.c#L199" id="L199" claa* order-0 ="L2s bef"ru  lipac/vngpehe zone. should_codtinue_reed im()=returns="line" name="L206"> 206 * Call the shr17com>178o avoid (scanned*seeks*entri* true nr_m"ru ="L2s 0hould b> reed im>d suchrehat when ehe ="L2 allocatorline" name="L82">  82     179n class=17comment"> *
179  avoid (scanned*seeks*entri* calls try co_ lipac/"zone()=ehat it will have enough free ="L2s to succeed.="line" name="L206"> 206 * Here we assu17com>179nodes allowed by the caller.* It will gvm" up earlier than ehat if eher90is>difficulty reed iming prefm.="line" name="L206"> 206 * takes a seek17com>179 caller's allocation att*"line" name="L82">  82     17c3 class=17comment"> * percentages 17com>179=pageststicref="mm/vmscan.cin percemscan.c#L131"sn perscanpmm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18should_codtinue_reed imid="L143" class=hould_codtinue_reed imshrinstructp,   82     17c4 class=17comment"> * generated by17com>179                                             unsigeedfloas mm/vmscan.c#L18nr reed im>d/vmscan.c#L131"nr reed im>d,   82     17c5 class=17comment"> *
1795                    "sref">p                unsigeedfloas mm/vmscan.c#L18nr 06  82     17c6 class=17comment"> * If the vm en17com>179ch" class="sref">pref                        structp,  _codtrollinep*,  213
<17c7 class=17comment"> * slab to avoi17com>179     name="L57">  57     17c8 class=17comment"> *
179             unsigeedfloas mm/vmscan.c#L18prefm_for_ lipac/von/vmscan.c#L131"prefm_for_ lipac/vonline" name="L213"> 213
<1799 class=17comment"> * We do weird 17com>179class="sref">unsigeedfloas mm/vmscan.c#L18snac/vm"_lru"hrefm/vmscan.c#L131"snac/vm"_lru"hrefmline" name="L213"> 213
<18an class=18an cent"> * We do weird 18an >180vh" c name="L213"> 213
<18a1 class=18aomment"> * Here we assu18aom>180oup_get_lru_smallowed by the caller/  Ifpnot in reed im/ lipac/von m#L1,=stopt*"line" name="L82">  82     18a2 class=18aomment"> * takes a seek18aom>180ass="sref">_pnr_pmem_cgroup_disabsn_reed im" lipac/von/vmscan.c#L131"sn_reed im" lipac/vonshrin,   82     18a3 class=18aomment"> * percentages 18aom>180=page" class="sref">preturn em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<18a4 class=18aomment"> * generated by18aom>1804ck t name="L213"> 213
<18a5 class=18aomment"> *
180ed" class="sreeclaim.
  82     18a6 class=18aomment"> * If the vm en18aom>180ch" class="srnr_pages_scanned em_cgroup_disab__GFP_REPEAT="+code=_page" __GFP_REPEATline" name="L57">  57     18a7 class=18aomment"> * slab to avoi18aom>180                     n.c#L207" id="L207" cl/*line" name="L82">  82     18a8 class=18aomment"> *
180mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* For=__GFP_REPEAT allocations,=stoptreed iming if eheline" name="L82">  82     18a9 class=18aomment"> * We do weird 18aom>180o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* full LRU>list has been 06 still fai Wegline" name="L82">  82     181n class=18/vmscan.c#L211" id="L21118/vm>181  avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* to reed im prefm.aThis full LRU>13=oton iallyshne" name="L82">  82     1811 class=18t   82     1812 class=18ned long   82     1813 class=18vmscan.c#L214" id="L214"18vms>181=page" class="sref">pnr_pmem_cgroup_disabnr reed im>d/vmscan.c#L131"nr reed im>d, rtmem_cgroup_disabnr 06  82     1814 class=18a href="+code=nr_pages_s18a h>181                             return em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<18/5 class=18    57     1816 class=18   if ((pref,.c#L207" id="L207" cl/*line" name="L82">  82     18/7 class=18           struct 181ng.
  82     1818 class=18                        18   >181mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* fai  without codsequenc1,=stoptifpwe fai ed to reed imshne" name="L82">  82     1819 class=18             82     182n class=18a href="include/linux/in18a h>182  avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* ="L2s that wer9006  82     1821 class=18a href="include/linux/hi18a h>182nodes allowed by the caller.aaaaaaaaaaaaaaaa* caller fneter at ehe risk reed im/ lipac/von aidshne" name="L82">  82     1822 class=18  href="include/linux/vm18  h>182 caller's allocation attaaaaaaaaaaaaaaaa*athe resultias allocation=attempt fai s="line" name="L206"> 206  82     1824 class=18a href="include/linux/wr18a h>182                     nr_pmem_cgroup_disabnr reed im>d/vmscan.c#L131"nr reed im>d,   82     1825 class=18a href="include/linux/bl18a h>1825                    "sref">preturn em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<1826 class=18a href="include/linux/bu18a h>182ch" class="sr} name="L177"> 177                18omm>182      name="L213"> 213
<1828 class=18a href="include/linux/mm18a h>1828            mallowed by the caller/ line" name="L82">  82     1829 class=18a href="include/linux/ba18a h>182o avoid (scanned*seeks*entriaaaaaaaa* Ifpwe have not reed im>d enough ="L2s for=coipac/von aid eheshne" name="L82">  82     183n class=18+code=vm_swappiness" cla18+co>183  avoid (scanned*seeks*entriaaaaaaaa* snac/vm" lists ar> large enough, codtinuetreed imingshne" name="L82">  82     1831 class=18"+code=vm_total_pages" c18"+c>183nodes allowed by the caller.aaaaaaaa*"line" name="L82">  82     1832 class=18vmscan.c#L133" id="L133"18vms>1832            mm/vmscan.c#L18prefm_for_ lipac/von/vmscan.c#L131"prefm_for_ lipac/vonline = (2UL rlt>rlt>  213
<1833 class=18f="+code=LIST_HEAD" clas18f=">183=page" class=ef="mm/vmscan.csnac/vm"_lru"hrefm/vmscan.c#L131"snac/vm"_lru"hrefmline = mm/vmscan.c#L18get_lru"size="+code=_page" get_lru"sizeshrin, ;
 213
<1834 class=18f="+code=DECLARE_RWSEM" 18f=">183             nr_pages_scanned  82     1835 class=18vmscan.c#L136" id="L136"18vms>1835                    , ;
 213
<1836 class=18f="+code=CONFIG_MEMCG" c18f=">183ch" class="srnr_pages_scannedd/vmscan.c#L131"nr reed im>d,  rame="L57">  57     1837 class=18f="+code=bool" class="sr18f=">183                     ize" cla,   82     1838 class=18/vmscan.c#L139" id="L13918/vm>183                     return em_cgroup_disabtrue="+code=_page" trueline" name="L213"> 213
<1839 class=18n !1839h" c name="L213"> 213
<184n class=18/vmscan.c#L141" id="L14118/vm>184v            mallowed by the caller/  Ifpcoipac/von would go ahead or the allocation=would succeed,=stopt*"line" name="L82">  82     1841 class=18="mm/vmscan.c#L142" id="18="m>184oup_get_lru_sswitch_pages_scanned;
  57     1842 class=18f="+code=bool" class="sr18f=">1842            casen;
 213
<1843 class=18/vmscan.c#L144" id="L14418/vm>1843            casen;
 213
<1844 class=18n 184                     return em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<1845 class=18/vmscan.c#L146" id="L14618/vm>1845            default: name="L213"> 213
<1846 class=18f="mm/vmscan.c#L147" id=18f=">184ch" class="sref">prefreturn em_cgroup_disabtrue="+code=_page" trueline" name="L213"> 213
<1847 class=18vmscan.c#L148" id="L148"18vms>184             } name="L177"> 177 177 213
<185n class=18  82     1851 class=18   return  206185 caller's allocation att*"line" name="L82">  82     1853 class=18n  _codtrollinep*,  213
<1854 class=18/vmscan.c#L155" id="L15518/vm>1854    name="L57">  57     1855 class=18vmscan.c#L156" id="L156"18vms>1855            unsigeedfloas mm/vmscan.c#L18nr/vmscan.c#L131"nr    [,  213
<1856 class=18comment">/*
1856            unsigeedfloas mm/vmscan.c#L18nr to_06 213
<1857 class=18comment"> * Add a shrink18com>185             enump,  213
<1858 class=18comment"> */
185             unsigeedfloas mm/vmscan.c#L18nr reed im>d/vmscan.c#L131"nr reed im>d,  213
<1859 class=18"+code=register_shrinker18"+c>185class="sref">unsigeedfloas mm/vmscan.c#L18nr to_reed imid="L143" classnr to_reed imline = mm/vmscan.c#L1806id="L143" class="line 213
<186n class=18/vmscan.c#L161" id="L16118/vm>186v            structp,  213
<1861 class=18ef="+code=atomic_long_se18ef=>186oup_g name="L213"> 213
<1862 class=18ef="+code=down_write" cl18ef=>186ass="mm/vmscan.c#L18restsrtid="L143" classrestsrt    : name="L213"> 213
<1863 class=18ef="+code=list_add_tail"18ef=>186=page" class=ef="mm/vmscan.cnr reed im>d/vmscan.c#L131"nr reed im>d,  213
<1864 class=18ef="+code=up_write" clas18ef=>1864            ef="mm/vmscan.cnr 06 213
<1865 class=18/vmscan.c#L166" id="L16618/vm>1865            mm/vmscan.c#L18get_/a> _countid="L143" classget_/a> _countshrin, ;
 213
<1866 class=18e=EXPORT_SYMBOL" class="18e=E>1866     name="L213"> 213
<1867 class=18vmscan.c#L168" id="L168"18vms>186             em_cgroup_disabblk_stsrt_plugid="L143" classblk_stsrt_plugshrinr,  213
<1868 class=18comment">/*
186             whils pages_scanned  57     1869 class=18comment"> * Remove one186class="sref">prev                        ages_scanned  57     187n class=18comment"> */
187v                    em_cgroup_disabfor_each_evictabls_lru/vmscan.c#L131"for_each_evictabls_lrushrin,   57     1871 class=18"+code=unregister_shrink18"+c>187oup_get_lru_size" claaaaaaaaanr_pages_scanned  57     1872 class=18/vmscan.c#L173" id="L17318/vm>187ass="sref">_page)                ages_scanned  82     1873 class=18ef="+code=down_write" cl18ef=>187=page" class="sref">pf">prev                        ages_scanned 213
<1874 class=18ef="+code=list_del" clas18ef=>187                                     ages_scanned 213
<1875 class=18ef="+code=up_write" clas18ef=>187line" name="L156"> 156pref                ef="mm/vmscan.cnr reed im>d/vmscan.c#L131"nr reed im>d,   82     1877 class=18e=EXPORT_SYMBOL" class="18e=E>187                     ize" clapf">prev                        ages_scanned;
 213
<1878 class=18vmscan.c#L179" id="L179"18vms>187                             } name="L177"> 177187class="sref">prev} name="L177"> 177188v                    id (scanned*seeks*entr/ line" name="L82">  82     1881 class=18                        18   >188nodes allowed by the caller.aaaaaaaaaaaaaaaa* On large memoryfsystems,=s3  82     1882 class=18/vmscan.c#L183" id="L18318/vm>188 caller's allocation attaaaaaaaaaaaaaaaa*areallyalarge. This is f83" for=ehe stsrtlas prvority;shne" name="L82">  82     1883 class=18ef="+code=sc" class="sre18ef=>188page reclaim.
son each zone.shne" name="L82">  82     1884 class=18n (*  82     1885 class=18/vmscan.c#L186" id="L18618/vm>188group that hit its limit anddddddddddddddddd* with multipls =rocessos reed iming prefm, ehe totalshne" name="L82">  82     1886 class=18vmscan.c#L187" id="L187"18vms>188vmscan.c#L207" id="L207" clddddddddddddddddd* freeing target 3  82     1887 class=18ef="+code=SHRINK_BATCH" 18ef=>188ng.
  82     1888 class=18comment">/*
188                     nr_pages_scannedd/vmscan.c#L131"nr reed im>d, rame="L57">  57     1889 class=18comment"> * Call the shr18com>188class="sref">prev    mm/vmscan.c#L1806id="L143" class="line  213
<189n class=18comment"> *
189v                    >       break>ame="L57">  57     18c1 class=18comment"> * Here we assu18com>189oup_get_lru_s} name="L177"> 177 * takes a seek18com>1892            mm/vmscan.c#L18blk_f83ish_plugid="L143" classblk_f83ish_plugshrinr,  213
<18c3 class=18comment"> * percentages 18com>189=page" class=ef="mm/vmscan.c06id="L143" class="lined, d/vmscan.c#L131"nr reed im>d,  213
<18c4 class=18comment"> * generated by18com>1894ck t name="L213"> 213
<18c5 class=18comment"> *
1895            id (scanned*seeks*entr/ line" name="L82">  82     18c6 class=18comment"> * If the vm en18com>189vmscan.c#L207" id="L207" claaaaaaaaa* Eventifpwe did not tryfto evict aion ="L2s at all,pwe want toline" name="L82">  82     18c7 class=18comment"> * slab to avoi18com>189ng.
  82     18c8 class=18comment"> *
189mscan.c#L199" id="L199" claaaaaaaaaa*"line" name="L82">  82     1899 class=18comment"> * We do weird 18com>1899h" class="srnr_pages_scanned 213
<19an class=19an cent"> * We do weird 19an >190v                    em_cgroup_disabshrink_ac/vm"_list="+code=_page" shrink_ac/vm"_listshrin, ;
  82     19a1 class=19aomment"> * Here we assu19aom>190oup_get_lru_size" claaaaaaaaarev    mm/vmscan.c#L1806id="L143" class="line=n;
 213
<19a2 class=19aomment"> * takes a seek19aom>190ass=" name="L213"> 213
<19a3 class=19aomment"> * percentages 19aom>190=page" class=mallowed by the caller/  reed im/ lipac/von might need=reed im to codtinuet*"line" name="L82">  82     19a4 class=19aomment"> * generated by19aom>190             nr_pages_scanned;
d,   82     19a5 class=19aomment"> *
1905                    "sref">parev    mm/vmscan.c#L1806id="L143" class="line;
 213
<19a6 class=19aomment"> * If the vm en19aom>190ch" class="sref">prefgoto mm/vmscan.c#L18restsrtid="L143" classrestsrt    " name="L213"> 213
<19a7 class=19aomment"> * slab to avoi19aom>190      name="L213"> 213
<19a8 class=19aomment"> *
190             mm/vmscan.c#L18throttle_vm_writeout/vmscan.c#L131"throttle_vm_writeoutshrinages_scanned 213
<19a9 class=19aomment"> * We do weird 19aom>190o avo} name="L177"> 177 213
<1911 class=19t  _codtrollinep*,  213
<1912 class=19ned long   57     1913 class=19vmscan.c#L214" id="L214"19vms>191=page" class=structp,  213
<1914 class=19a href="+code=nr_pages_s19a h>191             structp,   57     1915 class=19    57     1916 class=19   if ((pref.,   57     1917 class=19           struct 191             }" name="L213"> 213
<1918 class=19                        19   >1918page" class=structp,  213
<1919 class=19            213
<192n class=19a href="include/linux/in19a h>192v            mm/vmscan.c#L18memcgid="L143" classmemcg     = mm/vmscan.c#L18mem_cgroup_iter/vmscan.c#L131"mem_cgroup_itershrinages_scanned;
,  213
<1921 class=19a href="include/linux/hi19a h>192oup_get_lru_sdo name="L57">  57     1922 class=19  href="include/linux/vm19  h>192ass="sref">_page)structp,  213
<1923 class=19a href="include/linux/fi19a h>1923ss=" name="L177"> 177;
 213
<1925 class=19a href="include/linux/bl19a h>192line" name="L156"> 156pref,.c#L207" id="L207" cl/*line" name="L82">  82     1927 class=19omment">                19omm>192ng.
  82     1928 class=19a href="include/linux/mm19a h>192mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* 06  82     1929 class=19a href="include/linux/ba19a h>192o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* nr to_reed im had been reed im>d.  This prvority  ne" name="L82">  82     193n class=19+code=vm_swappiness" cla19+co>193  avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* cycl90is>thus over after a slasle memcg.shne" name="L82">  82     1931 class=19"+code=vm_total_pages" c19"+c>193nodes allowed by the caller.aaaaaaaaaaaaaaaa*shne" name="L82">  82     1932 class=19vmscan.c#L133" id="L133"19vms>193 caller's allocation attaaaaaaaaaaaaaaaa*aDirect reed im aid kswapd,son the oeher hand,shaveshne" name="L82">  82     1933 class=19f="+code=LIST_HEAD" clas19f=">193page reclaim.
  82     1934 class=19f="+code=DECLARE_RWSEM" 19f=">193mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaa*ps3  82     1935 class=19vmscan.c#L136" id="L136"19vms>193group that hit its limit anddddddddddddddddd*"line" name="L82">  82     1936 class=19f="+code=CONFIG_MEMCG" c19f=">193ch" class="sref">prefnr_pmem_cgroup_disabglobal_reed imid="L143" classglobal_reed imshrinages_scanned  57     1937 class=19f="+code=bool" class="sr19f=">193                     ize" cla, ;
 213
<1938 class=19/vmscan.c#L139" id="L13919/vm>193                             break>ame="L57">  57     1939 class=19n !193class="sref">prev} name="L177"> 177;
,  213
<1941 class=19="mm/vmscan.c#L142" id="19="m>194oup_get_lru_s} whils pages_scanned 213
<1942 class=19f="+code=bool" class="sr19f=">1942    } name="L177"> 177 177194mscan.c#L205" id="L205" cla/* Returns true nr_ lipac/von 0hould go ahead for=a=high-order requestd*"line" name="L82">  82     1945 class=19/vmscan.c#L146" id="L14619/vm>1945    ststicref="mm/vmscan.cin percemscan.c#L131"sn perscanpmm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18coipac/von_readyid="L143" classcoipac/von_readyshrinstructp,  _codtrollinep*,  213
<1946 class=19f="mm/vmscan.c#L147" id=19f=">194ch" cname="L57">  57     1947 class=19vmscan.c#L148" id="L148"19vms>194             unsigeedfloas mm/vmscan.c#L18balanc>_gap/vmscan.c#L131"balanc>_gap, ;
 213
<1948 class=19ed long  213
<1949 class=19/vmscan.c#L150" id="L15019/vm>1949h" c name="L213"> 213
<195n class=19  82     1951 class=19   return  213
<1952 class=19vmscan.c#L153" id="L153"19vms>195ass="sref">_page)return em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<1953 class=19n  177  82     1955 class=19vmscan.c#L156" id="L156"19vms>195group that hit its limit anddddddddd* Coipac/von tak2s tiod to run aid eher2 ar> =oton ially oeherline" name="L82">  82     1956 class=19comment">/*
195vmscan.c#L207" id="L207" claaaaaaaaa* callers usvngpehe ="L2s justdfreed. Continuetreed iming untilshne" name="L82">  82     1957 class=19comment"> * Add a shrink19com>195ng.
  82     1958 class=19comment"> */
195mscan.c#L199" id="L199" claaaaaaaaaa*>a reasonabl"  hanc>aor_ lipletias aid allocatingpehe ="L2line" name="L82">  82     1959 class=19"+code=register_shrinker19"+c>195o avoid (scanned*seeks*entriaaaaaaaa*"line" name="L82">  82     196n class=19/vmscan.c#L161" id="L16119/vm>196v            mm/vmscan.c#L18balanc>_gap/vmscan.c#L131"balanc>_gap,   57     1961 class=19ef="+code=atomic_long_se19ef=>196oup_get_lru_size" clanages_scanned  57     1962 class=19ef="+code=down_write" cl19ef=>196ass="sref">_page)        mm/vmscan.c#L18KSWAPD_ZONE_BALANCE_GAP_RATIO/vmscan.c#L131"KSWAPD_ZONE_BALANCE_GAP_RATIOline"" name="L213"> 213
<1963 class=19ef="+code=list_add_tail"19ef=>196=page" class=ef="mm/vmscan.cwatermark/vmscan.c#L131"watermark     = mm/vmscan.c#L18high_wmark_hrefm/vmscan.c#L131"high_wmark_hrefmshrinages_scanned_gap/vmscan.c#L131"balanc>_gap, rlt>  213
<1964 class=19ef="+code=up_write" clas19ef=>1964            ef="mm/vmscan.cwatermark_ok/vmscan.c#L131"watermark_ok    p= mm/vmscan.c#L18zone_watermark_ok_safeid="L143" classzone_watermark_ok_safeshrinages_scanned;
 213
<1965 class=19/vmscan.c#L166" id="L16619/vm>196line" name="L156"> 156  82     1967 class=19vmscan.c#L168" id="L168"19vms>196ng.
  82     1968 class=19comment">/*
196mscan.c#L199" id="L199" claaaaaaaaaa*>coipac/von will have a  hanc>aor_success when re-enabl"dshne" name="L82">  82     1969 class=19comment"> * Remove one196o avoid (scanned*seeks*entriaaaaaaaa*"line" name="L82">  82     197n class=19comment"> */
197v            nr_pages_scanned  82     1971 class=19"+code=unregister_shrink19"+c>197oup_get_lru_size" clareturn em_cgroup_disabwatermark_ok/vmscan.c#L131"watermark_ok    " name="L213"> 213
<1972 class=19/vmscan.c#L173" id="L17319/vm>197ass=" name="L213"> 213
<1973 class=19ef="+code=down_write" cl19ef=>197=page" class=mallowed by the caller/  Ifpcoipac/von is>not readyfto stsrt, keeptreed iming *"line" name="L82">  82     1974 class=19ef="+code=list_del" clas19ef=>197             nr_pmem_cgroup_disabcoipac/von_suitablsid="L143" classcoipac/von_suitablsshrin,   82     1975 class=19ef="+code=up_write" clas19ef=>1975                    return em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<1976 class=19/vmscan.c#L177" id="L17719/vm>1976     name="L213"> 213
<1977 class=19e=EXPORT_SYMBOL" class="19e=E>197             return em_cgroup_disabwatermark_ok/vmscan.c#L131"watermark_ok    " name="L213"> 213
<1978 class=19vmscan.c#L179" id="L179"19vms>197mscan} name="L177"> 1771979h" c name="L213"> 213
<198n class=19                        19   >198  avoid (scanned*seeks*entr/ line" name="L82">  82     1981 class=19                        19   >198nodes allowed by the caller.* This is ehe direct reed im ="th, for=href-allocatingp=rocessos.  W>sonlyshne" name="L82">  82     1982 class=19/vmscan.c#L183" id="L18319/vm>198 caller's allocation att* tryfto reed im prefm fromszones which will sstisfy ehe caller's allocationshne" name="L82">  82     1983 class=19ef="+code=sc" class="sre19ef=>198page reclaim.
  82     1984 class=19n (*  82     1985 class=19/vmscan.c#L186" id="L18619/vm>198group that hit its limit and* W>sreed im fromsaszone eventifpthat zone is over high_wmark_hrefm(zone).shne" name="L82">  82     1986 class=19vmscan.c#L187" id="L187"19vms>198vmscan.c#L207" id="L207" cld* Because:shne" name="L82">  82     1987 class=19ef="+code=SHRINK_BATCH" 19ef=>198ng.
  82     1988 class=19comment">/*
198mscan.c#L199" id="L199" claa*    allocation=orline" name="L82">  82     1989 class=19comment"> * Call the shr19com>198o avoid (scanned*seeks*entri* b) The target zone may be at high_wmark_hrefm(zone) but ehe nower zonesline" name="L82">  82     199n class=19comment"> *
199  avoid (scanned*seeks*entri*    mustdgo *over* high_wmark_hrefm(zone) to sstisfy ehe `incres*enal min'line" name="L82">  82     1991 class=19comment"> * Here we assu19com>199nodes allowed by the caller.*    zone defense algorithm.="line" name="L206"> 206 * takes a seek19com>199 caller's allocation att*="line" name="L206"> 206 * percentages 19com>199page reclaim.
 206 * generated by19com>199mscan.c#L205" id="L205" clas ps3  82     19c5 class=19comment"> *
199group that hit its limit and*shne" name="L82">  82     19c6 class=19comment"> * If the vm en19com>199vmscan.c#L207" id="L207" cla*aThis func/von returns true nr_a zone is being reed im>d for=a=costlyshne" name="L82">  82     19c7 class=19comment"> * slab to avoi19com>199ng.
  82     19c8 class=19comment"> *
199mscan.c#L199" id="L199" claa* ehe callerpthat it 0hould consider retryingpehe allocation=instead ofshne" name="L82">  82     1999 class=19comment"> * We do weird 19com>199o avoid (scanned*seeks*entri* fureher reed im.="line" name="L206"> 206 * We do weird 20an >20an avoid (scanned*seeks*entri*"line" nam/pre>name="L206"> 206 * Here we assu20aom>20anodesststicrmm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18shrink_zonem/vmscan.c#L131"shrink_zonemshrinstructp,  _codtrollinep*,  213
<20a2 class=20aomment"> * takes a seek20aom>20a callname="L57">  57     20a3 class=20aomment"> * percentages 20aom>20a=page" class=structp,  213
<20a4 class=20aomment"> * generated by20aom>20a             structp,  213
<20a5 class=20aomment"> *
20a5            unsigeedfloas mm/vmscan.c#L18nr_soft reed im>d/vmscan.c#L131"nr soft reed im>dline" name="L213"> 213
<20a6 class=20aomment"> * If the vm en20aom>20a6            unsigeedfloas mm/vmscan.c#L18nr soft 06 213
<20a7 class=20aomment"> * slab to avoi20aom>20a             em_cgroup_disabbool/vmscan.c#L131"boolscanpmm/vmscan.c#L18aborted_reed imid="L143" classaborted_reed im    p= mm/vmscan.c#L18falseid="L143" classfalseline" name="L213"> 213
<20a8 class=20aomment"> *
20a8h" c name="L213"> 213
<20a9 class=20aomment"> * We do weird 20aom>20aclass="sref">id (scanned*seeks*entr/ line" name="L82">  82     201n class=20/vmscan.c#L211" id="L21120/vm>20/vg.
  82     2011 class=20t   82     20/2 class=20ned long   82     20/3 class=20vmscan.c#L214" id="L214"20vms>20/page reclaim.
  82     20/4 class=20a href="+code=nr_pages_s20a h>20/             nr_pages_scanned 213
<2015 class=20   213
<2016 class=20   if (( 213
<20/7 class=20           struct 20/             em_cgroup_disabfor_each_zone_zonelist_nisamask="+code=_page" for_each_zone_zonelist_nisamaskshrin,  213
<20/8 class=20                        20   >20/                                             ,   57     20/9 class=20           prevnr_pmem_cgroup_disabpopulated_zoneid="L143" classpopulated_zoneshrinages_scanned 213
<202n class=20a href="include/linux/in20a h>20a                             codtinue" name="L213"> 213
<2021 class=20a href="include/linux/hi20a h>20aoup_get_lru_size" claid (scanned*seeks*entr/ line" name="L82">  82     2022 class=20  href="include/linux/vm20  h>20a caller's allocation attaaaaaaaaaaaaaaaa*aTake care memoryfcodtroller reed imingphas small influenc2line" name="L82">  82     20a3 class=20a href="include/linux/fi20a h>20apage reclaim.
 206  82     2025 class=20a href="include/linux/bl20a h>20a5                    nr_pages_scanned  57     20a6 class=20a href="include/linux/bu20a h>20ach" class="sref">pref        nr_pmem_cgroup_disabcpuset_zone_allowed_"ardwallid="L143" classcpuset_zone_allowed_"ardwallshrin,  213
<2027 class=20omment">                20omm>20a                     ize" clapf">prevcodtinue" name="L213"> 213
<2028 class=20a href="include/linux/mm20a h>20a                             nr_pages_scannedrame="L57">  57     20a9 class=20a href="include/linux/ba20a h>20aclass="sref">prev                        ages_scanned 213
<203n class=20+code=vm_swappiness" cla20+co>20+c                    ize" clapf">prevcodtinue"       aallowed by the caller/  Let kswapd poll itd*"line" name="L82">  82     20+1 class=20"+code=vm_total_pages" c20"+c>20+oup_get_lru_size" claaaaaaaaanr_pages_scanned  57     2032 class=20vmscan.c#L133" id="L133"20vms>20+ass="sref">_page)                ad (scanned*seeks*entr/ line" name="L82">  82     2033 class=20f="+code=LIST_HEAD" clas20f=">20+page reclaim.
  82     20+4 class=20f="+code=DECLARE_RWSEM" 20f=">20+mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* coipac/von i/ ehisszone, don'tdfree any more.shne" name="L82">  82     20+5 class=20vmscan.c#L136" id="L136"20vms>20+group that hit its limit andddddddddddddddddaaaaaaaaaaaaaaaa* Eventthoughpcoipac/von is>invok>d for=anyshne" name="L82">  82     20+6 class=20f="+code=CONFIG_MEMCG" c20f=">20+vmscan.c#L207" id="L207" cldddddddddddddddddaaaaaaaaaaaaaaaa* non-zero=order,sonlydfrequent=costly orderline" name="L82">  82     20+7 class=20f="+code=bool" class="sr20f=">20+ng.
  82     20+8 class=20/vmscan.c#L139" id="L13920/vm>20+mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* noticeabl" probl"m, like tranc#Lrent=huL2line" name="L82">  82     20+9 class=20n !20+o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* ="L2 allocations.shne" name="L82">  82     204n class=20/vmscan.c#L141" id="L14120/vm>20/v avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*"line" name="L82">  82     2041 class=20="mm/vmscan.c#L142" id="20="m>20/oup_get_lru_size" claaaaaaaaarev nr_pages_scanned  57     2042 class=20f="+code=bool" class="sr20f=">20/ass="sref">_page)                        mm/vmscan.c#L18aborted_reed imid="L143" classaborted_reed im    p= mm/vmscan.c#L18trueid="L143" classtrueline" name="L213"> 213
<2043 class=20/vmscan.c#L144" id="L14420/vm>20/=page" class="sref">pf">prev             codtinue" name="L213"> 213
<2044 class=20n 20/                                     } name="L177"> 177p} name="L177"> 17720/ch" class="sref">pref        ad (scanned*seeks*entr/ line" name="L82">  82     2047 class=20vmscan.c#L148" id="L148"20vms>20/ng.
  82     2048 class=20ed long d ="L2s aidshne" name="L82">  82     20/9 class=20/vmscan.c#L150" id="L15020/vm>20/o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaa* 06shne" name="L82">  82     205n class=20not for=a=memcg's limit.shne" name="L82">  82     2051 class=20   return   82     2052 class=20vmscan.c#L153" id="L153"20vms>20_page)        mm/vmscan.c#L18nr soft 06 213
<2053 class=20n pf">prevd/vmscan.c#L131"nr soft reed im>dline = mm/vmscan.c#L18mem_cgroup_soft limit_reed imid="L143" classmem_cgroup_soft limit_reed imshrin,  213
<2054 class=20/vmscan.c#L155" id="L15520/vm>20<                                     "sref">pf">prev 213
<2055 class=20vmscan.c#L156" id="L156"20vms>20<5                    "sref">parev                r,  213
<20<6 class=20comment">/*
20pref        am/vmscan.c#L185 id="L143" class="lined, d/vmscan.c#L131"nr soft reed im>dline" name="L213"> 213
<2057 class=20comment"> * Add a shrink20com>20<                     ize" cla,  213
<2058 class=20comment"> */
20<                             aallowed by the caller/  need=se e check for=avoid_more shrink_zone()a*"line" name="L82">  82     2059 class=20"+code=register_shrinker20"+c>20prev} name="L177"> 177 213
<2061 class=20ef="+code=atomic_long_se20ef=>20/oup_get_lru_size" claim/vmscan.c#L18shrink_zone/vmscan.c#L131"shrink_zoneshrin,  213
<2062 class=20ef="+code=down_write" cl20ef=>20/ass="sref">_p} name="L177"> 17720/3ss=" name="L177"> 17720/             return em_cgroup_disababorted_reed imid="L143" classaborted_reed im    " name="L213"> 213
<2065 class=20/vmscan.c#L166" id="L16620/vm>20/5    } name="L177"> 177 213
<2067 class=20vmscan.c#L168" id="L168"20vms>20/     ststicrmm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18zone_reed imablsid="L143" classzone_reed imablsshrinstructp,  213
<2068 class=20comment">/*
20/     name="L57">  57     2069 class=20comment"> * Remove one20/9            return em_cgroup_disabzoneid="L143" classzoneline  213
<207n class=20comment"> */
20co    } name="L177"> 17720c1     name="L213"> 213
<2072 class=20/vmscan.c#L173" id="L17320/vm>20c caller's allocation at/  Allszones in zonelist ar> unreed imabls?a*"line" name="L82">  82     2073 class=20ef="+code=down_write" cl20ef=>20c3    ststicrmm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18all_unreed imablsid="L143" classall_unreed imabls    nstructp,   82     2074 class=20ef="+code=list_del" clas20ef=>20c                     structp,  _codtrollinep*,  213
<2075 class=20ef="+code=up_write" clas20ef=>20c5    name="L57">  57     2076 class=20/vmscan.c#L177" id="L17720/vm>20cch" class="srstructp,  213
<2077 class=20e=EXPORT_SYMBOL" class="20e=E>20c7h" class="srstructp,  213
<2078 class=20vmscan.c#L179" id="L179"20vms>20c8h" c name="L213"> 213
<2079 class=20f="+code=inline" class="20f=">20cclass="sref">im_cgroup_disabfor_each_zone_zonelist_nisamask="+code=_page" for_each_zone_zonelist_nisamaskshrin,  213
<208n class=20                        20   >20                      ize" cla,   57     2081 class=20                        20   >20 oup_get_lru_size" clanr_pmem_cgroup_disabpopulated_zoneid="L143" classpopulated_zoneshrinages_scanned 213
<2082 class=20/vmscan.c#L183" id="L18320/vm>20 ass="sref">_page)        codtinue" name="L213"> 213
<2083 class=20ef="+code=sc" class="sre20ef=>20 =page" class="sref">pnr_pmem_cgroup_disabcpuset_zone_allowed_"ardwallid="L143" classcpuset_zone_allowed_"ardwallshrin,  213
<2084 class=20n (* 213
<2085 class=20/vmscan.c#L186" id="L18620/vm>20 5                    nr_pmem_cgroup_disabzoneid="L143" classzoneline 213
<2086 class=20vmscan.c#L187" id="L187"20vms>20 ch" class="sref">pref        return em_cgroup_disabfalseid="L143" classfalseline" name="L213"> 213
<20 7 class=20ef="+code=SHRINK_BATCH" 20ef=>20              } name="L213"> 213
<20 8 class=20comment">/*
20 8h" c name="L213"> 213
<2089 class=20comment"> * Call the shr20com>20 9            return em_cgroup_disabtrueid="L143" classtrueline" name="L213"> 213
<209n class=20comment"> *
20co    } name="L177"> 177 * Here we assu20com>20c1     name="L213"> 213
<2092 class=20comment"> * takes a seek20com>20c caller's allocation at/ line" name="L82">  82     2093 class=20comment"> * percentages 20com>20cpage reclaim.
 206 * generated by20com>20cmscan.c#L205" id="L205" clas line" name="L82">  82     20c5 class=20comment"> *
20cgroup that hit its limit and* Ifpa full s3shne" name="L82">  82     2096 class=20comment"> * If the vm en20com>20cvmscan.c#L207" id="L207" cla*aar> "out of memory"=andpse ethingpneedspeo be killed.="line" name="L206"> 206 * slab to avoi20com>20cng.
 206 *
20cmscan.c#L199" id="L199" claa* Ifpehe callerpis !__GFP_FSfthentehe =robabilihy of a failur90is>reasonablyshne" name="L82">  82     2099 class=20comment"> * We do weird 20com>20co avoid (scanned*seeks*entri* high -=ehe zone may be full or_dirhy or under-writeback ="L2s, which ehisshne" name="L82">  82     21an class=21an cent"> * We do weird 21an >21an avoid (scanned*seeks*entri* callerpa> 'tddo much about.  W>skick ehe writeback threads aid eake explicitline" name="L82">  82     21a1 class=21aomment"> * Here we assu21aom>210nodes allowed by the caller.* naps inpehe hopepthat se e ofpehese ="L2s 3shne" name="L82">  82     21a2 class=21aomment"> * takes a seek21aom>210 caller's allocation att* allocatingpeask holds filesystem locks which prevent writeout ehis>might>notshne" name="L82">  82     21a3 class=21aomment"> * percentages 21aom>210page reclaim.
 206 * generated by21aom>210mscan.c#L205" id="L205" clas line" name="L82">  82     21a5 class=21aomment"> *
210group that hit its limit and* returns:     0, ifpno ="L2s reed im>dline" name="L82">  82     21a6 class=21aomment"> * If the vm en21aom>210vmscan.c#L207" id="L207" cla*aaaaaaaaaaaaaaelse, the number of ="L2s reed im>dline" name="L82">  82     21a7 class=21aomment"> * slab to avoi21aom>210ng.
  82     21a8 class=21aomment"> *
21a8h" cststicrunsigeedfloas mm/vmscan.c#L18do_hry to_free_hrefm/vmscan.c#L131"do_hry to_free_hrefm    nstructp,   82     21a9 class=21aomment"> * We do weird 21aom>210class="sref">prev                        structp,  _codtrollinep*,   82     211n class=21/vmscan.c#L211" id="L21121/vm>211c                    ize" clapf">prev        structp,  213
<2111 class=21t   57     21/2 class=21ned long _punsigeedfloas mm/vmscan.c#L18total 06 213
<21/3 class=21vmscan.c#L214" id="L214"21vms>211=page" class=structp,  213
<21/4 class=21a href="+code=nr_pages_s21a h>21/             structp,  213
<2115 class=21   213
<2116 class=21   if (( 213
<2117 class=21           struct 21/             em_cgroup_disabbool/vmscan.c#L131"boolscanpmm/vmscan.c#L18aborted_reed imid="L143" classaborted_reed im    " name="L213"> 213
<2118 class=21                        21   >2118h" c name="L213"> 213
<21/9 class=21           im_cgroup_disabdelayacct_freep"L2s 0tsrt/vmscan.c#L131"delayacct_freep"L2s 0tsrt    n)" name="L213"> 213
<212n class=21a href="include/linux/in21a h>212v     name="L213"> 213
<2121 class=21a href="include/linux/hi21a h>212oup_get_lru_snr_pages_scanned 213
<2122 class=21  href="include/linux/vm21  h>212ass="sref">_page)mm/vmscan.c#L18count_vm_eventid="L143" classcount_vm_eventshrinages_scanned 213
<21a3 class=21a href="include/linux/fi21a h>2123ss=" name="L177"> 177  57     2125 class=21a href="include/linux/bl21a h>21a5                    mm/vmscan.c#L185 id="L143" class="line 213
<21a6 class=21a href="include/linux/bu21a h>21ach" class="sref">prefmm/vmscan.c#L18aborted_reed imid="L143" classaborted_reed im    p= mm/vmscan.c#L18shrink_zonem/vmscan.c#L131"shrink_zonemshrin,  213
<2127 class=21omment">                21omm>21a      name="L213"> 213
<2128 class=21a href="include/linux/mm21a h>21a                     er's allocation at/ line" name="L82">  82     21a9 class=21a href="include/linux/ba21a h>212o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa  Do 'tdshrink slabs when recd imingpmemoryffromline" name="L82">  82     213n class=21+code=vm_swappiness" cla21+co>213ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* over limitfcgroupsline" name="L82">  82     2131 class=21"+code=vm_total_pages" c21"+c>213nodes allowed by the caller.aaaaaaaaaaaaaaaa*"line" name="L82">  82     2132 class=21vmscan.c#L133" id="L133"21vms>21+ass="sref">_page)nr_pages_scanned  57     2133 class=21f="+code=LIST_HEAD" clas21f=">213=page" class="sref">pf">prev 213
<21+4 class=21f="+code=DECLARE_RWSEM" 21f=">213                             im_cgroup_disabfor_each_zone_zonelist="+code=_page" for_each_zone_zonelistshrin,  213
<21+5 class=21vmscan.c#L136" id="L136"21vms>2135                    "sref">parev        ,   57     2136 class=21f="+code=CONFIG_MEMCG" c21f=">213ch" class="sref">pref        age)nr_pmem_cgroup_disabcpuset_zone_allowed_"ardwallid="L143" classcpuset_zone_allowed_"ardwallshrin,  213
<21+7 class=21f="+code=bool" class="sr21f=">213                     ize" clapf">prevvvvvvvvvcodtinue" name="L213"> 213
<21+8 class=21/vmscan.c#L139" id="L13921/vm>2138h" c name="L213"> 213
<21+9 class=21n !213class="sref">prev                mm/vmscan.c#L18lru_hrefm/vmscan.c#L131"lru_hrefm,  213
<214n class=21/vmscan.c#L141" id="L14121/vm>214c                    ize" cla} name="L177"> 1772141     name="L213"> 213
<2142 class=21f="+code=bool" class="sr21f=">21/ass="sref">_page)        mm/vmscan.c#L18shrink_slab/vmscan.c#L131"shrink_slabshrin,  213
<2143 class=21/vmscan.c#L144" id="L14421/vm>21/=page" class="sref">pf">prev  57     2144 class=21n 21/                                     mm/vmscan.c#L185 id="L143" class="lined,  213
<21/5 class=21/vmscan.c#L146" id="L14621/vm>21/5                    "sref">p        mm/vmscan.c#L18reed im_ststeid="L143" classreed im_ststeline 213
<21/6 class=21f="mm/vmscan.c#L147" id=21f=">21/ch" class="sref">pref        } name="L177"> 177214                     } name="L177"> 177 213
<21/9 class=21/vmscan.c#L150" id="L15021/vm>214class="sref">prevnr_pmm/vmscan.c#L185 id="L143" class="lined,  213
<215n class=21 213
<2151 class=21   return  213
<2152 class=21vmscan.c#L153" id="L153"21vms>21_page)er's allocation at/ line" name="L82">  82     2153 class=21n   82     2154 class=21/vmscan.c#L155" id="L15521/vm>215mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaa* tendspeo cause slow streamingpwritersfto write datafto th>shne" name="L82">  82     2155 class=21vmscan.c#L156" id="L156"21vms>215group that hit its limit anddddddddddddddddd*>disk smoothly, at ehe dirtyingprste, which is>nice.   Butshne" name="L82">  82     2156 class=21comment">/*
215vmscan.c#L207" id="L207" clddddddddddddddddd*pthat's undesirabl" in laptop m#L1, wher2pwe *want* lumpyshne" name="L82">  82     2157 class=21comment"> * Add a shrink21com>215ng.
 206 */
215mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa*"line" name="L82">  82     2159 class=21"+code=register_shrinker21"+c>21prevmm/vmscan.c#L18writeback_thresholdid="L143" classwriteback_thresholdlinep= mm/vmscan.c#L18s id="L143" class="line 213
<216n class=21/vmscan.c#L161" id="L16121/vm>216c                    nr_pmm/vmscan.c#L18total 06mm/vmscan.c#L18writeback_thresholdid="L143" classwriteback_thresholdline" name="L57">  57     2161 class=21ef="+code=atomic_long_se21ef=>21/oup_get_lru_size" claprevmm/vmscan.c#L18wakeup_flusher_threadsid="L143" classwakeup_flusher_threadsshrin,  213
<2162 class=21ef="+code=down_write" cl21ef=>216ass="sref">_page)                        prevmm/vmscan.c#L18WB_REASON_TRY_TO_FREE_PAGESid="L143" classWB_REASON_TRY_TO_FREE_PAGES,  213
<2163 class=21ef="+code=list_add_tail"21ef=>216=page" class="sref">pf">prev 213
<2164 class=21ef="+code=up_write" clas21ef=>216                     } name="L177"> 177 177prefmr's allocation at/  Take a nap, wait for=se e writeback topcoiplete *"line" name="L82">  82     2167 class=21vmscan.c#L168" id="L168"21vms>216                     nr_pmem_cgroup_disabs id="L143" class="liner mm/vmscan.c#L185 id="L143" class="linerame="L57">  57     2168 class=21comment">/*
216                         mm/vmscan.c#L185 id="L143" class="line   57     2169 class=21comment"> * Remove one216class="sref">prev        structp,  213
<217n class=21comment"> */
217v     name="L213"> 213
<2171 class=21"+code=unregister_shrink21"+c>217oup_get_lru_size" claprevmm/vmscan.c#L18first_zones_zonelist="+code=_page" first_zones_zonelistshrin,  213
<2172 class=21/vmscan.c#L173" id="L17321/vm>217ass="sref">_page)                        prevr,  213
<2173 class=21ef="+code=down_write" cl21ef=>217=page" class="sref">pf">prev             prevr,  213
<2174 class=21ef="+code=list_del" clas21ef=>21c                     prevmm/vmscan.c#L18wait_iff_codgestedid="L143" classwait_iff_codgestedshrin,  213
<2175 class=21ef="+code=up_write" clas21ef=>2175                    } name="L177"> 177 213
<2177 class=21e=EXPORT_SYMBOL" class="21e=E>217      name="L213"> 213
<2178 class=21vmscan.c#L179" id="L179"21vms>21c8h" cmm/vmscan.c#L18out="+code=_page" out,  213
<2179 class=21f="+code=inline" class="21f=">21cclass="sref">im_cgroup_disabdelayacct_freep"L2s endid="L143" classdelayacct_freep"L2s endshrin)" name="L213"> 213
<218n class=21                        21   >218v     name="L213"> 213
<2181 class=21                        21   >218oup_get_lru_snr_pages_scannedd/vmscan.c#L131"nr reed im>d,  213
<2182 class=21/vmscan.c#L183" id="L18321/vm>21 ass="sref">_page)return em_cgroup_disab5 id="L143" class="lined,  213
<2183 class=21ef="+code=sc" class="sre21ef=>2183ss=" name="L177"> 177  82     2185 class=21/vmscan.c#L186" id="L18621/vm>218group that hit its limit anddddddddd* As hibernation is>goingpon, kswapd is freezed=septhat itfc> 'tdmarkline" name="L82">  82     2186 class=21vmscan.c#L187" id="L187"21vms>218vmscan.c#L207" id="L207" clddddddddd*=ehe zone intopall_unreed imabls. Thus byp" iingpall_unreed imabls  ne" name="L82">  82     2187 class=21ef="+code=SHRINK_BATCH" 21ef=>218ng.
 206/*
218mscan.c#L199" id="L199" claaaaaaaaaa*"line" name="L82">  82     2189 class=21comment"> * Call the shr21com>21 9            nr_pages_scanned 213
<219n class=21comment"> *
219c                    return 0" name="L213"> 213
<2191 class=21comment"> * Here we assu21com>21c1     name="L213"> 213
<2192 class=21comment"> * takes a seek21com>2192            er's allocation at/  Aborted reed im to tryfcoipac/von? don'tdOOM,fthent*"line" name="L82">  82     2193 class=21comment"> * percentages 21com>2193            nr_pages_scanned 213
<2194 class=21comment"> * generated by21com>219                     return 1" name="L213"> 213
<21c5 class=21comment"> *
2195     name="L177"> 177 * If the vm en21com>2196            er's allocation at/  top prvority shrink_zones still had_more to do? don'tdOOM,fthent*"line" name="L82">  82     2197 class=21comment"> * slab to avoi21com>2197            nr_pages_scanned 213
<2198 class=21comment"> *
219                     return 1" name="L213"> 213
<21c9 class=21comment"> * We do weird 21com>21co avo name="L213"> 213
<22an class=22an cent"> * We do weird 22an >220c            return 0" name="L213"> 213
<22a1 class=22aomment"> * Here we assu22aom>220nodes} name="L177"> 177 * takes a seek22aom>220 call name="L177"> 177 * percentages 22aom>2203    ststicrmm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18pfmemalloc_watermark_ok="+code=_page" pfmemalloc_watermark_okshrin,  213
<22a4 class=22aomment"> * generated by22aom>220mscanname="L57">  57     22a5 class=22aomment"> *
2205            structp,  213
<22a6 class=22aomment"> * If the vm en22aom>2206            unsigeedfloas mm/vmscan.c#L18pfmemalloc_reserveid="L143" classpfmemalloc_reserve    l= 0" name="L213"> 213
<22a7 class=22aomment"> * slab to avoi22aom>2207            unsigeedfloas mm/vmscan.c#L18free_hrefm/vmscan.c#L131"free_hrefm    l= 0" name="L213"> 213
<22a8 class=22aomment"> *
220             int mm/vmscan.c#L18i/vmscan.c#L131"iline" name="L213"> 213
<22a9 class=22aomment"> * We do weird 22aom>220class="sref">im_cgroup_disabbool/vmscan.c#L131"boolscanpmm/vmscan.c#L18wmark_ok="+code=_page" wmark_okshri" name="L213"> 213
<221n class=22/vmscan.c#L211" id="L21122/vm>221v     name="L213"> 213
<2211 class=22t = mm/vmscan.c#L18ZONE_NORMAL/vmscan.c#L131"ZONE_NORMALshri" mm/vmscan.c#L18i/vmscan.c#L131"iline++" name="L57">  57     22/2 class=22ned long _page)mm/vmscan.c#L18zoneid="L143" classzonelinep=>r,  213
<2213 class=22vmscan.c#L214" id="L214"22vms>221=page" class="sref">pmm/vmscan.c#L18pfmemalloc_reserveid="L143" classpfmemalloc_reserve    l+= mm/vmscan.c#L18min_wmark_hrefm/vmscan.c#L131"min_wmark_hrefm    n,  213
<22/4 class=22a href="+code=nr_pages_s22a h>221                     mm/vmscan.c#L18free_hrefm/vmscan.c#L131"free_hrefm    l+= mm/vmscan.c#L18zone_href_ststeid="L143" classzone_href_stste    n,  213
<22/5 class=22   177 213
<2217 class=22           struct 22/             em_cgroup_disabwmark_ok="+code=_page" wmark_okshrip= mm/vmscan.c#L18free_hrefm/vmscan.c#L131"free_hrefm    la hr>mm/vmscan.c#L18pfmemalloc_reserveid="L143" classpfmemalloc_reserve    l/ 2" name="L213"> 213
<2218 class=22                        22   >2218h" c name="L213"> 213
<22/9 class=22           ir's allocation at/  kswapd mustdbe awake nr_process2s are beingpehrottledf*"line" name="L82">  82     222n class=22a href="include/linux/in22a h>222c            nr_pmem_cgroup_disabwmark_ok="+code=_page" wmark_okshripar mm/vmscan.c#L18waitqueue_ac/vveid="L143" classwaitqueue_ac/vve    nr,   57     2221 class=22a href="include/linux/hi22a h>222oup_get_lru_size" claim/vmscan.c#L18pgdat="+code=_page" pgdat     213
<2222 class=22  href="include/linux/vm22  h>222ass="sref">_page)))))))))))))))))))))))))))))))))(enum mm/vmscan.c#L18zone_typeid="L143" classzone_typeline)mm/vmscan.c#L18ZONE_NORMAL/vmscan.c#L131"ZONE_NORMALshri)" name="L213"> 213
<22a3 class=22a href="include/linux/fi22a h>222=page" class="sref">pmm/vmscan.c#L18wake_up_interrup/vblsid="L143" classwake_up_interrup/vbls    nr,  213
<22a4 class=22a href="include/linux/wr22a h>222             } name="L177"> 177 177 213
<2227 class=22omment">                22omm>22a     } name="L177"> 177 213
<22a9 class=22a href="include/linux/ba22a h>222o avoid (scanned*seeks*entr/ line" name="L82">  82     223n class=22+code=vm_swappiness" cla22+co>223ascan.c#L199" id="L199" claa* Throttle direct reed im>rs nr_backingpstor"L2 is_backedfby the networkline" name="L82">  82     2231 class=22"+code=vm_total_pages" c22"+c>223nodes allowed by the caller.* aid ehe PFMEMALLOC reservesfor=ehe =rhrerred nisa is>gettingpdangerouslyshne" name="L82">  82     2232 class=22vmscan.c#L133" id="L133"22vms>223 caller's allocation att* depleted. kswapd will codtinue to make progress aid wake ehe =rocess2sshne" name="L82">  82     2233 class=22f="+code=LIST_HEAD" clas22f=">223page reclaim.
reached.="line" name="L206"> 206  82     22+5 class=22vmscan.c#L136" id="L136"22vms>223group that hit its limit and* Returns true nr_a fatal sigeal was delvvered duringpehrottling. Ifpehisline" name="L82">  82     2236 class=22f="+code=CONFIG_MEMCG" c22f=">223vmscan.c#L207" id="L207" cla*ahappens, the ="L2 allocator=should>not codsider=eriggeringpehedOOM killer.="line" name="L206"> 206223ng.
  82     22+8 class=22/vmscan.c#L139" id="L13922/vm>2238h" cststicrim_cgroup_disabbool/vmscan.c#L131"boolscanpmm/vmscan.c#L18ehrottle_direct_reed imid="L143" classehrottle_direct_reed imshrin,   82     22+9 class=22n !223class="sref">prev                "sref">pmm/vmscan.c#L18nisamask_t="+code=_page" nisamask_tlinep*,   82     224n class=22/vmscan.c#L141" id="L14122/vm>224c    name="L57">  57     2241 class=22="mm/vmscan.c#L142" id="22="m>224oup_get_lru_sstructp,  213
<2242 class=22f="+code=bool" class="sr22f=">22/ass="sref">_pint mm/vmscan.c#L18high_zoneidxid="L143" classhigh_zoneidxshrip= mm/vmscan.c#L18gfp_zoneid="L143" classgfp_zoneshrin,  213
<2243 class=22/vmscan.c#L144" id="L14422/vm>22/=page" class=,  213
<2244 class=22n 22/      name="L213"> 213
<2245 class=22/vmscan.c#L146" id="L14622/vm>22/5            id (scanned*seeks*entr/ line" name="L82">  82     22/6 class=22f="mm/vmscan.c#L147" id=22f=">224vmscan.c#L207" id="L207" clddddddddd*=Kernel threads should>not bepehrottledfas ehey may be indirectlyshne" name="L82">  82     2247 class=22vmscan.c#L148" id="L148"22vms>224ng.
  82     2248 class=22ed long for=exaiple may enter direct reed im whil"line" name="L82">  82     2249 class=22/vmscan.c#L150" id="L15022/vm>224o avoid (scanned*seeks*entriaaaaaaaa*fcoimittingpa=eransac/von wher2pehrottling itfcould>forcingpoeherline" name="L82">  82     225n class=22 206  82     2252 class=22vmscan.c#L153" id="L153"22vms>22_pnr_pages_scanned=,   82     2253 class=22n pgoto mm/vmscan.c#L18out="+code=_page" out,  213
<2254 class=22/vmscan.c#L155" id="L15522/vm>225      name="L213"> 213
<2255 class=22vmscan.c#L156" id="L156"22vms>2255            id (scanned*seeks*entr/ line" name="L82">  82     2256 class=22comment">/*
225vmscan.c#L207" id="L207" clddddddddd* Ifpa fatal sigeal is>pending, ehis>process should>not ehrottle.="line" name="L206"> 206 * Add a shrink22com>225ng.
 206 */
225mscan.c#L199" id="L199" claaaaaaaaaa*"line" name="L82">  82     2259 class=22"+code=register_shrinker22"+c>2259            nr_pages_scanned 213
<226n class=22/vmscan.c#L161" id="L16122/vm>226c                    goto mm/vmscan.c#L18out="+code=_page" out,  213
<2261 class=22ef="+code=atomic_long_se22ef=>2261     name="L213"> 213
<2262 class=22ef="+code=down_write" cl22ef=>2262            er's allocation at/  Check ifpth> pfmemalloc reserves are oka*"line" name="L82">  82     2263 class=22ef="+code=list_add_tail"22ef=>226=page" class=, ,  213
<2264 class=22ef="+code=up_write" clas22ef=>226             ,  213
<2265 class=22/vmscan.c#L166" id="L16622/vm>2265            nr_pages_scanned 213
<2266 class=22e=EXPORT_SYMBOL" class="22e=E>226ch" class="sref">prefgoto mm/vmscan.c#L18out="+code=_page" out,  213
<2267 class=22vmscan.c#L168" id="L168"22vms>226      name="L213"> 213
<2268 class=22comment">/*
226             er's allocation at/  Accountsfor=ehe ehrottling *"line" name="L82">  82     2269 class=22comment"> * Remove one226class="sref">im_cgroup_disabcount_vm_eventid="L143" classcount_vm_eventshrinages_scanned 213
<227n class=22comment"> */
227v     name="L213"> 213
<2271 class=22"+code=unregister_shrink22"+c>227oup_get_lru_sid (scanned*seeks*entr/ line" name="L82">  82     2272 class=22/vmscan.c#L173" id="L17322/vm>227 caller's allocation attdddddddd* Ifpehe callerp6  82     2273 class=22ef="+code=down_write" cl22ef=>227page reclaim.
due to ehe callerpholdingpan FS lock or>performingpa=journalline" name="L82">  82     2274 class=22ef="+code=list_del" clas22ef=>227mscan.c#L205" id="L205" clasaaaaaaaa*=eransac/von inpehe case of a filesystem like ext[3|4]. In ehis>case,line" name="L82">  82     2275 class=22ef="+code=up_write" clas22ef=>227group that hit its limit anddddddddd* itfis>not safe eo block on pfmemalloc_waitfas kswapd could>b"line" name="L82">  82     2276 class=22/vmscan.c#L177" id="L17722/vm>227vmscan.c#L207" id="L207" clddddddddd* blocked waitingponpehe s="L lock. Instead, ehrottlesfor=up eo aline" name="L82">  82     2277 class=22e=EXPORT_SYMBOL" class="22e=E>227ng.
  82     2278 class=22vmscan.c#L179" id="L179"22vms>227mscan.c#L199" id="L199" claaaaaaaaaa*"line" name="L82">  82     2279 class=22f="+code=inline" class="22f=">2279            nr_p!n, =,   57     228n class=22                        22   >228c                    mm/vmscan.c#L18wait_event_interrup/vbls_timeout="+code=_page" wait_event_interrup/vbls_timeoutshrin,   82     2281 class=22                        22   >228oup_get_lru_size" claprevmm/vmscan.c#L18pfmemalloc_watermark_ok="+code=_page" pfmemalloc_watermark_okshrin,  213
<2282 class=22/vmscan.c#L183" id="L18322/vm>228 call name="L177"> 177pgoto mm/vmscan.c#L18check_pending/vmscan.c#L131"check_pending,  213
<2284 class=22n (* 177 1772286            er's allocation at/  Throttle until kswapd wakes ehe =rocessa*"line" name="L82">  82     2287 class=22ef="+code=SHRINK_BATCH" 22ef=>228             em_cgroup_disabwait_event_killablsid="L143" classwait_event_killablsshrin,   82     2288 class=22comment">/*
228                     em/vmscan.c#L18pfmemalloc_watermark_ok="+code=_page" pfmemalloc_watermark_okshrin,  213
<2289 class=22comment"> * Call the shr22com>228o avo name="L213"> 213
<229n class=22comment"> *
229c    mm/vmscan.c#L18check_pending/vmscan.c#L131"check_pending,  213
<2291 class=22comment"> * Here we assu22com>229oup_get_lru_snr_pages_scanned 213
<2292 class=22comment"> * takes a seek22com>229ass="sref">_page)return em_cgroup_disabtrueid="L143" classerue,  213
<2293 class=22comment"> * percentages 22com>2293ss=" name="L177"> 177 * generated by22com>229     mm/vmscan.c#L18out="+code=_page" out,  213
<2295 class=22comment"> *
2295            return em_cgroup_disabfalseid="L143" classfalse,  213
<2296 class=22comment"> * If the vm en22com>2296    } name="L177"> 177 * slab to avoi22com>229      name="L213"> 213
<2298 class=22comment"> *
229     unsigeedfloas mm/vmscan.c#L18try to_free_hrefm/vmscan.c#L131"hry to_free_hrefm    nstructp,   82     22c9 class=22comment"> * We do weird 22com>229class="sref">prev                mm/vmscan.c#L18gfp_t="+code=_page" gfp_tscanpmm/vmscan.c#L18gfp_mask="+code=_page" gfp_maskline, mm/vmscan.c#L18nisamask_t="+code=_page" nisamask_tlinep*,   82     23an class=23an cent"> * We do weird 23an >230c    name="L57">  57     23a1 class=23aomment"> * Here we assu23aom>230oup_get_lru_sunsigeedfloas mm/vmscan.c#L18nr reed im>d/vmscan.c#L131"nr reed im>d,  213
<23a2 class=23aomment"> * takes a seek23aom>230ass="sref">_pstructp,   57     23a3 class=23aomment"> * percentages 23aom>230=page" class="sref">p.,   57     23a4 class=23aomment"> * generated by23aom>230                     .,   57     23a5 class=23aomment"> *
2305                    .,   57     23a6 class=23aomment"> * If the vm en23aom>230ch" class="sref">pref.,   57     23a7 class=23aomment"> * slab to avoi23aom>230                     .,   57     23a8 class=23aomment"> *
230                     .,   82     23a9 class=23aomment"> * We do weird 23aom>230class="sref">prev.,   82     231n class=23/vmscan.c#L211" id="L21123/vm>231c                    .,   82     2311 class=23t   82     2312 class=23ned long _p}" name="L213"> 213
<2313 class=23vmscan.c#L214" id="L214"23vms>231=page" class=structp,   57     23/4 class=23a href="+code=nr_pages_s23a h>231                     .,   82     2315 class=23   213
<2316 class=23   if (( 213
<2317 class=23           struct 23/             ed (scanned*seeks*entr/ line" name="L82">  82     2318 class=23                        23   >231mscan.c#L199" id="L199" claaaaaaaaaa* Do not enter reed im if fatal sigeal was delvvered whil" ehrottled.line" name="L82">  82     23/9 class=23           not OOM kill at ehisline" name="L82">  82     232n class=23a href="include/linux/in23a h>232ascan.c#L199" id="L199" claaaaaaaaaa*_point.line" name="L82">  82     2321 class=23a href="include/linux/hi23a h>232nodes allowed by the caller.aaaaaaaa*"line" name="L82">  82     2322 class=23  href="include/linux/vm23  h>232ass="sref">_pnr_pages_scanned  82     23a3 class=23a href="include/linux/fi23a h>232=page" class="sref">preturn 1" name="L213"> 213
<23a4 class=23a href="include/linux/wr23a h>232      name="L213"> 213
<2325 class=23a href="include/linux/bl23a h>2325            im/vmscan.c#L18trace_mm_ 213  82     23a6 class=23a href="include/linux/bu23a h>232ch" class="sref">pref        age)mm/vmscan.c#L1806id="L143" class="line.,   82     23a7 class=23omment">                23omm>232                     ize" clapf">prev,  213
<2328 class=23a href="include/linux/mm23a h>2328h" c name="L213"> 213
<23a9 class=23a href="include/linux/ba23a h>232class="sref">im_cgroup_disabnr reed im>d/vmscan.c#L131"nr reed im>d, ,  213
<233n class=23+code=vm_swappiness" cla23+co>233v     name="L213"> 213
<2331 class=23"+code=vm_total_pages" c23"+c>2331            im/vmscan.c#L18trace_mm_ 213d/vmscan.c#L131"nr reed im>d,  213
<2332 class=23vmscan.c#L133" id="L133"23vms>233 call name="L177"> 177d/vmscan.c#L131"nr reed im>d,  213
<23+4 class=23f="+code=DECLARE_RWSEM" 23f=">233mscan} name="L177"> 1772335     name="L177"> 177 177233      name="L213"> 213
<23+8 class=23/vmscan.c#L139" id="L13923/vm>233     unsigeedfloas mm/vmscan.c#L18mem_cgroup_1hrink_nisa_zoneid="L143" classmem_cgroup_1hrink_nisa_zone    nstructp,   82     23+9 class=23n !233class="sref">prev                "sref">ppf">prev,   82     234n class=23/vmscan.c#L141" id="L14123/vm>234c                    ize" claaaaaaaaaaaaaaaaaaaaaaaaastructp,   82     2341 class=23="mm/vmscan.c#L142" id="23="m>234oup_get_lru_size" claprev>>>>>>>>>>>>>>>>>>>>>>>>unsigeedfloas *,   82     2342 class=23f="+code=bool" class="sr23f=">23/ass="name="L57">  57     2343 class=23/vmscan.c#L144" id="L14423/vm>234=page" class=structp,   57     2344 class=23n 234                     .,   82     2345 class=23/vmscan.c#L146" id="L14623/vm>2345                    .,   57     23/6 class=23f="mm/vmscan.c#L147" id=23f=">234ch" class="sref">pref.,   57     2347 class=23vmscan.c#L148" id="L148"23vms>234                     .,   57     2348 class=23ed long   82     2349 class=23/vmscan.c#L150" id="L15023/vm>234class="sref">prev.,   82     235n class=23  82     2351 class=23   return   82     2352 class=23vmscan.c#L153" id="L153"23vms>235ass="sref">_p}" name="L213"> 213
<2353 class=23n  213
<2354 class=23/vmscan.c#L155" id="L15523/vm>235      name="L213"> 213
<2355 class=23vmscan.c#L156" id="L156"23vms>2355            im/vmscan.c#L1806id="L143" class="line., =,  213
<2356 class=23comment">/*
235ch" class="sref">pref        n, =~,  213
<2357 class=23comment"> * Add a shrink23com>235      name="L213"> 213
<2358 class=23comment"> */
2358            im/vmscan.c#L18trace_mm_ 213  82     2359 class=23"+code=register_shrinker23"+c>235class="sref">prev                "sref">ppf">prev      im/vmscan.c#L1806id="L143" class="line.,   82     236n class=23/vmscan.c#L161" id="L16123/vm>236c                                    "sref">ppf">prev      im/vmscan.c#L1806id="L143" class="line.,  213
<2361 class=23ef="+code=atomic_long_se23ef=>2361     name="L213"> 213
<2362 class=23ef="+code=down_write" cl23ef=>2362            er's allocation at/ line" name="L82">  82     2363 class=23ef="+code=list_add_tail"23ef=>236page reclaim.
 =get ehe =rvority field, using itline" name="L82">  82     2364 class=23ef="+code=up_write" clas23ef=>236mscan.c#L205" id="L205" clasaaaaaaaa*=her2pis>not a goodclaea, since it limits the ="L2s wefc> =/a>  line" name="L82">  82     2365 class=23/vmscan.c#L166" id="L16623/vm>236group that hit its limit anddddddddd* if wefdon'tdreed im her2, the shrink_zone from balance_hgdat, ne" name="L82">  82     2366 class=23e=EXPORT_SYMBOL" class="23e=E>236vmscan.c#L207" id="L207" clddddddddd* will pick=up ="L2s from oeherpmem cgroup's as well. We hackline" name="L82">  82     2367 class=23vmscan.c#L168" id="L168"23vms>236ng.
  82     2368 class=23comment">/*
236mscan.c#L199" id="L199" claaaaaaaaaa*"line" name="L82">  82     2369 class=23comment"> * Remove one236class="sref">im_cgroup_disabshrink_lruve6id="L143" classshrink_lruve6shrin, ,  213
<237n class=23comment"> */
237v     name="L213"> 213
<2371 class=23"+code=unregister_shrink23"+c>2371            im/vmscan.c#L18trace_mm_ 213d/vmscan.c#L131"nr reed im>d,  213
<2372 class=23/vmscan.c#L173" id="L17323/vm>237 call name="L177"> 177237=page" class=*,  213
<2374 class=23ef="+code=list_del" clas23ef=>237             return em_cgroup_disab5 id="L143" class="line., d,  213
<2375 class=23ef="+code=up_write" clas23ef=>237group} name="L177"> 177 213
<2377 class=23e=EXPORT_SYMBOL" class="23e=E>237ng.  82     2378 class=23vmscan.c#L179" id="L179"23vms>237                          "sref">ppf">prev      im/vmscan.c#L18gfp_t="+code=_page" gfp_tscanpmm/vmscan.c#L18gfp_mask="+code=_page" gfp_maskline,ame="L82">  82     2379 class=23f="+code=inline" class="23f=">237class="sref">prev                "sref">ppf"mm/vmscan.c#L18bool/vmscan.c#L131"boolscanpmm/vmscan.c#L18noswapid="L143" classnoswapline"ame="L82">  82     238n class=23                        23   >238c    name="L57">  57     2381 class=23                        23   >238oup_get_lru_sstructp,  213
<2382 class=23/vmscan.c#L183" id="L18323/vm>2382            unsigeedfloas mm/vmscan.c#L18nr reed im>d/vmscan.c#L131"nr reed im>d,  213
<2383 class=23ef="+code=sc" class="sre23ef=>238=page" class=int mm/vmscan.c#L18nid/vmscan.c#L131"nid,  213
<2384 class=23n (*  57     2385 class=23/vmscan.c#L186" id="L18623/vm>2385                    .,   57     2386 class=23vmscan.c#L187" id="L187"23vms>238ch" class="sref">pref.,   57     2387 class=23ef="+code=SHRINK_BATCH" 23ef=>238                     .,   82     2388 class=23comment">/*
238                     .,   57     2389 class=23comment"> * Call the shr23com>238class="sref">prev.,   82     239n class=23comment"> *
239c                    .,   82     2391 class=23comment"> * Here we assu23com>239oup_get_lru_size" cla.,   82     2392 class=23comment"> * takes a seek23com>239ass="sref">_page).,   82     2393 class=23comment"> * percentages 23com>239=page" class="sref">p., =,  213
<2394 class=23comment"> * generated by23com>239                                     n, =~,   82     2395 class=23comment"> *
2395            }" name="L213"> 213
<2396 class=23comment"> * If the vm en23com>239ch" class="srstructp,   57     2397 class=23comment"> * slab to avoi23com>239                     .,   82     2398 class=23comment"> *
2398            }" name="L213"> 213
<2399 class=23comment"> * We do weird 23com>239o avo name="L213"> 213
<24an class=24an cent"> * We do weird 24an >240c            er's allocation at/ line" name="L82">  82     24a1 class=24aomment"> * Here we assu24aom>240nodes allowed by the caller.aaaaaaaa* Unlike direct reed im via alloc_hrefm(), memcg's reed im doesn'tline" name="L82">  82     24a2 class=24aomment"> * takes a seek24aom>240 caller's allocation attdddddddd* take care of from wher2pwefget hrefm. So ehe nisa wher2pwefshart eheline" name="L82">  82     24a3 class=24aomment"> * percentages 24aom>240page reclaim.
 =does>not needfeo be ehe current nisa line" name="L82">  82     24a4 class=24aomment"> * generated by24aom>240mscan.c#L205" id="L205" clasaaaaaaaa*"line" name="L82">  82     24a5 class=24aomment"> *
2405            im/vmscan.c#L18nid/vmscan.c#L131"nid,  213
<24a6 class=24aomment"> * If the vm en24aom>2406     name="L213"> 213
<24a7 class=24aomment"> * slab to avoi24aom>240             em_cgroup_disabzonelist="+code=_page" zonelistlinep= mm/vmscan.c#L18NODE_DATAid="L143" classNODE_DATAshrin,  213
<24a8 class=24aomment"> *
2408h" c name="L213"> 213
<24a9 class=24aomment"> * We do weird 24aom>240class="sref">im_cgroup_disabtrace_mm_ 213  82     241n class=24/vmscan.c#L211" id="L21124/vm>241c                                                im/vmscan.c#L1806id="L143" class="line.,   82     2411 class=24t  213
<2412 class=24ned long  177241=page" class=mm/vmscan.c#L18nr reed im>d/vmscan.c#L131"nr reed im>d, ,  213
<24/4 class=24a href="+code=nr_pages_s24a h>241      name="L213"> 213
<2415 class=24  d,  213
<2416 class=24   if (( 213
<2417 class=24           struct 24/             return em_cgroup_disabnr reed im>d/vmscan.c#L131"nr reed im>d,  213
<2418 class=24                        24   >241mscan} name="L177"> 177 177 213
<2421 class=24a href="include/linux/hi24a h>242nodesststicrvoid em_cgroup_disabref_ac/vvf_anon/vmscan.c#L131"ref_ac/vvf_anon    nstructp,  213
<2422 class=24  href="include/linux/vm24  h>242ass="name="L57">  57     24a3 class=24a href="include/linux/fi24a h>242=page" class=structp,  213
<24a4 class=24a href="include/linux/wr24a h>242      name="L213"> 213
<2425 class=24a href="include/linux/bl24a h>2425            nr_p!im/vmscan.c#L18total_swap_hrefm/vmscan.c#L131"hotal_swap_hrefmline" name="L213"> 213
<2426 class=24a href="include/linux/bu24a h>242ch" class="sref">prefreturn" name="L213"> 213
<24a7 class=24omment">                24omm>242      name="L213"> 213
<2428 class=24a href="include/linux/mm24a h>2428            im/vmscan.c#L18memcg/vmscan.c#L131"memcglinep= mm/vmscan.c#L18mem_cgroup_iter="+code=_page" mem_cgroup_itershrin,  213
<24a9 class=24a href="include/linux/ba24a h>242class="sref">do name="L57">  57     243n class=24+code=vm_swappiness" cla24+co>243c                    structp,  213
<2431 class=24"+code=vm_total_pages" c24"+c>2431     name="L213"> 213
<2432 class=24vmscan.c#L133" id="L133"24vms>243ass="sref">_page)nr_pages_scanned  82     2433 class=24f="+code=LIST_HEAD" clas24f=">243=page" class="sref">p        im/vmscan.c#L180hrink_ac/vvf_list="+code=_page" 0hrink_ac/vvf_listshrin,   82     24+4 class=24f="+code=DECLARE_RWSEM" 24f=">243                                     ">p        im/vmscan.c#L1806id="L143" class="line, im/vmscan.c#L18LRU_ACTIVE_ANONid="L143" classLRU_ACTIVE_ANONline)" name="L213"> 213
<2435 class=24vmscan.c#L136" id="L136"24vms>2435     name="L177"> 177prefim/vmscan.c#L18memcg/vmscan.c#L131"memcglinep= mm/vmscan.c#L18mem_cgroup_iter="+code=_page" mem_cgroup_itershrin,  213
<2437 class=24f="+code=bool" class="sr24f=">243             } whil" n,  213
<24+8 class=24/vmscan.c#L139" id="L13924/vm>243mscan} name="L177"> 177243o avo name="L213"> 213
<244n class=24/vmscan.c#L141" id="L14124/vm>244c    ststicr,   82     2441 class=24="mm/vmscan.c#L142" id="24="m>244oup_get_lru_size" claprev>>unsigeedfloas mm/vmscan.c#L18balance_gapid="L143" classbalance_gapline, int mm/vmscan.c#L18="L14zone_idxid="L143" class="L14zone_idxline" name="L213"> 213
<2442 class=24f="+code=bool" class="sr24f=">24/ass="name="L57">  57     2443 class=24/vmscan.c#L144" id="L14424/vm>244=page" class=nr_p!im/vmscan.c#L18zone_watermark_ok_safe/vmscan.c#L131"zone_watermark_ok_safeshrin,   57     2444 class=24n 244                              ">p        im/vmscan.c#L18balance_gapid="L143" classbalance_gapline, mm/vmscan.c#L18="L14zone_idxid="L143" class="L14zone_idxline, 0""ame="L82">  82     2445 class=24/vmscan.c#L146" id="L14624/vm>2445                    return em_cgroup_disabfalseid="L143" classfalse,  213
<24/6 class=24f="mm/vmscan.c#L147" id=24f=">2446     name="L213"> 213
<2447 class=24vmscan.c#L148" id="L148"24vms>244             nr_pages_scanneda=, a name="L213"> 213
<2448 class=24ed long   82     2449 class=24/vmscan.c#L150" id="L15024/vm>244class="sref">prevreturn em_cgroup_disabfalseid="L143" classfalse,  213
<245n class=24 213
<2451 class=24   return  213
<2452 class=24vmscan.c#L153" id="L153"24vms>245ass="} name="L177"> 177 177  82     2455 class=24vmscan.c#L156" id="L156"24vms>245group that hit its limit and* hgdat_balanced()pis>used whet hhecking if a nisa is>balanced line" name="L82">  82     2456 class=24comment">/*
245vmscan.c#L207" id="L207" cld line" name="L82">  82     2457 class=24comment"> * Add a shrink24com>245ng.
  82     2458 class=24comment"> */
245mscan.c#L199" id="L199" claa line" name="L82">  82     2459 class=24"+code=register_shrinker24"+c>245o avoid (scanned*seeks*entri* For high-order allocatvons only zones that meet watermarks aid are in aline" name="L82">  82     246n class=24/vmscan.c#L161" id="L16124/vm>246ascan.c#L199" id="L199" claa* zone allowed by ehe callers ="L14zone_idx are addedfeo balanced_hrefm. Theline" name="L82">  82     2461 class=24ef="+code=atomic_long_se24ef=>246nodes allowed by the caller.* hotal of balanced ="L2s must be at least 25% of ehe zones allowed byline" name="L82">  82     2462 class=24ef="+code=down_write" cl24ef=>246 caller's allocation att* ="L14zone_idx for=ehe nisa eo be considered balanced  Forcingpall zones toline" name="L82">  82     2463 class=24ef="+code=list_add_tail"24ef=>246page reclaim.
 =cause excessive reed im whet ther2pareline" name="L82">  82     2464 class=24ef="+code=up_write" clas24ef=>246mscan.c#L205" id="L205" clas* imbalanced zones line" name="L82">  82     2465 class=24/vmscan.c#L166" id="L16624/vm>246group that hit its limit and  The choice of 25% is>due toline" name="L82">  82     2466 class=24e=EXPORT_SYMBOL" class="24e=E>246vmscan.c#L207" id="L207" cld*u_so a 16M DMA zone that is>balanced will not balance a zone on anyline" name="L82">  82     2467 class=24vmscan.c#L168" id="L168"24vms>246ng.
  82     2468 class=24comment">/*
246mscan.c#L199" id="L199" claa*u_so Onpall oeherpmachines, the top zone must be at least asreasonablsline" name="L82">  82     2469 class=24comment"> * Remove one246o avoid (scanned*seeks*entri*     perc*en"L2 of ehe middle zones  For ex  82     247n class=24comment"> */
247ascan.c#L199" id="L199" claa*     would needfeo be at least 256M for=it eo be balance a whole nisa line" name="L82">  82     2471 class=24"+code=unregister_shrink24"+c>247nodes allowed by the caller.*     Similarly, on x86-64 ehe Normal zone would needfeo be at least 1Gline" name="L82">  82     2472 class=24/vmscan.c#L173" id="L17324/vm>247 caller's allocation att*     eo balance a nisa on its own. These seemedflike reasonabls ratvos line" name="L82">  82     2473 class=24ef="+code=down_write" cl24ef=>247page reclaim.
  82     2474 class=24ef="+code=list_del" clas24ef=>247     ststicr,  213
<2475 class=24ef="+code=up_write" clas24ef=>247groupname="L57">  57     2476 class=24/vmscan.c#L177" id="L17724/vm>247ch" class="srunsigeedfloas mm/vmscan.c#L18present_hrefm/vmscan.c#L131"present_hrefmlinep= 0" name="L213"> 213
<2477 class=24e=EXPORT_SYMBOL" class="24e=E>2477h" class="srunsigeedfloas mm/vmscan.c#L18balanced_hrefmid="L143" classbalanced_hrefmlinep= 0" name="L213"> 213
<2478 class=24vmscan.c#L179" id="L179"24vms>247             int mm/vmscan.c#L18i/vmscan.c#L131"i,  213
<2479 class=24f="+code=inline" class="24f=">247o avo name="L213"> 213
<248n class=24                        24   >248c            er's allocation at/  Check ehe watermark levelsf*"line" name="L82">  82     2481 class=24                        24   >248oup_get_lru_sfor=pages_scanned  57     2482 class=24/vmscan.c#L183" id="L18324/vm>248ass="sref">_page)structp,  213
<2483 class=24ef="+code=sc" class="sre24ef=>2483ss=" name="L177"> 177 213
<2485 class=24/vmscan.c#L186" id="L18624/vm>2485                            codtinue" name="L213"> 213
<2486 class=24vmscan.c#L187" id="L187"24vms>2486     name="L213"> 213
<2487 class=24ef="+code=SHRINK_BATCH" 24ef=>248                     mm/vmscan.c#L18present_hrefm/vmscan.c#L131"present_hrefmlinep+= mm/vmscan.c#L18zoneid="L143" classzoneline 213
<2488 class=24comment">/*
2488h" c name="L213"> 213
<2489 class=24comment"> * Call the shr24com>248class="sref">prev.c#L205" id="L205" cla/ line" name="L82">  82     249n class=24comment"> *
249ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* A special case her2:line" name="L82">  82     2491 class=24comment"> * Here we assu24com>249nodes allowed by the caller.aaaaaaaaaaaaaaaa*line" name="L82">  82     2492 class=24comment"> * takes a seek24com>249 caller's allocation attddddddddaaaaaaaa* balance_hgdat() skips over all_unreed imabls aftershne" name="L82">  82     2493 class=24comment"> * percentages 24com>249page reclaim.
balanced soline" name="L82">  82     2494 class=24comment"> * generated by24com>249mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaa* they must be considered balanced=her2pas well!line" name="L82">  82     2495 class=24comment"> *
249group that hit its limit andddddddddaaaaaaaa*"line" name="L82">  82     2496 class=24comment"> * If the vm en24com>249ch" class="sref">prefnr_pages_scanned  57     2497 class=24comment"> * slab to avoi24com>249                     prev.m/vmscan.c#L18balanced_hrefmid="L143" classbalanced_hrefmlinep+= mm/vmscan.c#L18zoneid="L143" classzoneline 213
<2498 class=24comment"> *
249                          "srcodtinue" name="L213"> 213
<2499 class=24comment"> * We do weird 24com>249class="sref">prev} name="L177"> 177 * We do weird 25an >250v     name="L213"> 213
<25a1 class=25aomment"> * Here we assu25aom>250oup_get_lru_size" clanr_pages_scanned 213
<25a2 class=25aomment"> * takes a seek25aom>250ass="sref">_page)prev.m/vmscan.c#L18balanced_hrefmid="L143" classbalanced_hrefmlinep+= mm/vmscan.c#L18zoneid="L143" classzoneline 213
<25a3 class=25aomment"> * percentages 25aom>250=page" class="sref">pelse nr_p!im/vmscan.c#L18order="+code=_page" orderline" name="L213"> 213
<25a4 class=25aomment"> * generated by25aom>250                             return em_cgroup_disabfalseid="L143" classfalse,  213
<25a5 class=25aomment"> *
2505            } name="L177"> 177 * If the vm en25aom>2506     name="L213"> 213
<25a7 class=25aomment"> * slab to avoi25aom>250             nr_pages_scanned 213
<25a8 class=25aomment"> *
250                     return em_cgroup_disabbalanced_hrefmid="L143" classbalanced_hrefmlinepa hr= n,  213
<25a9 class=25aomment"> * We do weird 25aom>250class="sref">else name="L213"> 213
<251n class=25/vmscan.c#L211" id="L21125/vm>251c                    return em_cgroup_disabtrueid="L143" classerue,  213
<2511 class=25t  177 177251page reclaim.
  82     25/4 class=25a href="+code=nr_pages_s25a h>251mscan.c#L205" id="L205" clas* Prepare kswapd for=sleeping. This verifies that ther2pare no processesline" name="L82">  82     2515 class=25    82     2516 class=25   if ((  82     2517 class=25           struct 251ng.
  82     2518 class=25                        25   >251mscan.c#L199" id="L199" claa*"line" name="L82">  82     25/9 class=25             82     252n class=25a href="include/linux/in25a h>252c                                            int mm/vmscan.c#L18="L14zone_idxid="L143" class="L14zone_idxline" name="L213"> 213
<2521 class=25a href="include/linux/hi25a h>252nodesname="L57">  57     2522 class=25  href="include/linux/vm25  h>2522            er's allocation at/  If a direct reed imer woke kswapd withit HZ/10, it's prematurea*"line" name="L82">  82     25a3 class=25a href="include/linux/fi25a h>252=page" class=nr_pmm/vmscan.c#L18remaining="+code=_page" remainingline" name="L213"> 213
<2524 class=25a href="include/linux/wr25a h>252                     return em_cgroup_disabfalseid="L143" classfalse,  213
<2525 class=25a href="include/linux/bl25a h>2525     name="L177"> 177  82     25a7 class=25omment">                25omm>252ng.
  82     25a8 class=25a href="include/linux/mm25a h>252mscan.c#L199" id="L199" claaaaaaaaaa* aid a processfgets throttled. Ther2pis>also>a pot/vmial race ifline" name="L82">  82     25a9 class=25a href="include/linux/ba25a h>252o avoid (scanned*seeks*entriaaaaaaaa* processes=get ehrottled, kswapd wakes, a large processfexits therbyline" name="L82">  82     253n class=25+code=vm_swappiness" cla25+co>253ascan.c#L199" id="L199" claaaaaaaaaa* balancing ehe zones that causes kswapd eo miss>a wakeup. If kswapdline" name="L82">  82     2531 class=25"+code=vm_total_pages" c25"+c>253nodes allowed by the caller.aaaaaaaa* is>going eo sleep, no process should be=sleeping on pfmemalloc_waitline" name="L82">  82     2532 class=25vmscan.c#L133" id="L133"25vms>253 caller's allocation attdddddddd* so>wake them>now=nr_necessary. If necessary, processes=will wakeline" name="L82">  82     2533 class=25f="+code=LIST_HEAD" clas25f=">253page reclaim.
  82     2534 class=25f="+code=DECLARE_RWSEM" 25f=">253mscan.c#L205" id="L205" clasaaaaaaaa*"line" name="L82">  82     2535 class=25vmscan.c#L136" id="L136"25vms>2535            nr_pem_cgroup_disabwaitqueuf_ac/vvfid="L143" classwaitqueuf_ac/vvfshrinr,   57     2536 class=25f="+code=CONFIG_MEMCG" c25f=">253ch" class="sref">prefim/vmscan.c#L18wake_up/vmscan.c#L131"wake_upshrinr,  213
<2537 class=25f="+code=bool" class="sr25f=">253                     return em_cgroup_disabfalseid="L143" classfalse,  213
<25+8 class=25/vmscan.c#L139" id="L13925/vm>2538            } name="L213"> 213
<25+9 class=25n !253o avo name="L213"> 213
<254n class=25/vmscan.c#L141" id="L14125/vm>254c            return em_cgroup_disabhgdat_balanced/vmscan.c#L131"hgdat_balancedshrin,  213
<2541 class=25="mm/vmscan.c#L142" id="25="m>254oup_g} name="L177"> 177254 call name="L177"> 177  82     2544 class=25n 254mscan.c#L205" id="L205" clas* For kswapd, balance_hgdat() will work across all ehis>node's zones uvmilline" name="L82">  82     2545 class=25/vmscan.c#L146" id="L14625/vm>254group that hit its limit and  they are all at high_wmark_hrefm(zone).line" name="L82">  82     25/6 class=25f="mm/vmscan.c#L147" id=25f=">254vmscan.c#L207" id="L207" cld line" name="L82">  82     2547 class=25vmscan.c#L148" id="L148"25vms>254ng.
  82     2548 class=25ed long   82     2549 class=25/vmscan.c#L150" id="L15025/vm>254o avoid (scanned*seeks*entri* Ther2pis>special haidlingpher2pfor=zones which are full of pinned ="L2s.line" name="L82">  82     255n class=25 =happet if the ="L2s are all mlocked, or=if they are all used byline" name="L82">  82     2551 class=25   return   82     2552 class=25vmscan.c#L153" id="L153"25vms>255 caller's allocation att* What wefdopis>eo detect ehe casa wher2pall ="L2s it the zone have beenline" name="L82">  82     2553 class=25n   82     2554 class=25/vmscan.c#L155" id="L15525/vm>255mscan.c#L205" id="L205" cla.* dead aid from now=on, only perform>a short=/a>    Basically we'r2ppollingline" name="L82">  82     2555 class=25vmscan.c#L156" id="L156"25vms>255group that hit its limit and* the zone for=whet the problem>goes>away.line" name="L82">  82     2556 class=25comment">/*
255vmscan.c#L207" id="L207" cld line" name="L82">  82     2557 class=25comment"> * Add a shrink25com>255ng.
  82     2558 class=25comment"> */
255mscan.c#L199" id="L199" claa =zones which have free_hrefmpa hr high_wmark_hrefm(zone), but once a zone isline" name="L82">  82     2559 class=25"+code=register_shrinker25"+c>255o avoid (scanned*seeks*entri* found eo have free_hrefmpalt;= high_wmark_hrefm(zone), wefsc> =that zone aid theline" name="L82">  82     256n class=25/vmscan.c#L161" id="L16125/vm>256ascan.c#L199" id="L199" claa* lower=zones regardless of ehe number=of free ="L2s it the lower=zones. Thisline" name="L82">  82     2561 class=25ef="+code=atomic_long_se25ef=>256nodes allowed by the caller.* interoperates=with the ="L2 allocator=fallbackfschema eo ensure that agingline" name="L82">  82     2562 class=25ef="+code=down_write" cl25ef=>256 caller's allocation att* of p"L2s is>balanced across ehe zones.line" name="L82">  82     2563 class=25ef="+code=list_add_tail"25ef=>256page reclaim.
  82     2564 class=25ef="+code=up_write" clas25ef=>256     ststicrunsigeedfloas mm/vmscan.c#L18balance_pgdat="+code=_page" balance_hgdat, rin,   82     2565 class=25/vmscan.c#L166" id="L16625/vm>2565                                                            int *,  213
<2566 class=25e=EXPORT_SYMBOL" class="25e=E>256vmscaname="L57">  57     2567 class=25vmscan.c#L168" id="L168"25vms>256             structp,  213
<2568 class=25comment">/*
256             int mm/vmscan.c#L18i/vmscan.c#L131"i,  213
<2569 class=25comment"> * Remove one2569            int mm/vmscan.c#L18end_zoneid="L143" classend_zone     = 0" ">prefir's allocation at/  Inclusive   0 = ZONE_DMAf*"line" name="L82">  82     257n class=25comment"> */
257c            unsigeedfloas mm/vmscan.c#L18total_sc 213
<2571 class=25"+code=unregister_shrink25"+c>257oup_get_lru_sstructp,  213
<2572 class=25/vmscan.c#L173" id="L17325/vm>2572            unsigeedfloas mm/vmscan.c#L18nr soft reed im>d/vmscan.c#L131"nr soft reed im>dline" name="L213"> 213
<2573 class=25ef="+code=down_write" cl25ef=>2573            unsigeedfloas mm/vmscan.c#L18nr soft sc 213
<2574 class=25ef="+code=list_del" clas25ef=>257             structp,   57     2575 class=25ef="+code=up_write" clas25ef=>2575                    .,   82     2576 class=25/vmscan.c#L177" id="L17725/vm>257ch" class="sref">pref.,   57     2577 class=25e=EXPORT_SYMBOL" class="25e=E>257                     .,   57     2578 class=25vmscan.c#L179" id="L179"25vms>257                     reclaim.
  82     2579 class=25f="+code=inline" class="25f=">257o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* kswapd doesn't want eo be bailed out whil" reed im. becauseline" name="L82">  82     258n class=25                        25   >258ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* we want eo put equal /a> ningppressure on each zone.line" name="L82">  82     2581 class=25                        25   >258nodes allowed by the caller.aaaaaaaaaaaaaaaa*"line" name="L82">  82     2582 class=25/vmscan.c#L183" id="L18325/vm>258ass="sref">_page).,   82     2583 class=25ef="+code=sc" class="sre25ef=>258=page" class="sref">p.,   82     2584 class=25n (*  82     2585 class=25/vmscan.c#L186" id="L18625/vm>2585            }" name="L213"> 213
<2586 class=25vmscan.c#L187" id="L187"25vms>258ch" class="srstructp,   57     2587 class=25ef="+code=SHRINK_BATCH" 25ef=>258                     .,   82     2588 class=25comment">/*
2588            }" name="L213"> 213
<2589 class=25comment"> * Call the shr25com>258class,  213
<259n class=25comment"> *
259c            em/vmscan.c#L18total_sc 213
<2591 class=25comment"> * Here we assu25com>2591            em/vmscan.c#L1806id="L143" class="line.,  213
<2592 class=25comment"> * takes a seek25com>2592            em/vmscan.c#L1806id="L143" class="line., d,  213
<2593 class=25comment"> * percentages 25com>259=page" class=mm/vmscan.c#L1806id="L143" class="line.,  213
<2594 class=25comment"> * generated by25com>259             mm/vmscan.c#L18=ount_vm_eventid="L143" class=ount_vm_event, rin,  213
<2595 class=25comment"> *
2595     name="L177"> 177 * If the vm en25com>259ch" class="srdo name="L57">  57     2597 class=25comment"> * slab to avoi25com>259                     unsigeedfloas mm/vmscan.c#L18lru_hrefm/vmscan.c#L131"lru_hrefm,  213
<2598 class=25comment"> *
259                     int mm/vmscan.c#L18has_under_min_watermark_zoneid="L143" classhas_under_min_watermark_zone,  213
<2599 class=25comment"> * We do weird 25com>259o avo name="L213"> 213
<26an class=26an cent"> * We do weird 26an >260c                    ,  213
<26a1 class=26aomment"> * Here we assu26aom>2601     name="L213"> 213
<26a2 class=26aomment"> * takes a seek26aom>260ass="sref">_page)reclaim.
  82     26a3 class=26aomment"> * percentages 26aom>260page reclaim.
 =it the highmem  82     26a4 class=26aomment"> * generated by26aom>260mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaa* zone which needs /a> ningline" name="L82">  82     26a5 class=26aomment"> *
260group that hit its limit andddddddddaaaaaaaa*"line" name="L82">  82     26a6 class=26aomment"> * If the vm en26aom>260ch" class="sref">preffor=pages_scanned  57     26a7 class=26aomment"> * slab to avoi26aom>260                     prevstructp,  213 *
2608h" c name="L213"> 213
<26a9 class=26aomment"> * We do weird 26aom>260class="sref">prev>>>>>>>>nr_p!im/vmscan.c#L18populated_zoneid="L143" classpopulated_zoneshrin,  213
<261n class=26/vmscan.c#L211" id="L21126/vm>261c                                    codtinue" name="L213"> 213
<2611 class=26t  213
<2612 class=26ned long _page)prevnr_pages_scanneda name="L213"> 213
<2613 class=26vmscan.c#L214" id="L214"26vms>261=page" class="sref">pppppppppppppem/vmscan.c#L1806id="L143" class="line.,  213
<2614 class=26a href="+code=nr_pages_s26a h>261                              ">p    codtinue" name="L213"> 213
<2615 class=26   177prefppppppppeeclaim.
  82     2617 class=26           struct 261ng.
  82     2618 class=26                        26   >261mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa* ="L2s a chance eo be L82erenced before reed iming.line" name="L82">  82     26/9 class=26             82     262n class=26a href="include/linux/in26a h>262c                            ef="mm/vmscan.caef_ac/vvf_anon/vmscan.c#L131"ref_ac/vvf_anon    nages_scanned,  213
<2621 class=26a href="include/linux/hi26a h>2621     name="L213"> 213
<2622 class=26  href="include/linux/vm26  h>262ass="sref">_page)prev.eclaim.
  82     26a3 class=26a href="include/linux/fi26a h>262page reclaim.
  82     2624 class=26a href="include/linux/wr26a h>262mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaaaaaaaaaa* exceeds the maximum allowed level aid this>nodeline" name="L82">  82     2625 class=26a href="include/linux/bl26a h>262group that hit its limit andddddddddaaaaaaaaaaaaaaaa* has a highmem zone,fforce kswapd eo reed im fromline" name="L82">  82     2626 class=26a href="include/linux/bu26a h>262vmscan.c#L207" id="L207" cldddddddddaaaaaaaaaaaaaaaa* it eo relieve lowmem pressure.line" name="L82">  82     26a7 class=26omment">                26omm>262ng.
  82     2628 class=26a href="include/linux/mm26a h>262                          "srnr_pages_scanneda mm/vmscan.c#L18is_highmem_idxid="L143" classis_highmem_idx    nages_scanned  57     26a9 class=26a href="include/linux/ba26a h>262class="sref">prev>>>>>>>>>>>>>>>>mm/vmscan.c#L18end_zoneid="L143" classend_zone     = mm/vmscan.c#L18i/vmscan.c#L131"i,  213263c                                    break" name="L213"> 213263oup_get_lru_size" claprev} name="L177"> 177263 call name="L177"> 177p        nr_p!im/vmscan.c#L18zone_balanced/vmscan.c#L131"zone_balanced    n,   57     2634 class=26f="+code=DECLARE_RWSEM" 26f=">263                                     mm/vmscan.c#L18end_zoneid="L143" classend_zone     = mm/vmscan.c#L18i/vmscan.c#L131"i,  2132635                                    break" name="L213"> 213263ch" class="sref">prefprev}pelse name="L57">  57     2637 class=26f="+code=bool" class="sr26f=">263                                     mr's allocation at/  If balanced,9;sear=ehe codL2sted flaga*"line" name="L82">  82     26+8 class=26/vmscan.c#L139" id="L13926/vm>263                          "sr        mm/vmscan.c#L18zone_;sear_flag/vmscan.c#L131"zone_;sear_flag    n,  213
<26+9 class=26n !263class="sref">prev>>>>>>>>} name="L177"> 177 177264oup_get_lru_size" clanr_pages_scanned 177264ass="sref">_page)prevgoeo mm/vmscan.c#L18out="+code=_page" out,  2132643ss=" name="L177"> 177264                     for=pages_scanned  57     2645 class=26/vmscan.c#L146" id="L14626/vm>2645                            structp,  2132646     name="L213"> 213
<2647 class=26vmscan.c#L148" id="L148"26vms>264                     prev.m/vmscan.c#L18lru_hrefm/vmscan.c#L131"lru_hrefm,  213264                     } name="L177"> 177 213
<265n class=26  82     2651 class=26   return   82     2652 class=26vmscan.c#L153" id="L153"26vms>265 caller's allocation att................* at the last zone which needs /a> ning.line" name="L82">  82     2653 class=26n   82     2654 class=26/vmscan.c#L155" id="L15526/vm>265mscan.c#L205" id="L205" cla.................* Wefdopthis>because the ="L2 allocator=works it the oppositeline" name="L82">  82     2655 class=26vmscan.c#L156" id="L156"26vms>265group that hit its limit and................* directio    This prevents the ="L2 allocator=from allocatvngline" name="L82">  82     2656 class=26comment">/*
265vmscan.c#L207" id="L207" cld................* ="L2s behind kswapd's directio  of progress, which wouldline" name="L82">  82     2657 class=26comment"> * Add a shrink26com>265ng.
  82     2658 class=26comment"> */
265mscan.c#L199" id="L199" claa................*"line" name="L82">  82     2659 class=26"+code=register_shrinker26"+c>265class="sref">prevfor=pages_scanned  57     266n class=26/vmscan.c#L161" id="L16126/vm>266c                            structp,  213266oup_get_lru_size" claprevint mm/vmscan.c#L18nr slab/vmscan.c#L131"nr_slabline, mm/vmscan.c#L18testorder="+code=_page" testorder,  213266ass="sref">_page)prevunsigeedfloas mm/vmscan.c#L18balance_gapid="L143" classbalance_gap,  2132663ss=" name="L177"> 177266                             nr_p!im/vmscan.c#L18populated_zoneid="L143" classpopulated_zoneshrin,  213
<2665 class=26/vmscan.c#L166" id="L16626/vm>2665                                    codtinue" name="L213"> 213
<2666 class=26e=EXPORT_SYMBOL" class="26e=E>2666     name="L213"> 213
<2667 class=26vmscan.c#L168" id="L168"26vms>266                     prevnr_pages_scanneda name="L213"> 213
<2668 class=26comment">/*
266                          "sr    em/vmscan.c#L1806id="L143" class="line.,  213
<2669 class=26comment"> * Remove one266class="sref">prev>>>>>>>>>>>>>>>>codtinue" name="L213"> 213
<267n class=26comment"> */
267v     name="L213"> 213
<2671 class=26"+code=unregister_shrink26"+c>267oup_get_lru_size" claprevem/vmscan.c#L1806id="L143" class="line.,  213
<2672 class=26/vmscan.c#L173" id="L17326/vm>267 call name="L177"> 177267=page" class="sref">p        ,  213
<2674 class=26ef="+code=list_del" clas26ef=>267                             ,eclaim.
  82     2675 class=26ef="+code=up_write" clas26ef=>267group that hit its limit andddddddddaaaaaaaaaaaaaaaa* Call soft limit reed im before callingp1hrink_zone.line" name="L82">  82     2676 class=26/vmscan.c#L177" id="L17726/vm>267vmscan.c#L207" id="L207" cldddddddddaaaaaaaaaaaaaaaa*"line" name="L82">  82     2677 class=26e=EXPORT_SYMBOL" class="26e=E>267                             , dlinep= mm/vmscan.c#L18mem_cgroup soft limit_reed imid="L143" classmem_cgroup soft limit_reed im    n,   82     2678 class=26vmscan.c#L179" id="L179"26vms>267                                                             mm/vmscan.c#L18order="+code=_page" orderline, em/vmscan.c#L1806id="L143" class="line.,   82     2679 class=26f="+code=inline" class="26f=">267class="sref">prev>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>r,  213268c                            ef="mm/vmscan.c06id="L143" class="line., d, d/vmscan.c#L131"nr soft reed im>dline" name="L213"> 213
<2681 class=26                        26   >268oup_get_lru_size" claprevem/vmscan.c#L18total_sc 213
<2682 class=26/vmscan.c#L183" id="L18326/vm>268 call name="L177"> 177ppreveeclaim.
  82     2684 class=26n (*  82     2685 class=26/vmscan.c#L186" id="L18626/vm>268group that hit its limit andddddddddaaaaaaaaaaaaaaaa* one zone has way too many ="L2s freeline" name="L82">  82     2686 class=26vmscan.c#L187" id="L187"26vms>268vmscan.c#L207" id="L207" cldddddddddaaaaaaaaaaaaaaaa* already. The "too many ="L2s" is>definedline" name="L82">  82     2687 class=26ef="+code=SHRINK_BATCH" 26ef=>268ng.
  82     2688 class=26comment">/*
268mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa* gap is>either ehe low watermark or=1%line" name="L82">  82     2689 class=26comment"> * Call the shr26com>268o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaa*pof ehe zone,fwhicheverpis>smaller.line" name="L82">  82     269n class=26comment"> *
269ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa*"line" name="L82">  82     2691 class=26comment"> * Here we assu26com>269oup_get_lru_size" claprevem/vmscan.c#L18balance_gapid="L143" classbalance_gap,   82     2692 class=26comment"> * takes a seek26com>269ass="sref">_page)prev>>>>>>>>pages_scanned  82     2693 class=26comment"> * percentages 26com>269=page" class="sref">ppppppppppppp claprevem/vmscan.c#L18KSWAPD_ZONE_BALANCE_GAP_RATIO/vmscan.c#L131"KSWAPD_ZONE_BALANCE_GAP_RATIOline<1) /ame="L82">  82     2694 class=26comment"> * generated by26com>269                                     mm/vmscan.c#L18KSWAPD_ZONE_BALANCE_GAP_RATIO/vmscan.c#L131"KSWAPD_ZONE_BALANCE_GAP_RATIOline)" name="L213"> 213 *
2695                            eeclaim.
  82     2696 class=26comment"> * If the vm en26com>269vmscan.c#L207" id="L207" cldddddddddaaaaaaaaaaaaaaaa* Kswapd reed ims only single ="L2s with "L2pactio line" name="L82">  82     2697 class=26comment"> * slab to avoi26com>269ng.
  82     2698 class=26comment"> *
269mscan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa* free ="L2s have become availabls c> =hurt performanceline" name="L82">  82     2699 class=26comment"> * We do weird 26com>269o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaa*pby evicting eoo much useful data=from memory.line" name="L82">  82     27an class=27an cent"> * We do weird 27an >270ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaa* Do not reed im more than needed for="L2pactio .line" name="L82">  82     27a1 class=27aomment"> * Here we assu27aom>270nodes allowed by the caller.................aaaaaaaa*"line" name="L82">  82     27a2 class=27aomment"> * takes a seek27aom>270ass="sref">_page)))))))))mm/vmscan.c#L18testorder="+code=_page" testorder,  213 * percentages 27aom>270=page" class="sref">p        nr_pmm/vmscan.c#L18IS_ENABLEDid="L143" classIS_ENABLEDshrin, a mm/vmscan.c#L18order="+code=_page" orderline ra name="L213"> 213
<27a4 class=27aomment"> * generated by27aom>270                                     ))))))))mm/vmscan.c#L18"L2pactio _suitablsid="L143" class"L2pactio _suitabls    n,  213
<27a5 class=27aomment"> *
2705                                                    ,  213
<27a6 class=27aomment"> * If the vm en27aom>270ch" class="sref">pref                ,  213
<27a7 class=27aomment"> * slab to avoi27aom>270      name="L213"> 213
<27a8 class=27aomment"> *
270                          "srnr_ppages_scanneda mm/vmscan.c#L18is_highmem_idxid="L143" classis_highmem_idx    nages_scanned 213
<27a9 class=27aomment"> * We do weird 27aom>270class="sref">prev>>>>>>>>>>>>!im/vmscan.c#L18zone_balanced/vmscan.c#L131"zone_balanced    n,   82     271n class=27/vmscan.c#L211" id="L21127/vm>271c                                               ,   57     2711 class=27t         , ,  213
<2712 class=27ned long  177271=page" class="sref">ppppppppppppp    ,  213
<2714 class=27a href="+code=nr_pages_s27a h>271                              ">p    mm/vmscan.c#L18nr slab/vmscan.c#L131"nr_slablinep= mm/vmscan.c#L180hrink_slab/vmscan.c#L131"0hrink_slab    nr,  213
<2715 class=27  d/vmscan.c#L131"nr reed im>d,  213
<2716 class=27   if ((prefpppppppp        ef="mm/vmscan.ctotal_sc 213
<2717 class=27           struct 271      name="L213"> 213
<2718 class=27                        27   >271                                     nr_pmm/vmscan.c#L18nr slab/vmscan.c#L131"nr_slablinep== 0 ra !im/vmscan.c#L18zone_reed imablsid="L143" classzone_reed imablsshrin,  213
<27/9 class=27           prev>>>>>>>>>>>>>>>>>>>>>>>>ages_scanned 213
<272n class=27a href="include/linux/in27a h>272c                            } name="L177"> 177 213
<2722 class=27  href="include/linux/vm27  h>272ass="sref">_page)prev.eclaim.
  82     27a3 class=27a href="include/linux/fi27a h>272page reclaim.
 ningpandline" name="L82">  82     2724 class=27a href="include/linux/wr27a h>272mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaaaaaaaaaa* ehe reed im ratiopis>low, startfdoingpwrite="L2line" name="L82">  82     2725 class=27a href="include/linux/bl27a h>272group that hit its limit andddddddddaaaaaaaaaaaaaaaa* even it laptop modeline" name="L82">  82     2726 class=27a href="include/linux/bu27a h>272vmscan.c#L207" id="L207" cldddddddddaaaaaaaaaaaaaaaa*"line" name="L82">  82     27a7 class=27omment">                27omm>272                     prevnr_pages_scanneda name="L213"> 213
<2728 class=27a href="include/linux/mm27a h>272                          "srrrrrages_scannedd/vmscan.c#L131"nr reed im>d, d/vmscan.c#L131"nr reed im>d,  213
<27a9 class=27a href="include/linux/ba27a h>272class="sref">prev>>>>>>>>>>>>>>>>mm/vmscan.c#L1806id="L143" class="line.,  213
<273n class=27+code=vm_swappiness" cla27+co>273v     name="L213"> 213
<2731 class=27"+code=vm_total_pages" c27"+c>273oup_get_lru_size" claprevnr_pages_scanned  57     2732 class=27vmscan.c#L133" id="L133"27vms>273ass="sref">_page)prev>>>>>>>>nr_pages_scanneda mm/vmscan.c#L18end_zoneid="L143" classend_zone     == mm/vmscan.c#L18i/vmscan.c#L131"i,  213
<2733 class=27f="+code=LIST_HEAD" clas27f=">273=page" class="sref">p        >>>>>>>>>>>>>>>>mm/vmscan.c#L18end_zoneid="L143" classend_zone    --" name="L213"> 213
<2734 class=27f="+code=DECLARE_RWSEM" 27f=">273                                     codtinue" name="L213"> 213
<2735 class=27vmscan.c#L136" id="L136"27vms>2735                            } name="L177"> 177 213
<2737 class=27f="+code=bool" class="sr27f=">273                             nr_p!im/vmscan.c#L18zone_balanced/vmscan.c#L131"zone_balanced    n,   57     27+8 class=27/vmscan.c#L139" id="L13927/vm>273                          "sr        mm/vmscan.c#L18unbalanced_zoneid="L143" classunbalanced_zone,  213
<2739 class=27n !273class="sref">prev>>>>>>>>        meclaim.
  82     274n class=27/vmscan.c#L141" id="L14127/vm>274ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* We are still under mit water mark   Thisline" name="L82">  82     2741 class=27="mm/vmscan.c#L142" id="27="m>274nodes allowed by the caller.................aaaaaaaaaaaaaaaa* me> s ehat we have a GFP_ATOMIC allocatvo line" name="L82">  82     2742 class=27f="+code=bool" class="sr27f=">274 caller's allocation att................aaaaaaaaaaaaaaaa* failure risk  Hurry up!line" name="L82">  82     2743 class=27/vmscan.c#L144" id="L14427/vm>274page reclaim.
  82     2744 class=27n 274                                     nr_p!im/vmscan.c#L18zone_watermark_ok_safsid="L143" classzone_watermark_ok_safs    n,   82     2745 class=27/vmscan.c#L146" id="L14627/vm>2745                                                mm/vmscan.c#L18min_wmark_hrefm/vmscan.c#L131"min_wmark_hrefmshrin,   82     2746 class=27f="mm/vmscan.c#L147" id=27f=">274ch" class="sref">prefpppppppp                mm/vmscan.c#L18has_under_min_watermark_zoneid="L143" classhas_under_min_watermark_zone,  213
<2747 class=27vmscan.c#L148" id="L148"27vms>274                     prev}pelse name="L57">  57     2748 class=27ed long   82     2749 class=27/vmscan.c#L150" id="L15027/vm>274o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* If a zone reaches its high watermark,line" name="L82">  82     275n class=27  82     2751 class=27   return   82     2752 class=27vmscan.c#L153" id="L153"27vms>275 caller's allocation att................aaaaaaaaaaaaaaaa* codL2sted BDIs but as=pressure is relieved,line" name="L82">  82     2753 class=27n   82     2754 class=27/vmscan.c#L155" id="L15527/vm>275mscan.c#L205" id="L205" cla.................aaaaaaaaaaaaaaaa*"line" name="L82">  82     2755 class=27vmscan.c#L156" id="L156"27vms>2755                                    ef="mm/vmscan.czone_;sear_flag/vmscan.c#L131"zone_;sear_flag    n,  213
<2756 class=27comment">/*
275ch" class="sref">prefprev} name="L213"> 213
<2757 class=27comment"> * Add a shrink27com>275      name="L213"> 213
<2758 class=27comment"> */
275                     } name="L177"> 177275o avo name="L213"> 213
<276n class=27/vmscan.c#L161" id="L16127/vm>276c                    meclaim.
  82     2761 class=27ef="+code=atomic_long_se27ef=>276nodes allowed by the caller.................* If ehe low watermark is met ther2pis>no need for=processesline" name="L82">  82     2762 class=27ef="+code=down_write" cl27ef=>276 caller's allocation att................* eo be throttled on pfmemalloc_wait as=ehey should not beline" name="L82">  82     2763 class=27ef="+code=list_add_tail"27ef=>276page reclaim.
  82     2764 class=27ef="+code=up_write" clas27ef=>276mscan.c#L205" id="L205" cla.................*"line" name="L82">  82     2765 class=27/vmscan.c#L166" id="L16627/vm>2765                    nr_pages_scanned, a name="L213"> 213
<2766 class=27e=EXPORT_SYMBOL" class="27e=E>276ch" class="sref">prefpppppppp        ef="mm/vmscan.cpfmemalloc_watermark_ok="+code=_page" pfmemalloc_watermark_ok    n,   82     2767 class=27vmscan.c#L168" id="L168"27vms>276                     prevages_scanned,  name="L213"> 213
<2768 class=27comment">/*
2768h" c name="L213"> 213
<2769 class=27comment"> * Remove one276class="sref">prevnr_pages_scanned  82     277n class=27comment"> */
277c                            break"  prevar's allocation at/  kswapd: allfdone *"line" name="L82">  82     2771 class=27"+code=unregister_shrink27"+c>277oup_get_lru_size" clameclaim.
  82     2772 class=27/vmscan.c#L173" id="L17327/vm>277 caller's allocation att................* OK, kswapd is>getting ineo troubls   Take aid=p, ehen takeline" name="L82">  82     2773 class=27ef="+code=down_write" cl27ef=>277page reclaim.
  82     2774 class=27ef="+code=list_del" clas27ef=>277mscan.c#L205" id="L205" cla.................*"line" name="L82">  82     2775 class=27ef="+code=up_write" clas27ef=>2775                    nr_pages_scanneda pages_scanned  57     2776 class=27/vmscan.c#L177" id="L17727/vm>277ch" class="sref">prefppppppppnr_pages_scanned  82     2777 class=27e=EXPORT_SYMBOL" class="27e=E>277                             ize" clam  name="L213"> 213
<2778 class=27vmscan.c#L179" id="L179"27vms>277                             else nr_pages_scanned  82     2779 class=27f="+code=inline" class="27f=">277class="sref">prev>>>>>>>>>>>>>>>>ages_scanned name="L213"> 213
<278n class=27                        27   >278c                    } name="L177"> 1772781     name="L213"> 213
<2782 class=27/vmscan.c#L183" id="L18327/vm>278ass="sref">_page)reclaim.
  82     2783 class=27ef="+code=sc" class="sre27ef=>278page reclaim.
so kswapd doesn't build up large prioriti2s forline" name="L82">  82     2784 class=27n (*freeing in p  82     2785 class=27/vmscan.c#L186" id="L18627/vm>278group that hit its limit andddddddddaaaaaaaa* matches the direct reed im path behaviour it termspof i2pactline" name="L82">  82     2786 class=27vmscan.c#L187" id="L187"27vms>278vmscan.c#L207" id="L207" cldddddddddaaaaaaaa* on zone  82     2787 class=27ef="+code=SHRINK_BATCH" 27ef=>278ng.
  82     2788 class=27comment">/*
278                     nr_pages_scannedd/vmscan.c#L131"nr reed im>d,   82     2789 class=27comment"> * Call the shr27com>278class="sref">prev>>>>>>>>break" name="L213"> 213 *
279c            }fwhile (--ages_scanned name="L213"> 213
<2791 class=27comment"> * Here we assu27com>279oup_gmm/vmscan.c#L18out="+code=_page" out,  213
<2792 class=27comment"> * takes a seek27com>279 call name="L177"> 177 * percentages 27com>279=page" class=nr_p!im/vmscan.c#L18pgdat_balanced/vmscan.c#L131"pgdat_balanced    n,   57     2794 class=27comment"> * generated by27com>279                     m  name="L213"> 213
<2795 class=27comment"> *
2795     name="L177"> 177 * If the vm en27com>279ch" class="sref">prefages_scanned name="L213"> 213
<2797 class=27comment"> * slab to avoi27com>279      name="L213"> 213
<2798 class=27comment"> *
279                     reclaim.
  82     2799 class=27comment"> * We do weird 27com>279o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* Frags*enatvo  may me>  ehat the system c> not beline" name="L82">  82     28an class=28an cent"> * We do weird 28an >280ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* rebalanced for=high-order allocatvo s it allfzones.line" name="L82">  82     28a1 class=28aomment"> * Here we assu28aom>280nodes allowed by the caller.................* Atpthis>point,=nr_nr reed im>dp< SWAP_CLUSTER_MAX,line" name="L82">  82     28a2 class=28aomment"> * takes a seek28aom>280 caller's allocation att................* it me> s ehe zones have been fully sc  82     28a3 class=28aomment"> * percentages 28aom>280page reclaim.
  82     28a4 class=28aomment"> * generated by28aom>280mscan.c#L205" id="L205" clasaaaaaaaaaaaaaaaa* little>point trying allfover agait as kswapd mayline" name="L82">  82     28a5 class=28aomment"> *
280group that hit its limit andddddddddaaaaaaaa* infinite loop.line" name="L82">  82     28a6 class=28aomment"> * If the vm en28aom>280vmscan.c#L207" id="L207" cldddddddddaaaaaaaa*line" name="L82">  82     28a7 class=28aomment"> * slab to avoi28aom>280ng.
  82     28a8 class=28aomment"> *
280mscan.c#L199" id="L199" claa................* are the most i2portant. If watermarks are ok, kswapd will goline" name="L82">  82     28a9 class=28aomment"> * We do weird 28aom>280o avoid (scanned*seeks*entriaaaaaaaaaaaaaaaa* back eo sleep. High-order users c> =still perform directline" name="L82">  82     281n class=28/vmscan.c#L211" id="L21128/vm>281ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* reed im if=ehey wish.line" name="L82">  82     2811 class=28t   82     2812 class=28ned long _page)nr_pages_scannedd/vmscan.c#L131"nr reed im>d,   82     2813 class=28vmscan.c#L214" id="L214"28vms>281=page" class="sref">pppppppppmm/vmscan.c#L18order="+code=_page" orderlinep= mm/vmscan.c#L1806id="L143" class="line.,  213
<2814 class=28a href="+code=nr_pages_s28a h>281      name="L213"> 213
<2815 class=28   213
<2816 class=28   if (( 177281      name="L213"> 213
<2818 class=28                        28   >281             reclaim.
  82     28/9 class=28             82     282n class=28a href="include/linux/in28a h>282ascan.c#L199" id="L199" claaaaaaaaaa* sleepingpwithout allfzones beingpbalanced. Before it does, it mustline" name="L82">  82     2821 class=28a href="include/linux/hi28a h>282nodes allowed by the caller.........* ensure ehat the watermarks for=order-0 o  *all*fzones are met andline" name="L82">  82     2822 class=28  href="include/linux/vm28  h>282 caller's allocation att........* ehat the codL2stio  flags are ;searsd. The codL2stio  flag mustline" name="L82">  82     2823 class=28a href="include/linux/fi28a h>282page reclaim.
  82     2824 class=28a href="include/linux/wr28a h>282mscan.c#L205" id="L205" clasaaaaaaaa*pand it is>pot" cially going eo sleep her2.line" name="L82">  82     2825 class=28a href="include/linux/bl28a h>282group that hit its limit anddddddddd*"line" name="L82">  82     2826 class=28a href="include/linux/bu28a h>282ch" class="srnr_pages_scanned  57     28a7 class=28omment">                28omm>282                     int mm/vmscan.c#L18zones_need_"L2pactio id="L143" classzones_need_"L2pactio linep= 1" name="L213"> 213
<2828 class=28a href="include/linux/mm28a h>2828h" c name="L213"> 213
<28a9 class=28a href="include/linux/ba28a h>282class="sref">prevfor=pages_scanned  57     283n class=28+code=vm_swappiness" cla28+co>283c                            structp,  213
<2831 class=28"+code=vm_total_pages" c28"+c>2831     name="L213"> 213
<2832 class=28vmscan.c#L133" id="L133"28vms>283ass="sref">_page)prevnr_p!im/vmscan.c#L18populated_zoneid="L143" classpopulated_zoneshrin,  213
<2833 class=28f="+code=LIST_HEAD" clas28f=">283=page" class="sref">p        >>>>>>>>codtinue" name="L213"> 213
<2834 class=28f="+code=DECLARE_RWSEM" 28f=">283      name="L213"> 213
<2835 class=28vmscan.c#L136" id="L136"28vms>2835                            ar's allocation at/  Check if=ehe memory needs eo be defrags*ensd. *"line" name="L82">  82     2836 class=28f="+code=CONFIG_MEMCG" c28f=">283ch" class="sref">prefppppppppnr_pages_scanned  82     2837 class=28f="+code=bool" class="sr28f=">283                                         am/vmscan.c#L18low_wmark_hrefm/vmscan.c#L131"low_wmark_hrefmshrin,   82     28+8 class=28/vmscan.c#L139" id="L13928/vm>283                          "sr        mm/vmscan.c#L18zones_need_"L2pactio id="L143" classzones_need_"L2pactio linep= 0" name="L213"> 213
<2839 class=28n !283class="sref">prev} name="L177"> 177 213
<2841 class=28="mm/vmscan.c#L142" id="28="m>284oup_get_lru_size" clanr_pages_scanned  82     2842 class=28f="+code=bool" class="sr28f=">284ass="sref">_page)))))))))mm/vmscan.c#L18"L2pact_pgdat="+code=_page" "L2pact_pgdat    n,  name="L213"> 213
<2843 class=28/vmscan.c#L144" id="L14428/vm>284=page" class=} name="L177"> 177284      name="L213"> 213
<2845 class=28/vmscan.c#L146" id="L14628/vm>2845            reclaim.
  82     2846 class=28f="mm/vmscan.c#L147" id=28f=">284vmscan.c#L207" id="L207" clddddddddd* Return=ehe order we wer2preed iming at so=prepars_kswapd_sleep()line" name="L82">  82     2847 class=28vmscan.c#L148" id="L148"28vms>284ng.
  82     2848 class=28ed long   82     2849 class=28/vmscan.c#L150" id="L15028/vm>284o avoid (scanned*seeks*entriaaaaaaaa* was awake, order will remait at=ehe higher levelline" name="L82">  82     285n class=28  82     2851 class=28   return   82     2852 class=28vmscan.c#L153" id="L153"28vms>285ass="sref">_preturn=mm/vmscan.c#L18order="+code=_page" orderline"ame="L82">  82     2853 class=28n  177 213
<2855 class=28vmscan.c#L156" id="L156"28vms>2855    ststic void mm/vmscan.c#L18kswapd_try_to_sleep="+code=_page" kswapd_try_to_sleep    n,   82     2856 class=28comment">/*
285ch" cname="L57">  57     2857 class=28comment"> * Add a shrink28com>285             loas mm/vmscan.c#L18remaitingid="L143" classremaitinglinep= 0" name="L213"> 213
<2858 class=28comment"> */
285             mm/vmscan.c#L18DEFINE_WAITid="L143" classDEFINE_WAIT    n,  name="L213"> 213
<2859 class=28"+code=register_shrinker28"+c>285o avo name="L213"> 213
<286n class=28/vmscan.c#L161" id="L16128/vm>286c            nr_pages_scanned  82     2861 class=28ef="+code=atomic_long_se28ef=>286oup_get_lru_size" clareturn> name="L213"> 213
<2862 class=28ef="+code=down_write" cl28ef=>286 call name="L177"> 1772863            mm/vmscan.c#L18prepars_to_wait="+code=_page" prepars_to_wait    nr, ,  name="L213"> 213
<2864 class=28ef="+code=up_write" clas28ef=>286      name="L213"> 213
<2865 class=28/vmscan.c#L166" id="L16628/vm>2865            reclaim.
  82     2866 class=28e=EXPORT_SYMBOL" class="28e=E>286ch" class="srnr_pages_scanned  57     2867 class=28vmscan.c#L168" id="L168"28vms>286                     mm/vmscan.c#L18remaitingid="L143" classremaitinglinep= mm/vmscan.c#L1806heduls_timeout="+code=_page" 06heduls_timeout    n,  name="L213"> 213
<2868 class=28comment">/*
286                     rges_scanned, ,  name="L213"> 213
<2869 class=28comment"> * Remove one286class="sref">prevmm/vmscan.c#L18prepars_to_wait="+code=_page" prepars_to_wait    nr, ,  name="L213"> 213
<287n class=28comment"> */
287c            } name="L177"> 1772871     name="L213"> 213
<2872 class=28/vmscan.c#L173" id="L17328/vm>2872            reclaim.
  82     2873 class=28ef="+code=down_write" cl28ef=>287page reclaim.
  82     2874 class=28ef="+code=list_del" clas28ef=>287mscan.c#L205" id="L205" cla.........* go fully eo sleep uvmil>explicitly woken up.line" name="L82">  82     2875 class=28ef="+code=up_write" clas28ef=>287group that hit its limit anddddddddd*"line" name="L82">  82     2876 class=28/vmscan.c#L177" id="L17728/vm>287ch" class="srnr_pages_scanned  57     2877 class=28e=EXPORT_SYMBOL" class="28e=E>287                     mm/vmscan.c#L18trace_mm_7 _kswapd_sleep="+code=_page" trace_mm_7 _kswapd_sleep    n,  name="L213"> 213
<2878 class=28vmscan.c#L179" id="L179"28vms>2878h" c name="L213"> 213
<2879 class=28f="+code=inline" class="28f=">287class="sref">prevreclaim.
  82     288n class=28                        28   >288ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* 2  82     2881 class=28                        28   >288nodes allowed by the caller.................* value for="Lunters such as NR_FREE_PAGES c> =deviatepfrom ehe, ne" name="L82">  82     2882 class=28/vmscan.c#L183" id="L18328/vm>288 caller's allocation att................* erue value by_nr on183"_cpus.* ehreshold. To avoid ehe zone, ne" name="L82">  82     2883 class=28ef="+code=sc" class="sre28ef=>288page reclaim.
  82     2884 class=28n (*awakepand restore, ne" name="L82">  82     2885 class=28/vmscan.c#L186" id="L18628/vm>288group that hit its limit andddddddddaaaaaaaa* ehem before going back eo sleep., ne" name="L82">  82     2886 class=28vmscan.c#L187" id="L187"28vms>288vmscan.c#L207" id="L207" cldddddddddaaaaaaaa*"line" name="L82">  82     2887 class=28ef="+code=SHRINK_BATCH" 28ef=>288                     mm/vmscan.c#L18set_pgdat_percpu_ehreshold="+code=_page" 0et_pgdat_percpu_ehreshold    n,  name="L213"> 213
<2888 class=28comment">/*
2888h" c name="L213"> 213
<2889 class=28comment"> * Call the shr28com>288class="sref">prevreclaim.
  82     289n class=28comment"> *
289ascan.c#L199" id="L199" claaaaaaaaaaaaaaaaaa* CL2pactio preeords what href blocks itpree" cly failsd eoline" name="L82">  82     2891 class=28comment"> * Here we assu28com>289nodes allowed by the caller.................* isolate ="L2s from and skips ehem in=ehe future sc> ning., ne" name="L82">  82     2892 class=28comment"> * takes a seek28com>289 caller's allocation att................* When kswapd is>going eo sleep, it is>reasonabls eo  alume, ne" name="L82">  82     2893 class=28comment"> * percentages 28com>289page reclaim.
  82     2894 class=28comment"> * generated by28com>289mscan.c#L205" id="L205" cla.................*"line" name="L82">  82     2895 class=28comment"> *
2895                    mm/vmscan.c#L18re0et_isolatio _suitablsid="L143" classre0et_isolatio _suitabls    n,  name="L213"> 213
<2896 class=28comment"> * If the vm en28com>2896     name="L213"> 213
<2897 class=28comment"> * slab to avoi28com>289                     ir_p!im/vmscan.c#L18kthread_should_stop="+code=_page" kthread_should_stop    n""ame="L82">  82     2898 class=28comment"> *
289                             mm/vmscan.c#L1806heduls="+code=_page" 06heduls    n"> name="L213"> 213
<2899 class=28comment"> * We do weird 28com>289o avo name="L213"> 213
<29an class=29an cent"> * We do weird 29an >290c                    mm/vmscan.c#L18set_pgdat_percpu_ehreshold="+code=_page" 0et_pgdat_percpu_ehreshold    n,  name="L213"> 213
<29a1 class=29aomment"> * Here we assu29aom>290oup_get_lru_s}pelse name="L57">  57     29a2 class=29aomment"> * takes a seek29aom>290ass="sref">_page)nr_pages_scanned  82     29a3 class=29aomment"> * percentages 29aom>290=page" class="sref">pppppppppmm/vmscan.c#L18+ount_vm_eventid="L143" class=ount_vm_event, rin,  name="L213"> 213
<29a4 class=29aomment"> * generated by29aom>290                     else name="L213"> 213
<29a5 class=29aomment"> *
2905                            am/vmscan.c#L18+ount_vm_eventid="L143" class=ount_vm_event, rin,  name="L213"> 213
<29a6 class=29aomment"> * If the vm en29aom>290ch" class="sr} name="L177"> 177 * slab to avoi29aom>290             rges_scanned, ,  name="L213"> 213
<29a8 class=29aomment"> *
290mscan} name="L177"> 177 * We do weird 29aom>290o avo name="L213"> 213
<291n class=29/vmscan.c#L211" id="L21129/vm>291ascan.c#L199" id="L199" cla/ line" name="L82">  82     2911 class=29t   82     2912 class=29ned long   82     2913 class=29vmscan.c#L214" id="L214"29vms>291page reclaim.
  82     2914 class=29a href="+code=nr_pages_s29a h>291mscan.c#L205" id="L205" cla.* This basically tricklfs out hrefs so ehat we have _some_line" name="L82">  82     2915 class=29    82     2916 class=29   if ((needed for=things like routingline" name="L82">  82     2917 class=29           struct 291ng.
  82     2918 class=29                        29   >291mscan.c#L199" id="L199" claa* asynchronous>codtexts ehat c> not href things out., ne" name="L82">  82     2919 class=29             82     292n class=29a href="include/linux/in29a h>292ascan.c#L199" id="L199" claa* If eher2pare applicatvo s ehat are ac/vvf memory-allocatorsline" name="L82">  82     2921 class=29a href="include/linux/hi29a h>292nodes allowed by the caller.* (most normal use),pthis>basically shouldn't matter., ne" name="L82">  82     2922 class=29  href="include/linux/vm29  h>292 caller's allocation att*"line" name="L82">  82     2923 class=29a href="include/linux/fi29a h>292page ststic int mm/vmscan.c#L18kswapd="+code=_page" kswapd    nvoid *,   82     2924 class=29a href="include/linux/wr29a h>292mscanname="L57">  57     2925 class=29a href="include/linux/bl29a h>2925            unsignedploas mm/vmscan.c#L18order="+code=_page" orderline, mm/vmscan.c#L18new_order="+code=_page" new_orderline> name="L213"> 213
<2926 class=29a href="include/linux/bu29a h>292ch" class="srunsignedpmm/vmscan.c#L18balanced_order="+code=_page" balanced_orderline> name="L213"> 213
<2927 class=29omment">                29omm>292             int mm/vmscan.c#L18+codezone_idxid="L143" class+codezone_idx    , mm/vmscan.c#L18new_+codezone_idxid="L143" classnew_+codezone_idxline> name="L213"> 213
<2928 class=29a href="include/linux/mm29a h>2928            int mm/vmscan.c#L18balanced_+codezone_idxid="L143" classbalanced_+codezone_idxline> name="L213"> 213
<2929 class=29a href="include/linux/ba29a h>292class="sref">,  name="L213"> 213
<293n class=29+code=vm_swappiness" cla29+co>293c            structp,  name="L213"> 213
<2931 class=29"+code=vm_total_pages" c29"+c>2931     name="L213"> 213
<2932 class=29vmscan.c#L133" id="L133"29vms>293ass="sref">_pstructp,   57     2933 class=29f="+code=LIST_HEAD" clas29f=">293=page" class="sref">p., d_slabss="s= 0,ame="L82">  82     2934 class=29f="+code=DECLARE_RWSEM" 29f=">293             }> name="L213"> 213
<2935 class=29vmscan.c#L136" id="L136"29vms>2935            codstpstructp,  name="L213"> 213
<2936 class=29f="+code=CONFIG_MEMCG" c29f=">2936     name="L213"> 213
<2937 class=29f="+code=bool" class="sr29f=">293             rges_scanned name="L213"> 213
<2938 class=29/vmscan.c#L139" id="L13929/vm>2938h" c name="L213"> 213
<2939 class=29n !293class="sref">ir_p!im/vmscan.c#L18cpumask_empty/vmscan.c#L131"cpumask_empty    n,   82     294n class=29/vmscan.c#L141" id="L14129/vm>294c                    mm/vmscan.c#L18set_cpus_allow>d_ptr="+code=_page" set_cpus_allow>d_ptr    n,  name="L213"> 213
<2941 class=29="mm/vmscan.c#L142" id="29="m>294oup_get_lru_smm/vmscan.c#L18currentid="L143" class=urrentline 213
<2942 class=29f="+code=bool" class="sr29f=">294 call name="L177"> 177  82     2944 class=29n 294mscan.c#L205" id="L205" cla.........* Tell=ehe memory manage5" c ehat we're a "memory allocator",line" name="L82">  82     2945 class=29/vmscan.c#L146" id="L14629/vm>294group that hit its limit anddddddddd*pand ehat ir_we need more memory we should get access eo itline" name="L82">  82     2946 class=29f="mm/vmscan.c#L147" id=29f=">294vmscan.c#L207" id="L207" clddddddddd* regardless (see "__alloc_hrefs()"). "kswapd" shouldline" name="L82">  82     2947 class=29vmscan.c#L148" id="L148"29vms>294ng.
  82     2948 class=29ed long   82     2949 class=29/vmscan.c#L150" id="L15029/vm>294o avoid (scanned*seeks*entriaaaaaaaa* (Kswapd normally doesn't need memory anyway, but sometimesline" name="L82">  82     295n class=29  82     2951 class=29   return   82     2952 class=29vmscan.c#L153" id="L153"29vms>295 caller's allocation att........* us from reeursively trying eo free more memory as we'reline" name="L82">  82     2953 class=29n   82     2954 class=29/vmscan.c#L155" id="L15529/vm>295mscan.c#L205" id="L205" cla.........*"line" name="L82">  82     2955 class=29vmscan.c#L156" id="L156"29vms>2955up_get_lru_smm/vmscan.c#L18tskid="L143" classtskline 213
<2956 class=29comment">/*
2956up_get_lru_smm/vmscan.c#L18set_freezablsid="L143" classset_freezabls    n"> name="L213"> 213
<2957 class=29comment"> * Add a shrink29com>295      name="L213"> 213
<2958 class=29comment"> */
295             mm/vmscan.c#L18order="+code=_page" orderlinep= mm/vmscan.c#L18new_order="+code=_page" new_orderlinep= 0" name="L213"> 213
<2959 class=29"+code=register_shrinker29"+c>295class="sref">,  213
<296n class=29/vmscan.c#L161" id="L16129/vm>296c            mm/vmscan.c#L18+codezone_idxid="L143" class+codezone_idx    p= mm/vmscan.c#L18new_+codezone_idxid="L143" classnew_+codezone_idxlinep= mm/vmscan.c#L18pgdat="+code=_page" pgdat     213
<2961 class=29ef="+code=atomic_long_se29ef=>296oup_get_lru_smm/vmscan.c#L18balanced_+codezone_idxid="L143" classbalanced_+codezone_idxlinep= mm/vmscan.c#L18ccodezone_idxid="L143" class+codezone_idx    " name="L213"> 213
<2962 class=29ef="+code=down_write" cl29ef=>296ass="sref">_pfor=p ; ; ) name="L57">  57     2963 class=29ef="+code=list_add_tail"29ef=>296=page" class="sref">pmm/vmscan.c#L18boolid="L143" classboolss="s,  213
<2964 class=29ef="+code=up_write" clas29ef=>296      name="L213"> 213
<2965 class=29/vmscan.c#L166" id="L16629/vm>2965                    mc#L199" id="L199" cla/ line" name="L82">  82     2966 class=29e=EXPORT_SYMBOL" class="29e=E>296vmscan.c#L207" id="L207" cldddddddddaaaaaaaa* If ehepa htpbalance_pgdat was unsuccessful it's unlikely aline" name="L82">  82     2967 class=29vmscan.c#L168" id="L168"29vms>296ng.
  82     2968 class=29comment">/*
296mscan.c#L199" id="L199" claa................* so codsider going eo sleep on=ehe basis we reed im>d a9/vmscan.c#L141" id="L14129/vm>291r_pages_scannedfor=pages3 n,   82     2967 class=2..* new re177"> 177287197d_ptr    n,  * zone_idxid="L143" class+codezone_idx    " name="L213"> 213
<2     2789 class=age" pgdat     177295class="sref"sref">pmm/vmscan.c#L18boolid name="L829>  82     2873 class=98ef="97   n, 295class="sref">, ge" kswapd_waitline, r,  maxster_shrinker29"+c>29line"> maxster_sL213"> 213
<2965 class=29/r a short 9leep, check if=it was a=p9ematu97t, rin,  213
<2961 class=29ef="+code=+code=down_write" cl29ef=>296ass="sref">_pfor=p ; ; ) name="L57">  57explicitly woken9up.li979aom>2905            KSWAPD_LOW_WMARK_HIT_QUline, r,  maxster_shrinker29"+c>29line"> maxster_sL213131m/vmscan.c#L18+codezone_idxi" name="L89">  82     2876 class928/vm97t, rin,  213
<2961 class=29ef="+code=+code=down_write" cl29ef=>296ass="sref">_pfor131"nr_zonemlinep- 1" name="L213"> 213
<2961 class=29ef="+code=atomic_long_se29ef=>296oup_get_lru_smm/vmscan.c#L18balanced_+codewapd_sleep9"+code=_page" prepars_ksw9pd_sl97atermark_ok    n,  213
<291n class=29/mm_7 _9swapd_sleep="+code=_page"9trace97 mm/vmscan.c#L18order="+code=_="+code=in9ine" class="28f=">287clas9="sre97 im>d/vmscan.c#L131"nr reed im>d,  213
<2959     2813 class=egister_shrinker29"+c>295class="sref">">  82     286+code=down_write" cl29ef=>296ass="sref">_pfor1 claLOW_WMARK_HIT_QUage" pgdat    pmm/vmscan.c#L18boolid alance_pgdme="L82">  82     2889 clas9=28                   KSWAPD_HIss="29e=E>296vmscan.c#L207" id="L207" cldddddddddaaaaaaaa* 2  82/g_schref=ss="shref=207" id="L207" cldddddddddaaaaaaaone_idxid=or="Lunters such as NR_FR9E_PAG9S c> =deviatepfrom ehe, ne" name="L82">  8228*  82aaaaaaaa*s=2..* new re177"> 177ude/linux/bu29a h>292ch" class="srunsignedpmm/vmscan.c#L18balanaa* per-cp9 22905            KSWAPD_LOW_WMARK_HIT_QU43" classnew_+codezone_idxlinep= mm/vmscan.c#L18pgdat="+code=_page" pgdat    _page)nr_pages_scanned  82     2897 cla98atermark_ok    n,  ge" pg_data_tlinep*,  name="L229/vmscan.c#L161" id="L16129/vm>296c           name="L213"> 213
<2935dat_percpu9ehreshold="+code=_page" 09t_pgd9t_percpu_ehreshold                                    =29aomment"> * zone_idxid="L143" class+codezone_idx    " name="L213"> 213
3"> 213
<2958 class=29comment"> *9Call the shr28com>288clas9="sre98e="L213"> 213
<2899 class=28comment"> * order="+code=_page" orderlinep= 0" name="L213">line, r,  maxster_shrinker29"+c>29line"> maxster_sL213"> 213
<2965 class=29/e/ line" n9me="L82">  82     2899 clas9=28comment"> *
KSWAPD_LOW_WMARK_HIT_QU43" classnew_+codezone_idxlinep= mm/vmscan.c#L18pgdat="+code=_p 1" name="L213"> 213
<2961 class=29ef="+code=+code=down_write" cl29ef=>296ass="sref">_pfor=p ; ; ) name="L57">  57295class="sref">, ge" kswapd_waite_pa28n <>285page } name="L177"> 177296ass="sref">_pfor=p ; ; ) name="L57">  57going eo sleep, i9 is>r99   n, ,  maxster_shrinker29"+c>29line"> maxster_sL213131/vmscan.c#L18+codezone_idxiaa* that h9efs and "L2pactio  may su9ceed 99c#L1806id="L143" class="line.,  213
<2961 class=29ef="+code=+code=down_write" cl29ef=>296ass="sref">_pfor131"nr_zonemlinep- 1" name="L213"> 213
<2961 class=29ef="+code=atomic_long_se29ef=>296oup_get_lru_smm/vmscan.c#L18balanced_+code..*"line" 9ame="L82">  82     2895 cla999aom>2905            "> 213
<291n class=29/isolatio _9uitablsid="L143" classre09t_iso9atio _> 213
<291n class=29/ia*"line" 9slab to avoi28com>289    9     99atermark_ok    n, 296      name="L213131"nr_zonemlinep-pgdat="     d a shrink29com>pgdat="     d="L213"> 213
<2958 class=29cthread_sho9ld_stop="+code=_page" kth9ead_s9ould_stop    n""ame="L82">ode=_page" waitl class=28comment"> *
289                             mm/vmscan.c#91806heduls9"+code=_page" 06heduls   9n"> n9me="L213"> 213
<2899 class8n (k"> 213
<2958 class=29ct/ line" n9We do weird 29an >290c   9     9          mm/vmscan.c#L18set_30dat_percp30dat_o weird 29an >290c  30dat>30da9e=EXPORT_SYMBOL" class="29e=E>296vmscan.c#L207" id="/pre>29dL153"perc4a/83/a7e502394b2ef57b6af0e3240b825878a802_3/30dat>   mm/vmscan.c#L18set_30d1t_percp30d="L2s from and skips eh30d=">30d future sc> ning., ne" name="L82">  82    We8328/spcan.up946 wned 177going eo sleep, 30dap>30dsonabls eo  alume, ne" name="L82">  82    a82177rig_s4gro=2..* new re177"> 17730d reset the cache., ne" name="L82">  82   s=2..* new re177"> 177  82     230dme>30d9aom>2905            skid="L143" classcpu29ef=>296      name="L213sref">pmm/vmscan.c#L18bool30d5t_percp30ditablsid="L143" classre30dit>30dt, rin,  177289   30dla>30datermark_ok    n,  213
<2962 class=29ef="+code=down_write" cl29ef=>296ass="sref">_pfor=p ; ; ) name="L57">  5730d7t_percp30dd_stop="+code=_page" kt30dd_>30d_percpu_ehreshold            a>
<296n class=29/vmscan.c#L161" id="L16129/vm>296c            mma>
<296n class=29/vmscm/vmscan.c#L18order="lass=29vmscan=2derline, mm/vmscan.c#L18remaitingid="L143" classremaitingline, mm/vmscan.c#L18+codezone_idxid=p ; ; ) name="L57">  5730d8t_percp30d+code=_page" 06heduls  30d+c>30dsszones_need_"L2pactio linep= 0" nameeeeeeeeeeeeeeeee>
<2942 class=29f="+zone_idxid="L143" class+codezone_idx    " name="L213"> 213
3"> 213
<2958 class=230d9t_percp30de do weird 29an >290c  30de >30dm>284v     name="L213"> 213
<2841 class=2301at_percp30>     2911 class=29t   >30> >284v     na"> 213
<2841 class=23011t_percp30daemon, startsd as a ker30dae>30>pstructp,   8230 ne>30>ode=down_write2 class=29ef="+m_ststsss="s= r,  2132938NUL=pfor=p ; ; ) name="L57">  573013t_percp30>     2914 class=29a hre30>  >30>c#L1806id="L128n 4t_percp30 out hrefs so ehat we ha30 ou>30>9aom>"> 213
<2841 class=23015t_percp30ven if ther2pis>no other30ven>30>tio _> 213
<291n class=230>6t_percp30 This is>needed for=thin30 Th>30>ul it's unlikely aline"#L207" id="L207" cldddddddddaaaa30>7t_percp30 might have all ac/vvity30 mi>30> itline" name="L82">  82  Anm/vmiis 5028on 2916 class=,291rvm>28its3 class=/as 8t_percp30hat c> not href things o30hat>30>name="L82">  82     2919 s=2..* new re177"> 177     292n class=29a hre30>  >30>m>284f="+codpg_data_t="+cvm>2up_ 82     2924 clasvm>2up_ 82  82   enumep= mm/vmscan.c#L18p_ hr2an.cnisa_zonem/vmsc_ hr2+code=up_write" clas+code=down_write" cl29ef=>296ass="sref">_pfor             mm/vmscan.c302at_percp30 s ehat are ac/vvf memor30 s >30 spforef">pmm/vmscan.c#L18bool3021t_percp30>basically shouldn't30>ba>30 xlinep= mm/vmscan.c#L18ccodepages_scanned     2923 class=29a hr30a> >30 =.c#L199" id="L199" cla/ lin30 3t_percp30swapd    nvoid *, 30 c#L1806id="L1skid="L143" classcpupopassu2d="L153"28vms>285ass=popassu2d="L15=2derline, mm/vmscanx    , 0)"ame="L82">  82             mm/vmscan.c3024t_percp30lude/linux/bl29a h>2925 30lud>30 9aom>2905            ="L177"> 17730 tio _> 213
<291n class=23026t_percp30+code=_page" balanced_or30+co>30 p    n, w43"ite" cl29ef=>296as295 "sref43" claspan>w43"=2derline, mm/vmscanx    , 0)"ame="L82">  8230 _percpu_ehreshold    ="L177"> 17730 +code=_page" new_orderlinep=),   8230 ef="+codcpumaskidde=_page" pgdatline, r,  maxster_shrinker29"+c>29line"> maxster_sL2131     2813 class="L14428/vm>284=page" class=} nref">pmm/vmscan.c#L18bool303at_percp30=_page" task_structlinep30=_p>30=_termark_ok    n, ,  maxster_shrinker29"+c>29line"> maxster_sL213131ge" kswapd_waite_pa28n <>285page } name="L177"> 177293ass303" >30=cl28ef=>286 call name,  213
<2961 class=29ef="+code=+code=down_write" cl29ef=>296ass="sref">_pfor131"nr_zonemlinep-minite" cl29ef=>29mL199page" pgdat    , int calculate_pressure_ehreshoss=29f="+code=CONFIG+code=down_write" cl29ef=>296ass="sref">_pfor   2877 class=28e=EXPORT_SYMBOL" class="28e=E>287              7"> 17730=ode=down_writ"> 213
<2841 class=23033t_percp30="L143" classreed im>d_s30="L>30=c#L1806id="L1skid="L143" classcpunamequeuef4x/hi2>     2924 clasvmmequeuef4x/hi299page=_page" kswapd_waitline, r,  name="L213"> 213
<29a8 class=23             mm/vmscan.c3034t_percp30scan.c#L136" id="L136"2930sca>30=9aom>2905            ="L177"> 17730=5f="+codcpumaskidde=_page" pgdat          2884_ok_saf2an.cnisa_zonem/vmsc_     2884_ok_saf2=2derline, mm/vmscanx    , 0)"ame="L82">  82 213
<2926 class=29a href="incl" c_w2884_scan.L213"> 213
" c_w2884_scan.=2derline, mm/vmscanx    , 0)"ame="L82">  82, 0, 03             mm/vmscan.c3036t_percp30l" class="sr29f=">293   30l" >30=atermark_ok    n,  17730= mm/vmscan.c#L18order="+code30=8t_percp30+code=sc" cl29n !>293cla30+co>30=+code=_page" new_orderlinep=pg/vmscan.cnisa_vm>2up_ 82     2924 claspg/vmscan.cnisa_vm>2up_ 82  82, can.c#L144" id="L14428/vm>284=page" class=} name="L177"> 17730="L213"> 213
<296n class=vm>2_up_6ch" ruptiAdd a shrink29com>vm>2_up_6ch" ruptiAdd99page=_page" kswapd_waitline, r,  name="L213"> 213
<29a8 class=23ame="L177"> 17730ptaom>"> 213
<2841 class=23041t_percp30rentline30psonabls eo  alume, ne" name#L207" id="L207" cldddddddddaaaa3043t_percp30>  82     2944 class30>  >30pnr_pages_s29a h>291mscan.c#L2  291 name="es alIGH_W wd=29fbzones           2205" id="L205" cla.........*"li3044t_percp30 manage5" c ehat we'30 ma>30pline" name="L82">  82     29e   name="es ale=snr_genebaim.
30pline" name="L82">  82     - mELlie9ned ls2918ich9com>2bzonev allo unevicass=2 list918 n enclass=2lowed by the caller.............30p6t_percp30 "__alloc_hrefs()&q30 &q>30poutingline" name="L82">  82295noda href="+wed by the caller.............30p7t_percp30t in=ehe normal href fre30t i>30p itline" name="L82">  82  - dirtyned ls2918ich9_29  t="L148"insta>289294ng.< name="es awed by the caller.............30p8t_percp30>  82     2949 class30>  >30pname="L82">  82     2919 s=2..* new re177"> 17730p"L213+code=_page" new_orderline> nglobal_ name="es a_scan.L213"> 213
global_ name="es a_scan.99pagf="+             mm/vmscan.c305at_percp30l amountpof memory in=or30l a>30l pforef">pmm/vmscan.c#L18bool3051t_percp30ing else,pand ehis>flag 30ing>30lcl28ef=>286 cL143" class+codezonnshrinker29"+c>295="L177"> 17730l=.c#L199" id="L199" cla/ lin3053t_percp30ehe firstppiecepof memor30ehe>30l3L213"> 213
<296n class=nshrinker29"+c>295="L17131"nr_zonemlinep-global_scanassreed im_ststsss=">global_scanassree    rline, mm/vmscanNR_ACTIVE_FI */
  82     2955 clas30"> >30l9aom>2905         "nr_zonemlinep-global_scanassreed im_ststsss=">global_scanassree    rline, mm/vmscanNR_INACTIVE_FI */
 177 30ass>30lp    n,  213
nr_
<29_scan.L2131
295   3030l_percpu_ehreshold    n, 295="L171+31"nr_zonemlinep-global_scanassreed im_ststsss=">global_scanassree    rline, mm/vmscanNR_ACTIVE_ANON/
30lsszones_need_"L2pactio line"nr_zonemlinep-global_scanassreed im_ststsss=">global_scanassree    rline, mm/vmscanNR_INACTIVE_ANON/
 17730l         mm/vmscan.c#L18set_306at_percp30ass+codezone_idx    p= m30ass>30as#L1806id="L128n 295="L177"> 17730a1aom>"> 213
<2841 class=23062t_percp30 class=29ef="+code=list_30 cl>30a=.c#L199" id="L199" cla/ lin3063t_percp30ssboolss="s,  n      name="es a_scan.L213"> 213
      name="es a_scan.=2deronelinep= mm/vmscan.c#L18pgdat="+code=_page" pgdat    30a  unsignedploas mm/vmscan.c#L30a5t_percp30me="L82">  82     2930me=>30a5l28ef=>286 cL143" class+codezonnshrinker29"+c>295="L177"> 17730a rges_scanned30at_=urrent_reed im_ststs    nnshrinker29"+c>295="L17131"nr_zonemlinep-"sref)canassreed im_ststsss=">"sref)canassree=2derline, mm/vmscanx    , 0)"ame="L82">  82
30asszones_need_"L2pa"nr_zonemlinep-"sref)canassreed im_ststsss=">"sref)canassree=2derline, mm/vmscanx    , 0)"ame="L82">  82
 17730a         mm/vmscan.c#L18set_307at_percp30ode=unregister_shrink28"30ode>30od    n,  213
nr_
<29_scan.L213130ocl28ef=>286 call name, 295="L171+31"nr_zonemlinep-"sref)canassreed im_ststsss=">"sref)canassree=2derline, mm/vmscanx    , 0)"ame="L82">  82
  82     2873 class30>  >30o   n,   82
 17730o3        mm/vmscan.c#L18set_3074t_percp30ep uvmil>explicitly woke30ep >30o9aom>2905    28n 295="L177"> 177  82     2876 clas30"> >30o5aom>"> 213
<2841 class=23076t_percp30"+code=_page" prepars_ks30"+c>30o rges_scanned30ot_=ur#ifdef " class+codezonCONFIG_HIBERNATION/
287cla30ine>30oname="L82">  82     291#L207" id="L207" cldddddddddaaaa3079t_percp30me="L82">  82     2830me=>30oe/linux/in29a h>292ascan.c#L1 Try954 class`nr_to  name="href=55" id="L1, system-wid.c#L15328n 30;o/linux/in29a h>292ascan.c#L1 clas9ned ls205" id="L205" cla.........*"li3081t_percp30or="Lunters such as NR_F30or=>30; ne" name="L82">  82     05" id="L205" cla.........*"li3082t_percp30lue by_nr on183"_cpus.* 30lue>30; class=29vmscan.c#L214" id="L2Ra291vmth9vm     2954   29LRUakes  e="9_2954 aom>ervss=29/oss=all05" id="L205" cla.........*"li3083t_percp30rks beingpbreached while30rks>30;nr_pages_s29a h>291mscan.c#L2 LRUe29   >by< name="  29aomfervms>295 05" id="L205" cla.........*"li3084t_percp30 230;line" name="L82">  82     inux/hi2930;line" name="L82">  82    s=2..* new re177"> 177  82     230ame>30;6L213+code=_page" new_orderline> nshrinkf43"_id="L1/
 nnr_to  name="L213"> 213
nr_to  name="an.c             mm/vmscan.c3087t_percp30ehreshold="+code=_page" 30ehr>30;7 unsignedploas mm/vmscan.c#L3088t_percp30Call the shr28com>288cla30Cal>30;sszones_need_d im_ststsid="L143" classreed im_ststsss="s= name="L57">  57     2933 class=29f="+code=LIST_HEAD" clas29f=">293=page" class=7"> 177  82     2830me=>30;9szones_need_d im_ststsid="L143" clnisa_    ra>
<2964 class=29nisa_    ra>>     2933 class=29fsc
<2964 class=29ni"L17131ignedploas mm/vmscan.c#L309at_percp30io preeords what href bl30io >30io  n, 294oup_gfp_" id"L17131"nr_zonemlinep-h" cen29USER_MOVAB */
30icl28ef=>286 call name     2934 class=may_
<29ite" cl29ef=>29may_
<29"L171311sgnedploas mm/vmscan.c#L3092t_percp30wapd is>going eo sleep, 30wap>30i   n, 29may_unm29"L171311sgnedploas mm/vmscan.c#L3093t_percp30efs and "L2pactio  may s30efs>30i 0,ame="L82">  82     2934 class=may_writeed lite" cl29ef=>29may_writeed l"L171311sgnedploas mm/vmscan.c#L3094t_percp30ame="L82">  82     230ame>30i9aom>2905                 2934 class=nr_to  name="L213"> 213
nr_to  name="an.cL18pgdat="+code=_par_to  name="L213"> 213
nr_to  name="an.csgnedploas mm/vmscan.c#L3095t_percp30uitablsid="L143" classre30uit>30it, rin, 28_moef"L171311sgnedploas mm/vmscan.c#L3096t_percp30slab to avoi28com>289   30sla>30iatermark_ok    n,  213
<2930i7t_percp30ld_stop="+code=_page" kt30ld_>30i_percpu_ehreshold         2934 class=priorit1/
 * If DEF_PRIORIT9an.csgnedploas mm/vmscan.c#L3098t_percp30"+code=_page" 06heduls  30"+c>30isszones_need_dstpstructp, 
<2964 class=29nhrinkf    ra>>     2933 class=29fshrink
<2964 class=29nhrink"L17131ignedploas mm/vmscan.c#L31dat_percp31dat_o weird 29an >290c  31dat>31da9e=EXPORT_SYMBOL" cl     2934 class=gfp_" id="29="m>294oup_gfp_" id"L17131"nr_zonemlinep-sc
<2964 class=29ni"L17     2934 class=gfp_" id="29="m>294oup_gfp_" id"L17sgnedploas mm/vmscan.c#L31d1t_percp31d="L2s from and skips eh31d=">3101szones_need_dstpstructp,   8list , 0)"ame="L82">  8listpgdat      8listpgdat18pgdat="+code=_pa namvmsclist , 0)"ame="L82"a namvmsclist=2derline, mm/vmscan+uma__MEMCG" c29f=">2936    uma__MEMCG"=2der>, can.c#L144" id=sc
<2964 class=29ni"L17     2934 class=gfp_" id="29="m>294oup_gfp_" id"L173ame="L177"> 1773103ref="+codreed im_ststsid="L143" clmm/vmscan.c#L18currentid="L143" class=urrentline> name="L2o>293c            str29"+code=vm_total_pages" c29"+c>2931     name="L213"> 213
<2932 class=23104t_percp31dme="L82">  82     231dme>31d9aom>2905    +code=_page" new_orderline> nnr_a href="+L213"> 213
nr_a href="+we13"> 213
<2932 class=23105t_percp31ditablsid="L143" classre31dit>310tio _> 213
<291n class=231d6t_percp31dlab to avoi28com>289   31dla>3103"> 213
<2957 class=29coo>293c            str3" classPF_MEMALLOCup_ge| mm/vmscan.c#L18PF_SWAPWRITE="+code=_page" PF_SWAPWRITEup_ge| mm/vmscan.c#L18PF_KSWA"> 213
<2932 class=23107t_percp31dd_stop="+code=_page" kt31dd_>310t_=urrent_reed im_ststs    n,  name="L213"> 213
<2938 class=29/vmscan.csc
<2964 class=29ni"L17     2934 class=gfp_" id="29="m>294oup_gfp_" id"L173ame="L177"> 177310+code=_page" new_orderlinep=="+code=LIST_HEAD" clas29f=">293=page" class=     2934 class=29f="+code=DECLARE_RWSEM" 29f=">293             }> ame="L177"> 177290c  31de >310t="+code=_page" pgdat     =_p>293c            str3" classPF_MEMALLOCu143" classreed im_ststsss="> name="L213"> 213
<2942 class=29f="+code=bool" class="sr29f=">294 call name="L177"> 177     2911 class=29t   >31> >284> 177311xlinep= mm/vmscan.c#L18ccodenr_a href="+L213"> 213
nr_a href="+we1329"+code=vm_total_do_pgdat="    _scan.L213"> 213
do_pgdat="    _scan.=2derline, mm/vmscanx   list , 0)"ame="L82">  8listpgda,a>
<2942 class=29f="+sc
<2964 class=29ni"L17,a>
<2942 class=29f="+shrink
<2964 class=29nhrink"L173ame="L177"> 1772t_percp31 ne" name="L82">  8231 ne>311=.c#L199" id="L199" cla/ lin3113t_percp31>     2914 class=29a hre31>  >3113L213"> 213
<296n class=p>293c            str3" classPF_MEMALLOCu143" classreed im_ststsss="> name="L213"> 213  5731>4t_percp31 out hrefs so ehat we ha31 ou>3114_=urrent_reed im_ststs    n, clear+codGFP_KERNELid="L143=2der>=p ; ; ) name="L57">  5731>5t_percp31ven if ther2pis>no other31ven>311_page" flagsup_ge|= mm/vmscao>293c            str3" classPF_MEMALLOCup_ge| mm/vmscan.c#L18PF_SWAPWR>
<29= ~="+code=_page" PF_SWAPWRITEup_ge| mm/vmscan.c#L18PF_KSWA"> 213
<2932 class=231>6t_percp31 This is>needed for=thin31 Th>311 rges_scanned7t_percp31 might have all ac/vvity31 mi>311t_=urrent_ree28n  213
nr_a href="+we13"> 213
<2932 class=231>8t_percp31hat c> not href things o31hat>31>name="> 213
<2841 class=23119t_percp31>     292n class=29a hre31>  >31>m>284#endiflass="29e=E>296vmscan.c#L CONFIG_HIBERNATION  s=2..* new re177"> 177312 >284> 177basically shouldn't31>ba>312 ne" name="L82">  82   #L I9vms>296optide=gto k_pag>
<29asg>for=pas CPUs295pr=pir id="L1, bun=2..* new re177"> 177     2923 class=29a hr31a> >312sonabls eo  alume, ne" name="L  t=8 cli89dge" ccodGFctness.  Soref=   2967 ccpu5529a _MEM goL199" id="L199" claaaaaaaaaa* yo3123t_percp31swapd    nvoid *, 312 reset the cache., ne" name="La9we29ed lhang allo runrou29here:295pr=p>295msc/vmid=mes backt hit its limit anddddddddd*pan3124t_percp31lude/linux/bl29a h>2925 31lud>312n.c#L156" id="L156"29vms>2955ureste_par=pir cpu5bindings.  s=2..* new re177"> 17731 tio _"L14iccL143" class+codezoncpu_linubackc29"+c>2931     pu_linuback=2derd im_ststsid="L143" cl  tifier_bELli , 0)"ame="L82"a tifier_bELli=urrentline> name="L2nfCLARE_RWSEM" 29fnfC"L17,a+code=_page" new_orderline> nux/honite" cl29ef=>29ux/hon"L17sgnedploas mm/vmscan.c#L3126t_percp31+code=_page" balanced_or31+co>312atermark_ok    n,  name="L2h pu="mm/vmscan.cnih puan.c             mm/vmscan.c3127t_percp31" class+codezone_idx    31" c>3127 unsignedploas mm/vmscan.c#L31 8t_percp31xid="L143" classbalanced31xid>31 +code=_page" L143" class+codezonnG" c29f=">2936    i+we13"> 213
<2932 class=23129t_percp31g_data_tlinep*, 312         mm/vmscan.c#L18set_313at_percp31=_page" task_structlinep31=_p>313d    n, 29ux/hon"L17 m class=29"+code=rCPU_ONLIN*/
  82     286ux/honite" cl29ef=>29ux/hon"L17 m class=29"+code=rCPU_ONLIN*_FROZEN/
293ass313" >31=cl28ef=>286 call name,  * If N.c#LOR9an.c 1ignedploas mm/vmscan.c#L31=2t_percp31143" classreed im_ststss31143>313   n,  * If NODE_DATA=2derline, mm/vmscan+G" c29f=">2936    i+we13>=p ; ; ) name="L57">  573133t_percp31="L143" classreed im>d_s31="L>313c#L1806id="L143" class="line.d="L1ed im_ststsid="L143" cl pu" id="29="m>294oup_ pu" id_page" pg_data_tline*" id="29="m>294oup_" id_pag=p ; ; ) name="L57">  573134t_percp31scan.c#L136" id="L136"2931sca>313         mc#L199" id="L199" 3135t_percp31143" classcpumasklinep*,31143>313t, rin, 294oup_" id_pag29"+code=vm_total_ppu" id_of__MEM="29="m>294oup_ pu" id_of__MEM=2derline, mm/vmscannt calculate_pressure_ehreshoss=29f="+code=CONFIG_MEMCG" c29f=">2936     name="L21>=p ; ; ) name="L57">  573136t_percp31l" class="sr29f=">293   31l" >313 rges_scanned313_percpu_ehreshold            ef="+codpgdat="+cod pu" id_ou2_ou" c29f=">2936    pu" id_ou2_ou"=2derline, mm/vmscan pu_on"L14_" id="29="m>294oup_ pu_on"L14_" idwe13sremaitingline, m" id="29="m>294oup_" id_pag)9     2813 class=er+cpu_id.L213"> 213
nr_cpu_id.an.c             mm/vmscan.c31=8t_percp31+code=sc" cl29n !>293cla31+co>313sszones_need_"L2pactio linep= 0" namename="L82">  82   #L On155" our CPUs2on"L14:ureste_pa" id  s=2..* new re177"> 17731328comment"> *
KSWAPD_Ldat="+vmscan.c#L18ccode namepusf43" clasptr="+code=_page"  namepusf43" clasptr=2derline, mm/vmscannt calculate_pressure_ehreshoss=29f="+code=CONFIG 82     2924 clas 82294oup_" id_pag)=p ; ; ) name="L57">  57314at_percp31ptr="+code=_page" set_cp31ptr>314a9e=EXPORT_SYMBOL" cl"> 213
<2841 class=23141t_percp31rentline314   n,  * If NOTIFY_OK_pag=p ; ; ) name="L57">  573143t_percp31>  82     2944 class31>  >31pnr_pad> 213
<2841 class=23144t_percp31 manage5" c ehat we'31 ma>314         mc#L199" id="L199" 31p5t_percp31need more memory we shou31nee>31pline" name="L82">  82  #L207" id="L207" cldddddddddaaaa31p6t_percp31 "__alloc_hrefs()&q31 &q>31poutingline" name="L82">  8231p itline" name="L82">  82  On3  na-hot-add,3 class=com>2nev allo proper cpuasssscpuasa_pahot-added205" id="L205" cla.........*"li31p8t_percp31>  82     2949 class31>  >31pname="L82">  82     2919 s=2..* new re177"> 17731p"L213L143" class+codezon>
<29a8runite" cl29ef=>29>
<29a8run=2derL143" class+codezonnG" c29f=">2936    i+we13             mm/vmscan.c315at_percp31l amountpof memory in=or31l a>31l pforef">pmm/vmscan.c#L18bool3151t_percp31ing else,pand ehis>flag 31ing>315xlinep= mm/vmscan.c#L18ccodepages_scanned * If NODE_DATA=2derline, mm/vmscan+G" c29f=">2936    i+we13>=p ; ; ) name="L57">  573152t_percp31vely trying eo free more31vel>315   n, 296      name="L213131 ame="L177"> 1773153        mm/vmscan.c#L18set_3154t_percp31">  82     2955 clas31"> >31l9aom>2905    skidde=_page" pgdatline, r, >     2924 clas 82 31ass>315 rges_scanned
295   31315t_=urrent_reed im_ststs    nline, r, >     2924 clas 8228runite" cl29ef=>29>8com>28run=2derline, mm/vmscan 82     2924 clas 82  82294ng. 82  573158t_percp31linep= mm/vmscan.c#L18ne31lin>31lsszones_need_skidde=_page" pgdatIS_ERR c29f=">2936   IS_ERR=2derline, mm/vmscannt calculate_pressure_ehreshoss=29f="+code=CONFIG 82     2924 clas 8231528comment"> *
name="L82">  82   #L failu_paat boot9_29fcodl9 s=2..* new re177"> 177316_termark_ok    n, 
=p ; ; ) name="L57">  573161t_percp31"L143" classbalanced_+co31"L1>316cl28ef=>286 call name,  213
<2961 class=29ef="+code=line">>     2924 clas 82  573162t_percp31 class=29ef="+code=list_31 cl>316   n,   82294ng.Fail allo "L1rt  class=on3  na %d\n294ng.=2..* nsremaitingline, m+G" c29f=">2936    i+we13>=p ; ; ) name="L57">  573163t_percp31ssboolss="s, 296      name="L213131="+code=_page" PTR_ERR c29f=">2936   PTR_ERR=2derline, mm/vmscannt calculate_pressure_ehreshoss=29f="+code=CONFIG 82     2924 clas 82  573164t_percp3166" id="L16629/vm>2965  3166">3169aom>2905    d> 213
<2841 class=231a5t_percp31me="L82">  82     2931me=>31a5l28ef=>286 c28n 296      name="L213=p ; ; ) name="L57">  573166t_percp31a htpbalance_pgdat was u31a h>31a rgesd> 213
<2841 class=231a7t_percp31uestpof a similar=or har31ues>316 mm/vmscan.c#L18order="+code3168t_percp31ider going eo sleep on=e31ide>316name="L82">  82     291#L207" id="L207" cldddddddddaaaa3169t_percp31at was unsuccessful itat >316e/linux/in29a h>292ascan.c#L1 Cinu_paby id="L1ahotplug918 n inucid="L1a529a _MEM _29offccesd.  Cinu_r musn=2..* new re177"> 177317o/linux/in29a h>292ascan.c#L1 holpageck_id="L1_hotplug()205" id="L205" cla.........*"li3171t_percp3173" id="L17328/vm>2872  3173">317 ne" name="L82">  82     s=2..* new re177"> 177  82     2873 class31>  >31o   n,f="+codpg_data_t="+c>
<29a8nt"> *
=2derL143" class+codezonnG" c29f=">2936    i+we13             mm/vmscan.c3173t_percp31leep, check if=it was a=31lee>31o3    ignedploas mm/vmscan.c#L3174t_percp31ep uvmil>explicitly woke31ep >31o9aom>2905    d im_ststsid="L143" clmm/vmscan.c#L18currentid="L143" class=urrentline> name="L2line">>     2924 clas 82 * If NODE_DATA=2derline, mm/vmscan+G" c29f=">2936    i+we13>ss=29f="+code=CONFIG 82     2924 clas 82  573175t_percp31">  82     2876 clas31"> >317tio _> 213
<291n class=23176t_percp31"+code=_page" prepars_ks31"+c>317p    n,      2924 clas 82289t"> *
289t">=2derf="+code=CONFIG 82     2924 clas 82  573178t_percp31ine" class="28f=">287cla31ine>317sszones_need_"L2pactiemaitingline, mNODE_DATAaomment"> * If NODE_DATA=2derline, mm/vmscan+G" c29f=">2936    i+we13>ss=29f="+code=CONFIG 82     2924 clas 82  573179t_percp31me="L82">  82     2831me=>3179aom>2905    d> 213
<2841 class=2318at_percp31;ounters are not perfect31;ou>318taom>"> 213
<2841 class=23181t_percp31or="Lunters such as NR_F31or=>318pstructp, 31; clas"L14iccL143" class+codezon__L1it"L13929/vm>2938__L1itaom>2odpg_data_t="+c>
<29a8L1it"L13929/vm>2938>
<29a8L1it=2derf="+             mm/vmscan.c3183t_percp31rks beingpbreached while31rks>3183    ignedploas mm/vmscan.c#L3184t_percp31 23189aom>2905    s143" class+codezonnG" c29f=">2936    i+we13"> 213
<2932 class=23185t_percp31fore going back eo sleep31for>318tio _> 213
<291n class=23186t_percp31ame="L82">  82     231ame>3183"> 213
<2957 class=29co
<29_s8n > *
=2der)=p ; ; ) name="L57">  573187t_percp31ehreshold="+code=_page" 31ehr>318t_=urrent_reed im_ststs    ne" _each__MEMC"L143" classGFP_KERNe" _each__MEMC"L143=2derline, mm/vmscan+G" c29f=">2936    i+we13sremaitingline, mN.c#LOR9aomment"> * If N.c#LOR9an.c p ; ; ) name="L57">  573188t_percp31Call the shr28com>288cla31Cal>318sszones_need_"L2pactiemaitingline, m>
<29a8runite" cl29ef=>29>
<29a8run=2deremaitingline, m+G" c29f=">2936    i+we13>=p ; ; ) name="L57">  573189t_percp31me="L82">  82     2831me=>318t="+code=_page" pgdat     =_hotcpu_a tifier c29f=">2936   hotcpu_a tifier=2derline, mm/vmscan pu_linubackc29"+c>2931     pu_linuback=2de, 03=p ; ; ) name="L57">  57319at_percp31io preeords what href bl31io >319s#L1806id="L128n 3191aom>"> 213
<2841 class=23192t_percp31wapd is>going eo sleep, 31wap>319=.c#L199" id="L199" cla/ lin3193t_percp31efs and "L2pactio  may s31efs>31i 0,amemaitingline, m"odule8L1it"L13929/vm>2938"odule8L1it=2derf="+code=CONFIG 822938>
<29a8L1it=2de p ; ; ) name="L57">  573194t_percp31ame="L82">  82     231ame>319         mc#L199" id="L199" 3195t_percp31uitablsid="L143" classre31uit>31it, ri#ifdef " class+codezonCONFIG_NUMAaomment"> * If CONFIG_NUMA        mc#L199" id="L199" 3196t_percp31slab to avoi28com>289   31sla>319ul it's unlikely aline"#L207" id="L207" cldddddddddaaaa31i7t_percp31ld_stop="+code=_page" kt31ld_>319 itline" name="L82">  82  Z/vmia href= moef"L7" id="L207" cldddddddddaaaa31i8t_percp31"+code=_page" 06heduls  31"+c>319name="L82">  82     2919 "L7" id="L207" cldddddddddaaaa31i9t_percp31We do weird 29an >290c  31We >319e/linux/in29a h>292ascan.c#L1 If non-zero+linuc      name="918 n ef="+umber55" classe=snr_finus below"L7" id="L207" cldddddddddaaaa32dat_percp32dat_o weird 29an >290c  32dat>320o/linux/in29a h>292ascan.c#L1 ef="     2884s205" id="L205" cla.........*"li32d1t_percp32d="L2s from and skips eh32d=">320 ne" name="L82">  82     s=2..* new re177"> 177going eo sleep, 32dap>320href=s143" class+codezon      name="_moef="mm/vmscan.cni      name="_moefaom>2odpg_data_t="+c__om>28nes   "L13929/vm>2938__om>28nes   we13"> 213
<2932 class=232d3t_percp32dfs and "L2pactio  may s32dfs>3203        mm/vmscan.c#L18set_3204t_percp32dme="L82">  82     232dme>32d9aom>#def82<2odpg_data_t="+cRECLAIM_OFF"L13929/vm>2938RECLAIM_OFFaom>20    mm/vmscan.c#L18set_3205t_percp32ditablsid="L143" classre32dit>320tio _#def82<2odpg_data_t="+cRECLAIM_ZON*/
2(10)=_pageame="L82">  82   #L Run nhrinkfinux/hi2_list9>for=pam/vmi s=2..* new re177"> 177289   32dla>3203"> 2#def82<2odpg_data_t="+cRECLAIM_WRIT*/
2(11)_pageame="L82">  82   #L Writeoutse=snr_duiingia href=  s=2..* new re177"> 177320t_=ur#def82<2odpg_data_t="+cRECLAIM_SWAP/
2(12)=_pageame="L82">  82   #L S<29se=snr_outsduiingia href=  s=2..* new re177"> 177320+codeew re177"> 177290c  32de >320e/linux/in29a h>292ascan.c##L207" id="L207" cldddddddddaaaa321at_percp32>     2911 class=29t   >321o/linux/in29a h>292ascan.c#L1 Priorit1ge" cZON*_RECLAIM.aThis3de   2las5pr=p>2rux/hon55" scan.=27" id="L207" cldddddddddaaaa3211t_percp32daemon, startsd as a ker32dae>321 ne" name="L82">  82     55" a _MEM d="Lide89dge" ceachc      name=". 4 dddds 1/16th55"207" id="L207" cldddddddddaaaa32>2t_percp32 ne" name="L82">  8232 ne>321 class=29vmscan.c#L214" id="L2ac    205" id="L205" cla.........*"li3213t_percp32>     2914 class=29a hre32>  >321nr_pages_s29a h>291mscan.c#L2s=2..* new re177"> 1774t_percp32 out hrefs so ehat we ha32 ou>3219aom>#def82<2odpg_data_t="+cZON*_RECLAIM_PRIORIT9aomment"> * If ZON*_RECLAIM_PRIORIT9aom>24ew re177"> 1775t_percp32ven if ther2pis>no other32ven>32>tio _> 213
<291n class=232>6t_percp32 This is>needed for=thin32 Th>32>ul it's unlikely aline"#L207" id="L207" cldddddddddaaaa32>7t_percp32 might have all ac/vvity32 mi>32> itline" name="L82">  82  Perc82<  295" scan.a529a m/vmithat musn2bzounm29p9dge" c      name="9to207" id="L207" cldddddddddaaaa32>8t_percp32hat c> not href things o32hat>32>name="L82">  82     2919  o    205" id="L205" cla.........*"li3219t_percp32>     292n class=29a hre32>  >321e/linux/in29a h>292ascan.c#L1s=2..* new re177"> 177322 >284s143" class+codezonsysctl_2la_unm29p9d_rom>2" classGFP_KERNsysctl_2la_unm29p9d_rom>2=_pa 213
<2932 class=23221t_percp32>basically shouldn't32>ba>322pstructp, 322 reset the cache., ne" name=1 If ef="+umber55" slab scan.a529a m/vmigrows beyond efis3perc82<  29ef=n207" id="L207" cldddddddddaaaa3224t_percp32lude/linux/bl29a h>2925 32lud>322n.c#L156" id="L156"29vms>295* slab  name="9need2954 o    205" id="L205" cla.........*"li3225t_percp32e=_page" orderline, mm/v32e=_>322line" name="L82">  82    s=2..* new re177"> 177322aterms143" class+codezonsysctl_2la_slab_rom>2" classGFP_KERNsysctl_2la_slab_rom>2=_pa 213
<2932 class=23227t_percp32" class+codezone_idx    32" c>322 mm/vmscan.c#L18order="+code32 8t_percp32xid="L143" classbalanced32xid>32 +code"L14icc" class+codezoninclassbclassGFP_KERNinclas=_pa<+code=_page" new_orderline> n     unm29p9d_fi a_scan.L213"> 213
     unm29p9d_fi a_scan.=2deronelinep= mm/vmscan.c#L18pgdat="+code=_page" pgdat    323d    n,  nfi a_m29p9d" classGFP_KERNei a_m29p9d=_pa  82 * If NR_FI *_MAPPEDwe13>=p ; ; ) name="L57">  5732=1t_percp323" id="L133"29vms>293ass323" >32=cl28ef=>286 c+code=_page" new_orderline> nfi a_lru" classGFP_KERNei a_lru=_pa  82
323   n,   82
  5732=3t_percp32="L143" classreed im>d_s32="L>3233        mm/vmscan.c#L18set_3234t_percp32scan.c#L136" id="L136"2932sca>32=9aom>2905    ls eo  alume, ne" name#L207" id="L207" cldddddddddaaaa3235t_percp32143" classcpumasklinep*,32143>323line" name="L82">  82           L I9vms>296possiAddge" c291ve>295nodme_paei a mappe9ned lsmth9v207" id="L207" cldddddddddaaaa3236t_percp32l" class="sr29f=">293   32l" >323outingline" name="L82">  82<        L acclass=dge" cby ef="e=snr_onpr=p>29l29LRU lists becausf"L7" id="L207" cldddddddddaaaa3237t_percp32im_ststsid="L143" classl32im_>323 itline" name="L82">  82        L tmpfs"e=snr_acclass=dge" cas ANON ddd als95nodFI *_MAPPEDwe7" id="L207" cldddddddddaaaa3238t_percp32+code=sc" cl29n !>293cla32+co>323name="L82">  82     2919        Ls=2..* new re177"> 17732328comment"> *28n  nfi a_m29p9d" classGFP_KERNei a_m29p9d=_pa) ? rline, mm/vmscanfi a_lru" classGFP_KERNei a_lru=_pa<-Lew_orderline> nfi a_m29p9d" classGFP_KERNei a_m29p9d=_pa) : /vmscan.c#L18+codezone_id324at_percp32ptr="+code=_page" set_cp32ptr>32ptaom>"> 213
<2841 class=23241t_percp32rentline32psonabls eo  alume, ne" name#L Work_outshow manyned l ddcf="e=snr_we ddd  name="9in efis3 name="_moef Ls=2..* new re177"> 177  82     2944 class32>  >32pnr_pa"L14iccge" new_orderline> n     e=snddcf=  name="es ad im_ststsss=">"sref)canddcf=  name="es a=2deronelinep= mm/vmscan.c#L18pgdat="+code=_page" pgdat    324  unsignedploas mm/vmscan.c#L32p5t_percp32need more memory we shou32nee>3245l28ef=>286 cge" new_orderline> nnr_e=snddcf=  name="es ad im_ststsss=">nr_e=snddcf=  name="es awe13"> 213
<2932 class=232p6t_percp32 "__alloc_hrefs()&q32 &q>3246l28ef=>286 cge" new_orderline> ndeltad im_ststsss=">delta=_pa324 mm/vmscan.c#L18order="+code32p8t_percp32>  82     2949 class32>  >3248aom>2905    ls eo  alume, ne" name#L207" id="L207" cldddddddddaaaa3249t_percp32y doesn't need memor32y d>324e/linux/in29a h>292ascan.c#L        L If RECLAIM_SWAP _29set,9ef=n inuc29l29e=snr_arM d="Lide89d207" id="L207" cldddddddddaaaa325at_percp32l amountpof memory in=or32l a>325o/linux/in29a h>292ascan.c#L        L potvms>295 < name="es a. O291vwise >we2have>295worry aboun=2..* new re177"> 177flag 32ing>325 ne" name="L82">  82            L p=snr_like 
<29ddcf="L153     unm29p9d_fi a_scan.() provide.=27" id="L207" cldddddddddaaaa3252t_percp32vely trying eo free more32vel>325sonabls eo  alume, ne" name="L      L a5notter estidetf"L7" id="L207" cldddddddddaaaa3253t_percp32ehe firstppiecepof memor32ehe>325 reset the cache., ne" name="L      Ls=2..* new re177"> 177  82     2955 clas32"> >32l9aom>2905    skidde=_page" pgdat      name="_moef="mm/vmscan.cni      name="_moefaom>2>
<292odpg_data_t="+cRECLAIM_SWAP/
             mm/vmscan.c3255t_percp32 nnr_e=snddcf=  name="es ad im_ststsss=">nr_e=snddcf=  name="es awe13  82 * If NR_FI *_PAGESs=} n=p ; ; ) name="L57">  573256t_percp32assset_freezabls    n"> 32ass>32lp    n,   573257t_percp32
295   3232l_percpu_ehreshold    n,  213
     unm29p9d_fi a_scan.=2der     573258t_percp32linep= mm/vmscan.c#L18ne32lin>325+codeew re177"> 17732528comment"> *name="L82">  82   #L If_we dddvms>2t clean p=snr,< nnev  dirtyse=snr_from d="Lide8om>28 Ls=2..* new re177"> 177326d    n, 
)             mm/vmscan.c3261t_percp32"L143" classbalanced_+co32"L1>326cl28ef=>286 call name, delta=_pa<+31"nr_zonemlinep-"sref)canassreed im_ststsss=">"sref)canassree=2derline, mm/vmscanx    , 0)"ame="L82">  82 * If NR_FI *_DIRT9an.c =p ; ; ) name="L57">  573262t_percp32 class=29ef="+code=list_32 cl>32a=.c#L199" id="L199" cla/ lin3263t_percp32ssboolss="s, 295delta Ls=2..* new re177"> 1773269aom>2905    skidde=_page" pgdatunlike  "L13929/vm>2938unlike  =2derline, mm/vmscandeltad im_ststsss=">delta=_pa< nns_e=snddcf=  name="es ad im_ststsss=">nr_e=snddcf=  name="es awe13)             mm/vmscan.c3265t_percp32me="L82">  82     2932me=>326t, rin, delta=_pa nnr_e=snddcf=  name="es ad im_ststsss=">nr_e=snddcf=  name="es awe13"> 213
<2932 class=23266t_percp32a htpbalance_pgdat was u32a h>32a rges_scanned326t_=urrent_ree28n nr_e=snddcf=  name="es awe13<-Lew_orderline> ndeltad im_ststsss=">delta=_pa"> 213
<2932 class=23268t_percp32ider going eo sleep on=e32ide>326name="> 213
<2841 class=23269t_percp32at was unsuccessful it at >32a         mm/vmscan.c#L18set_327at_percp32ode=unregister_shrink28"32ode>327o/linux/in29a h>292ascan.c##L207" id="L207" cldddddddddaaaa3271t_percp3273" id="L17328/vm>2872  3273">327 ne" name="L82">  82      Try954 classup somese=snr_from efis3m/vmithrough< name="205" id="L205" cla.........*"li3272t_percp32>  82     2873 class32>  >327 class=29vmscan.c#L214" id="Ls=2..* new re177"> 177327nr_pa"L14iccL143" class+codezon__      name=""L13929/vm>2938__      name="=2deronelinep= mm/vmscan.c#L18pgdat="+code=_page" pgdat    2938gfp_tpgdatemaitingline, mgfp_" id="29="m>294oup_gfp_" id"L17sc+code=_paL143" class+codezonorder="+code=_page" orderline             mm/vmscan.c3274t_percp32ep uvmil>explicitly woke32ep >327  unsignedploas mm/vmscan.c#L3275t_percp32">  82     2876 clas32"> >3275#L1806id="L1ls eo  alume, ne" name#L Minimumg_data_ne" name#L Minimumg_data_ne" name#L Minimumg_data_ne" name#L Minimumg_data_ne" name#L Minimumg_data_ne" name#L Minimumg_dimumg_data_ne" name#L Mini  inux/316c#L1__      name="=2deronelinep= mm/vms class+codpd_sleep="+code=_page31sw2>317_2ercpu_ehresholcp31sc>310tio _> 213
<291n class=2/vmscan.c#L18ne32lins=2/vmsc9a hr32a  32d+c>3an.c#L3275t_percp32">  82     2876 clas32at >32a         mm/vmscan.G 82  2  2924 clas 82  57    name="L213"> 213
<2932 class=23104t_percp31dme="L82">  82     231dme>31d9aom>2905    +code=_page" new_orderline> nnr_a href="+L213"> 213
nr_a href="+we13"> 21329362   i+we13>ss=29f="+code=C2NFIG 27ss=7"> 177  82     2830me=>30;9szones_need_d im_ststsid="L143" clnisa_    ra>
<2964 class=29nisa_    ra>>     2933 class=292
<28412class=23181t_percp31or="L2nters27an.c#L309at_percp30io preeords what href bl30io >30io  n, 294oup_gfp_" id"L17131"nr_zonemlinep-h" 2+codreed 3282t_percp31lue by_nr on182"_cpu28"29="m>294oup_gfp_" id"L17sgnedploas        2934 class=nr_to  name="L213"> 213
nr!             mm/vmscan.c3261t_percp32"L143" classbalanced_+co32"L1>326cl28ef=>286 call name, delta=_pa<+3ih puan.c             mm/2ass+codezo2__L1it"L13929/vm>2938__L12taom>280wap>30i   n, 29ma!             mm/vmscan.c3261t_percp32"L143" classbalanced_+co32"L1>326cl28ef=>286 call name,  nnr_e=snddcf=  name="es ad im_ststih puan.c             mm/2aa=32lee>32
<29a8L1it=2derf="+      2     28s30efs>30i 0,ame="L82">  82     2934 ass=may_unm29ite" cl29ef=>29may_unm29"L171311sgnedploas mm/v2class+code2onnG" c29f=">2936    i+we23"> 228/a>     230ame>30i9aom>2905          percp30uitablsid="L143" classre30uit>30it, rin, 318tio2_> 212
<291n claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas+codezon29ef=>d im_CLUSTef=>AXan.c#L18ne32lind im_CLUSTef=>AX_ststih puan.c             mm/2ag_data_ne"9_s8n > *
289   30sla>30iatermark_ok  mm/vmscan.c#L31d1t_percp31d="L2s from and skips eh31d="+co31d2t_percp31dapd is>going eo sleep, 31dap>310href="+co2187t_percp21ehreshold="+code=_page" 21ehr>280i_percpu_ehreshold         2934 class=priorit1/

310href="+co21 82  2c29f=">2936    i+we13srem2iting28ploas mm/vmscan.c#L3098t_percp30"+code=_page" 06heduls  30"+c>30isszones_need_dstpstructp, 213
<291n class=232>6t_percp32 This is>needed for=thin32sleep, 31dap>310href="+co219f=">293626    i+we13>=p ; ; ) name2"L57"284 class=29nhrinkf    ra>>     2933 clas2pu_linubac2c29"+c>2931     pu_linuba2k=2de28loas mm/vmscan.c#L31dat_percp31dat_o weird 29an >290c  31dat>31da9e=EXPORT_SYMBOL" cl     2934 class=gfp_" id="29="m>294oup_gfp_" id"L17131"nr_zonemlinep-sc
2m>"> 213
<2841 class=23192t_perc231wap29"29="m>294oup_gfp_" id"L17sgnedploas mm/vmscan.c#L31d1t_percp31d="L2s from and skips eh31d=">3101szones_need_dstpstructp,   8listpgdat    2938"odule8L1i2=2der29s30efs>30i 0,>310tio _> 213
<291n class=2s cla/vmsc0an.c#L18ne32lins=2s cla/vmsc0+code=_page" orderlins=2s cla/vmsc1an.c#L18ne32lins=2s cla/vmsc1sa_    ra>>     2933 class=2929/vm>2938>2<29a8L1it=2de p ; ; ) nam2="L5729aaa3235t_percp32143" classcpumcodezonCON2IG_NUMAaomment"> * If CON2IG_NU29>  5731>5t_percp31ven if theORTduitsch41t_percp32rentliORTduitsch41_tpgdssb>326c#L1806id="L1ls eo  6t_percp312lab to avoi28com>289   312la>3129Minimumg_data_ne" name#L Minimumg_dim      name="=2deronelinep= mm/vmkt31ld_>312 itline" name="L82">  82<2a>  Z2vmia href= moef"L7" id="L207p_gfp_" i* Weame#L       a>
<    m>29c9ni=2..* neddddservLs=2or me="es ad im_s    name="=2deronelinep= mm/vmk 82  26heduls  31"+c>319name="L22">  22     2919 "L7" id="L207"_gfp_" i* namewe* new me#L       a>
<    213"> _SWAP/29362e/linux/in29a h>292ascan.2#L1 I2 non-zero+linuc      name="91_gfp_" i* nameme="es ad im273t_percp32leep, check if=it wass below"L72 id="L207" cldddddddddaaa232dat2percp32dat_o weird 29an >290c_gfp_" i*_      name="=2deronelinep= mm/v3 from and 3kips eh32d=">320 ne" name3"L82"300  5731>5t_percp31ven if thea>
<2932 class=23107t_percp31dd_stop="+code=_page" kt31dd_>310t_=urrent_reed im_ststs    n, >     2933 class=293p, 32dap>330href=s143" class+codezon3     30aomment"> * If NODE_DATA=2des=gfp_" id="29="m>294oup_gfp_" id"L173ame="L177"> 17728nes 3 "L13929/vm>2938__om>28ne3   we302omment"> * If NODE_DATA=2ded9t_percp31de do weird 29an >290c  31de >310t="+code=_page" pgdat     =_p>293c            str3" classPF_MEMALLOCu143" classreed im_ststss3ta_t="+cRE3LAIM_OFF"L13929/vm>2938RE3LAIM_3013929/vm>2938NUL=pfor=p ; ; ) name="L57">  5731>4t_percp31 out hrefs so ehat we ha31 ou>3114_=urrent_reed im_ststs   84> 177311xlinep= mm/vmscan.c33205t_perc332ditablsid="L143" classr332dit30        mc#L199" id="L199" 313"L82">  823/a>   #L Run nhrinkfinux/3i2_li30Minimumg_data            mm/vmscan.c3n.cnisa_zonem/vmscan.c             mm/vmscan.c3244t_percp32 manage52873259t_percp32ge" balanced_orderlinep=32g2     2932me=>3262ge" balanced_orderlinep=32t_percp31 out hrefs >     2923 cl/vmscan.c#L18ne32lin>     2923 cl/vmscp=32g2"L17131"nr_zonemlinep-sc
3="L82">  83   #L Writeoutse=snr_3uiing300i_percpu_ehreshold  _ne" name#L Minimumg_dim      name="=2deronelinep= mm/v3"L82">  823/a>   #L S<29se=snr_outsd3iingi30     2919 "L7" id="L207"_gfp_" i_gfp_" i* Fan.cscan.c#bylinuxeird4oup_gre177"with increaseir      name="=2deronelinep= mm/v3"882">  823//linux/in29a h>292ascan.3aa32130non-zero+linuc      name="91_gfp_" i_gfp_" i* c>30issi/spuntil=snr_likeen77  >323o/linux/in29a h>292ascan.3#L1 P3iorit1ge" cZON*_RECLAIM.aThi1_gfp_" i_gfp_" i*_      name="=2deronelinep= mm/v3=27" id="L307" cldddddddddaaaa3211t_3ercp331"29="m>294oup_gfp_" ido2"L17131"nr_zonemlinep-sc
3" id="L2073 cldddddddddaaaa32>2t_per3p32 n310wap>30i   n, 2938NUL=pfor=p ; ; a9e=EXP2ge" balanced_ordera9e=EXP2ge"t_percp32 class=29ef="+code=list_32 cl>32a=.c#L1984> 177  573161t">3101szones_need_dstpstructp,      292n class=29a hre31need_"L2pactio linep= 0"/vmscan.c#L18ne32lins=2/vmsc9a hr84> 1l28ef=--="L57">  573161t">3101szones_need_dstpstructp, 30isszones__per=from and skips eh31 =">3191a3 ha32 ou>3319aom>#def82<2odpg_data_t3"+cZO3113929/vm>2938de>327o/linux/in29a h>2923re177"> 1735t_percp32ven3if th31        mc#L199" id="L199" 313 aline"#L237" id="L207" clddddddddda3aa32>3153929/vm>2938NUL=pfor=p ; ; s=2s cla/vmsc0an.c#L18ne32lins=2s cla/vmsc0+codESaomment"> * If NR_FI *_PAGESs=} n=p ; ; ) name="L57">  573256t_percp32assset_freezabls    n"> 32ass>32lp    n, needABt_percp32scan.c#L136SLAB is>needABt_dstpclass=     2934 class=29f=3s"L82">  83 itline" name="L82">  82<3a>  P31rcpu_ehreshold    n,    s cla/vmscan.c#L18ne32lin>   s cla/vmscp=32g2"L17131"nr_zonemlinep-sc
3me="9to2073 id="L207" cldddddddddaaa332>8t31a_scan.L213"> 213
ne" name#L Minimumg_dim      name="=2deronelinep= mm/v3s=29a hre33>  >321e/linux/in29a h>293ascan3c#L1s=2..* new re177"> 17729w us 213">4ascan>32pnr_pa"L14iccge" new_ocan>32p75838ercp36ref/v3 >284s143" class+codezonsysctn3c#L1s=2..* new r2    32> linespun14iccge" #L2s= Sop_" tak295*  new_ordertly m>29w us 213">4ascan>32pnrNsysctl_2l3_unm29p9d_rom>2=_pa3213 17729o+lishak295*  /bl2991_gfpi295 < name="es a.3hr32a> >323sonabls eo  alume, ne" na3e#L2032L207" cldddddddddaaaa3252t_percp32ve2..* new rsl32im_s ne o linep= o32ha_" us+co>323fss=231 i_g2923 cl/     L potvms>295 < name="es a.3hstpclass= apd    nvoid *, 3223reset the cache., ne" name=1percp32ve2..* new rinep=til=snr_likeen77327a.........*"li3225t_percp32e=_p3ge" orderline, mm/v32e=_>322lercp32ve2..* new rNots o32hae177"> 177<949 clf7" id="L207oo/linu#L2s29o+limayil=snr_likeen77323aterms143" class+codezonsysctercp32ve2..* new rtak29a1i2=2dt311til=snr_likeen772=_pa 2133<293232tline" name="L82">  82<2a>  Z2vmia h2..* new _RECLAIM.aThi1_gfp_" i_gfp_" i*_ ed32xid>323+code"L14icc" class+codez3nincl32d="L207" clddddddddda>323(;;.c#L18ne32lin>   s cla/vmscpe=_page" n3w_orderline> n     unm29p3d_fi 32new re177"> 17730i lru=32t_percp31 out hreflru=32t_pc0an.c#L18ne32lins=2s cla/v.c         "L57">  573258t_percp32lin.c         "L57">    mm/vmscan.c3244t_percp32 manage52873259t_percan.c#L136SLAB is>needABt_nep32=_p>333d    n, flag 32ing /bl29323ve207EXPsd="L207press_ok  _RECLAIM.aThi1_gfp_" i_gfp_" i*_ RNei a_lru3_pa2t_per3p32 nT*/30i   n, 310t="+code=_page" 310    mef="+code=list_32 cl>EXPORT_SYMBOL" cl     2934 clafreezabls    n"> me="L82} whpotve="L57">  573161t">3101szongfp_n_dstpstructp,  lru=32t_percp31 out hreflru=32t_pc0andeltad im_ststsss=">delta=3=">"sref)c3nassree=2derline, mm/vmsc3nx   3, 0)"ame="L82">  82needABt_2932sca>3239aom>2905    ls eo  alume3 ne" 3ame#L207" id="L207" cldddddddd3aaaa3235t_3ercp32143" classcpumaskli3ep*,333ck eo sleep31for>318tio2_> 21g_data_ne" name#L MinimumFspun1_" i* c>30issi _RECLAIM.aThi1_gfp_" i_gfp_" i*_ R        mc_paei a mappe9ned lsmth9v307" i33s8n > *
 21gL18ne32lins=2s cla/vmsc0+code=_page" orderlins=2s cla/vmsc1an.c#L18ne32lins=2s cla/vmsc0+codESaomment"> * If NR_FI *_PAGESs=} n=p ; ; ) name="L57">  573256t_percp32assset_f.aThi1_gfp_" i_gfp_" i*_ Rstpclass= l29LRU lists becausf"L7" 3d="L233a>   #L Writeoutse=snnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnneezabls    n"> 32ass>32lp    n, needABt_percp32scan.c#L136SLAB is>needABt_cas ANON d3d als95nodFI *_MAPPEDwe7"3id="L33d="L207" cldddddddddaaaaaaaaaL82">  82<3a>  P31rcpu_ehresholdde=_page" orderlins=2s cla/vmsc1an.+>     292n class=29a hre31need_"L2pactio linep= 0"/vml" 06>  82<3a>  P31rcpu_ehreshold    n, delta=3==_page" n3percp32.c#L131"cpumask_em3ty   33new re177"> 177needABt_2ep32=_p>33laLew_orderline> nfi a_m23p9d" 33t_percp31ass+codezonedpg_data_t3"+cZO3113929/vmmsc32ren>33ppstructp, 8t31a_scan.L213"> 213
ne" name#L Minimumg_dim r_we ddd  3ame="9in efis3 name="_moe3 Ls=23.* new re177"> 17729w      Ls=2..* new re177"> 1773sref)canddcf=  name="es a32dero34d="L207" cldddddddddaaaa3224ercp32ve2..* new  fss=23119r class=29vmscatil=snr_likeen773345l28ef=>286 cge" new_ord3rline34e" orderline, mm/v32e=_>322lercp32ve2..* new _RECLAIM.aThi1_gfp_" i_gfp_" i*_ tstsss=">n3_e=snddcf=  name="es awe13"> 2134s8n > *
 * If NR_FI *_PAGESs=} n=p ; ; ) name="L57">  573256t_percp32assset_fneezabls    n"> 32ass>32lp    n, needABt_percp32scan.c#L136SLAB is>needABt_/a/vmscan.3#L18+codezone_id3247t_per3p32t 34a>   #L Writeoutse=snL82">  82<3a>  P31rcpu_ehresholdde=_page" orderlins=2s cla/vmsc1an.cp31>     292n class=29_ehreshold    n, delta=3ss32>  >3238aom>2905    ls eo  alume3 ne" 34d="L207" cldddddddddaaaaaaaaa1s30efs>30i 0,ame="L82} whpotve="L57">  573161t">3101szones_need_dstpstructp,   cla/vmsc0+code=_page" orderlins=2s cla/vmsc1an.c#L18ne32lins=2s cla/vms3aaaa3249t_3ercp32y doesn't need 3emor33y d>324e/linuxdpg_data_t3"+cZO3113929/vmmep32=_p>3329e=snr_arM d="Lide89d2073 id="34 id="L207" cldddddddddaaaa3273O291vwise 3we2have>295worry aboun=2.3* new35ps eh32d=">320 ne" name3"L82"300  5731>5t_percp31ven if thea>
<2932 c7">  5731>4t_percp31 out hrefs so ehat we ha31 oeezabls    n"> 3  d> 213
<2841 class=2318at_percp31;ounters are3     unm2939d_fi a_scan.() provide.=37" id35ref=s143" class+codezon3    >2905    +code=_page" new_orderliven if thea>
<2932 class=23107t_percp31dd_stop="+cef="+= ~">  82<3a>  P31r>310t_=urrent_reed im_ststs    n, 2938__om>28ne3   w>294oup_e_idr> * If NODE_DATA=2des=gfp_" id="29="m>294oup_e_idr> * If NODE_DATA=2des=ch41t_percp32rentliORTduitsch413  82     2953 clas35aom>#def82<2odeltad im_ststsss=">deme="L82} whpotve="L57">  573161t">3101szones_need_dstpstructp,   82<3a>  P31rcpua hre31need_"L2pactio linep= 0"/percp32rentliORTduitsch41333="_moefaom>2>
<292odpg_da3a_t="3cRECLAdpg_data_t3"+cZO3113929/vmm_ststsss=3>nr_e=snddcf=  name="es a3e133 h29com>293   3232l_percpu_ehres3old  35lass=23227t_percp32" cla="mm/vmscan.cnisa_zonem/vmsn.csremaitingline, mgfp_t"L13929/vm>2938gfp_tpgdatemaitingline, mgfp_" id="29="m>294oup_gfp_" id"L17sc+code=_paL143" class+codezonorder="+code=_page" orderline             mm/vmscan.c3274t_percp32ep uvmil>explicitly woke32ep >327  unsignedploas mm/vmscan.c#L3275t_percp32">  82     2876 3m_ststsss=3>nr_e=snddcf=  name="es a3e13   s cla/vmscpp=32ge">32328comment"> *name="L82"> 382324e/linuxfor>318tio _> 21333dirtyse=snr_from d="Lide83m>28 3s=2..* new re1for>318tio _> 213
<2841 class=231a7t_percp31uestpof a similar=or3cni      n3me="_moefaom>2>
<292odpg_3ata_t36t_perpg_data_t3"+cZO3113929/vmpa<+31"nr_3onemlinep-"sref)canassree3 im_s3stsss=">"sref)ea332>8t31a_scan.L213"> 213
ne" name#L Minimumg_dim +c32ssb>323c#L1806id="L1ls eo  alume3 ne" 36ppiecepof memor32ehe>325 reset the cac2     291     29sme="L82">  mscaan.cL82">  82an/     L potvms>295 < name="es a.3de8flows d3e>295delta Ls=2..* new re377"> 36"> >32l9aom>2905    skidde=_page" pgdx/bl29a h>292cp32a92asove 32l" 732>5td limit=til=snr_likeen77322lercp32ve 213
ne" name#L Minimumg_dim +_ststsss=3erline> nnr_e=snddcf=  na3e="es36"L207" cldddddddddaaaa3236t_percp32l" A smlinupor82  e="L82">  mscaan.cL82">  82iame#L Minfor213
ne" name#L Minimumg_dim +h29com>293t_=urrent_ree28n   82<2a>  Z2vmia hre mscaI/O o5 ne" na2">  8218sersl3 mscaI/O 49 clbe i82323a         mm/vmscan.c#L183et_3236linux/in29a h>292ascan.2#L1 I2 non-zerifales82<    a spec31iod156"29vms>29ofata_t="+cRiamus+cobyil=snr_likeen7733o/linux/in29a h>292ascan.3##L203607" cldddddddddaaaa325at_percp32l amoue="L82">  mscaan.cL82">  8til=snr_likeen773273ne" name="L82">  82     rcp32l amo_RECLAIM.aThi1_gfp_" i_gfp_" i*_ is3m/vmith3ough< name="205" id="L2053 cla.37tsss=">"sref)rinkfinux/3i2_li30Minimumg_data            mm/vmscan.c3n.cnisa_zonem/vmscan.c             mm/vmscan.c3244t_percp32 manage52873259t_percpl" 06>  82<3a>  P31rrlinep=32g2     2932me=>3262ge" balanced_orderlinep=32t_percp31 out hrefs >     2923 cl/vmscan.c#Lvmscan.c#L1.aThi1_gfp_" i_gfp_" i*_ ic32ssb>323eep, check if=it was a=323ee>3237 0)"ame="L82">  8L18ne32lins=2s cla/vmsc0+codESaomment"> * If NR_FI *_PAGESs=} n=p ; ; ) name="L57">  573256t_percp32assset_fneezabls    n"> 32ass>32lp    n, needABt_percp32scpl" 06>  82<3a>  P31rrlinep=32g2     2932me=>3262ge" balanced_orderlsnep=32t_percp31 out hrefs >   s cla/vmscan..aThi1_gfp_" i_gfp_" i*_ ie8flows d3=2deronelinep= mm/vmscan.3#L18p37nG" c29f=">2936    i+deltad im_ststsss=">de/a>
<291n claF  d> 213
<2841/a>
<291n claF  dt_percp31uestpof a similar=or3las32"> >3375#L1806id="L1ls eo  alum3, ne"37a>5t_percp32ven3if th3Minimumg_d3ta_ne" name#L Minimumg_da3a_ne"3name#L Minimumrinkfinux/3i2_li30Minimep=32g2     2932me=>3262ge" balanced_orgfp 29         mm/vmscan.c3n.cnigfp 29         mmscan..aThi1_gfp_" i_gfp_" i*_ ih29com>293=2deronelinep= mm/vms cla3s+cod37a>   #L Writeoutse=sndeltad im_ststsss=">de/a>
<291n claF  d> 213
<2841/a>
<291n claF  dt_percp31uestpof a similar=or3lststsss="3a         mm/vmscan.G 82<3a>  237me#L207" id="L207" cldddddddd33
nr_a3href="+we13"> 213324e/linux/in29a h>292ascan.c#L        L If RECLAIM_SWAP _29set,93isa_    ra3>     2933 class=292
3284123707" cldddddddddaaaa325at_percp32l amouDo" i_g _29eifata_tgfp_" i2  82     rcp32l amo_RECLAIM.aThi1_gfp_" i_gfp_" i*_ pa<+3ih pu3n.c             mm/2ass+c3dezo238tsss=">"sref)rinkmay_writeed lite">294oup_gfp_" id"L17sgnedploas mm/vm43" classbalanced_+co__GFP_WAITgfp_" id"L17sgn__GFP_WAITcp32sc||nkfinux/3i2_li30M>2905    +code=_page" new_orderliven if thea>
<2932 class=23107t_percp31dd_stop="+cef="+e=_page" kt31dd_>310t_=urrent_reed im_ststs    n, 292ascan.c#L        L If RECLAIM_SWAP _29set,93_ststih pu3n.c             mm/2ag_da3a_ne"38"L207" cldddddddddaaaa3236t_percp32l" Onhis>unt="+cR     291tline" p_" nu#L2s9323onu#L2s29o32hado" i_     L If RECLAIM_SWAP _29set,93_h29com>293 31dap>310href="+co2187t_3ercp238tline" name="L82">  82<2a>  Z2vmia hrei_gfpL82ocies=d namces8ors2dae>3249 clfav  32l" p_" nunamces8or     L If RECLAIM_SWAP _29set,93_ststsss="3 31dap>310href="+co21 82<3a>  2387" cldddddddddaaaa3238t_percp32+code=sove 332aste namces8ors9o+lisp18seroffe" nam>30issigfp_" i2310href="+co219f="32936238linux/in29a h>292ascan.2#L1 I2 non-zero3249dfpL8">3269aomtil=snr_likeen77>     2933 clas2pu_li3ubac238d="L207" cldddddddddaaa232dat2percp32dat_o weird 29an >290c_gfp_" i*_ _" id"L17131"nr_zonemlinep-sc
2m>"> 313320 ne" name3"L82a13<_ge" pgdat     =_ho13<_ge 0"/.c#L18ne32lins=2s cla/vto_nge" pgdat     =_hcla/vto_nge    mm/vmscan.c3244t_percp32 manage52873259t_percan.c#L136SLAB is>needABt_g eo sleep3 31dap>310href="+co2 cla/3lin3239tsss=">"sref)rinkfinux/3i2_li30Mo13<_codESaomment"> * If o13<_codES    mm/vmscan.c3244ta13<_ge" pgdat     =_ho13<_ge 0"/fneezabls    n"> 3_CPU hrelsep ; ; ) S_CPUcp32scpscan.c#L180 ne" name3"L82a13<_ge" pgdat     =_ho13<_ge 0"/.!06>  82<3a>  P31rcuma_a13<_ge" pgdat     =_houma_a13<_gech41t_eltad im_ststsss=">delta=3istpgdat  3   573256t_percp32assset_fneezabls    n"> /a>
<291n cla286 c+code/a>
<291n cla *
  2397s eh32d=">320 ne" name3"L82/a>
<2841 class=231a7t_pe.c#L18ne32lins=2s ef="mm/vmscan.cnisa_zonem/vmscan.csremaitingline_" id="29="m>294oup_gfp_" id"L17sc+code=_paL143" class+codezonomscan.c3274t_percp32ep uvmil>explep >327  unsignedploas mm/vmscan.c#L3275t_perrcp31uestpof a similar=or31in32sleep3=2deronelinep= mm/vmk9f="329362398s eh32d=">320 ne" name3"L82n.csre_idr>d_st" pgdat     =_hcla/ve_idr>d_st} n=p ; ; ) name="L57">  573256t_percp32assset_fneezabls    n"> /a>
<291n cla286 c+code/a>
<291n cla
<2841 class=231a7t_peeltad im_ststsss=">delta=4osa_    ra4>     2933 class=293p, 324ap>3340tsss=">"sref)canassree=2derline, mm/cla32_vm_ev5    +code=_page" nla32_vm_ev5  } n=p ; ; ) name="L5PGSCAN_/a>
<291n claFAILl28ef=>286 c+codePGSCAN_/a>
<291n claFAILl2hrefdrcp31uestpof a similar=or4ge" class=4    2934 class=29f=3_om>24nes 340me#L Watchge" canyneossiAddgu4ALLOCu143"4classreed im_ststss3ta_t=4+cRE340aom>#def82<2odeltad im_ststsss=">de/a>
<2841 class=231a7t_percp31uestpof a similar=or4er31dae>314xlinep= mm/vmscan.c33205t4perc340RECLAdpg_data_t3"+cZO3113929/v40        m4#L199" id="L199" 313"L82"4  8234a>   ##endifpg_data_t3"+cZO3113929/v406       m4#2deronelinep= mm/vmkt31l4>  8340onns_e=snddcf=  name="es ad i4     name=4=2deronelinep= mm/v3"L82"4  8234a>   #L S<29se=snr_outsd3iin       L If RECLAIM_SWAP _29set,94     name=4=2deronelinep= mm/v3"882"4  8234/linux/in29a h>292ascan.3aa32 rinep_evict2ing - test whe5 ne a>     >32evict2ing     L If RECLAIM_SWAP _29set,94 9   name=4=ep, check if=it wass bel4 >3234/linux/in29a h>292ascan.3#L1 * @    :32im_>323l()itest     L If RECLAIM_SWAP _29set,94     name=4=2deronelinep= mm/v3=27" 4d="L341e" name="L82">  82     r      L If RECLAIM_SWAP _29set,94 ido2"L17141"nr_zonemlinep-sc
3" id=4L207341......*"li3272t_percp32>  8232evict2ing--i.e.,ashould"bm_>lac=d oo/lctive/inlctive     L If RECLAIM_SWAP _29set,94 e" class=4    2934 class=29f=3ss=294 hre341r_pa"L14iccL143" class+codezo2">  82vsme=evict2ing ">  til=snr_likeen77 >32l9aom>2905    skidde=_      L If RECLAIM_SWAP _29set,94 r31dae>314o/linux/in29a h>2923re1774> 17341e" orderline, mm/v32e=_>322l* Reasonl29n ! might" i_gb" evict2ing:     L If RECLAIM_SWAP _29set,94         m4#L199" id="L199" 313 alin4"#L2341"L207" cldddddddddaaaa3236t_* (1)29n !ass="sr23 c i_gmarcL82e=evict2ing     L If RECLAIM_SWAP _29set,94 6       m4    2934 class=29f=3s"L824>  8341tline" name="L82">  82<2a>  * (2)      >32part9ofaamem>294L82VMA     L If RECLAIM_SWAP _29set,94     name=41"nr_zonemlinep-sc
3me="94o2073417" cldddddddddaaaa3238t_perc      L If RECLAIM_SWAP _29set,94     name=4=2deronelinep= mm/v3s=29a4hre334  >321e/linux/in29a h>293asca2dat_o weird 29an >290c_gfp_" i*_4_pa"L14icc4e" new_ocan>32p75838ercp34ref/v4 >284sfor>318tio _> 213293fp_" id"L17sgnedplo 2934 clap_" id="29="m>29fp_" id"L17sgnedplo 2934 cleltad im_ststsss=">delta=4Nsysctl_2l4_unm29p9d_rom>2=_pa4213   s cla/vmsc4hr32a> >324sonabls eo  alume, ne" na4e#L20421om>#def82<2odeltad /0 ne" name3"L8223 c i__e=evict2ingercp31 out hrefs3 c i__e=evict2ing} n=p ; ; ) name="L5inep_s3 c i_
<2841 class=23inep_s3 c i_} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clescpscan.c#L18/0 ne" name3"L82P293M>294L88ef=>286 c+codeP293M>294L8} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clercp31uestpof a similar=or4hstpclass=4apd    nvoid *, 3224reset dpg_data_t3"+cZO3113929/v4m/vmigrows4beyond efis3perc82<  29ef4n207"429a8L1it=2de p ; ; ) nam2="L574m2938de>324a.........*"li3225t_percp42e=_p4ge" or#ifdef_t"L13929/vm>293CONFIG_SHMEM id"L17sgnedploCONFIG_SHMEMa8L1it=2de p ; ; ) nam2="L574m        m4code=_page" balanced_or324co>324aterms143" class+codezonsysc/*      L If RECLAIM_SWAP _29set,94mstpclass=4b_rom>2=_pa 2134<293242tline" name="L82">  82<2a>  * check_ass>_e=evict2inglinep= - checkew me#L    evict2iility9o+limo">  823 cropries=u#L2s9lru ">       L If RECLAIM_SWAP _29set,94m    name=4+code"L14icc" class+codez4nincl427" cldddddddddaaaa3238t_perc  @    s:f82<2oarrata_few me#L 82check     L If RECLAIM_SWAP _29set,94m    name=4w_orderline> n     unm29p4d_fi 42linux/in29a h>292ascan.3aa32 r@o linep=:f82lude/linuxw me#L 82check     L If RECLAIM_SWAP _29set,94mpa"L14icc43d    n, 292ascan.3#L1 *     L If RECLAIM_SWAP _29set,94_KERNei a_429p9d=_pa  82     r  Checksew me#L    evict2iility9o+limo">29o3eml()ita_tg cropries=ulru ">  til=snr_likeen77  8232funci2323SysV IPC SHM_UN2905    ls eo  alume4 ne" 43"> >32l9aom>2905    skidde=_ dat_o weird 29an >290c_gfp_" i*_4aaaa3235t_4ercp32143" classcpumaskli4ep*,343ck eovoidee=2derline, mm/check_ass>_e=evict2inglinep=  +code=_page" nheck_ass>_e=evict2inglinep=gline, mgfp_t"L13929/vm>293fp_" id"L17sgnedplo 2934 clapp_" id="29="m>29fp_"=  +code=_page" 9ef=>2=2/vxfor>318tio _> 213#L18ne32lin>   s cla/vmsc4Rstpclass=4l29LRU lists becausf"L7" 4d="L243a>   #L Write, mgfp_t"L13929/vm>293lruvee="L82} whpotve=lruvee4 clap_" id="29="m>29lruvee="L82} whpotve=lruvee4 clrcp31uestpof a similar=or4cas ANON d4d als95nodFI *_MAPPEDwe7"4id="L432924 clas 82294oup_gfp_" id"L17sc+code=_p1 oeezabls    n"> 3  d> 213
<2841 class=2318at_percp31;ounters are4==_page" n4percp32.c#L131"cpumask_em4ty   43 d>324e/linuxfor>318tio _> 21334laLew_orderline> nfi a_m24p9d" 43=2..* new re1for>318tio _> 21334ppstructp, 318tio _> 213   s cla/vmsc4ststsss=">4sref)canddcf=  name="es a42dero44nG" c29f=">2936    i+, mgfp_t"L13929/vm>293fp_" id"L17sgnedplo 2934 clap_" id="29="m>29fp_" id"L17sgnedplo 2934 cl1 oeezabls    n"> fp_"=  +code=_page" 9ef=>2=2/[318tio _> 213286 cge" new_ord4rline44ck eo sleep31for>318t/a=_pa)=p 2 ; ) 2ame="8gfp_tpgdatemaitingline, mgfp_" id="29="m>299ef=8gfp_tpgdatemaiting9ef=8gfpss=2318at_percp31;ounters are4m        m4_e=snddcf=  name="es awe14"> 2144 id="L207" cldddddddddaaaa32>4/a/vmscan.4#L18+codezone_id3247t_per4p32t 44a>   #L Writeoutse=sn318tio _> 2132905    ls eo  alume4 ne" 44d="L207" clddddddddda_" id="29="m>299ef=8gfp_tpgdatemaiting9ef=8gfpss=21 oeezabls    n"> fp_"ef/vm>2938NUL=pfor=pfp_"ef/vm} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clercp31uestpof a similar=or4aaaa3249t_4ercp32y doesn't need 4emor344new re177"> 177  82<3a>  P31r_percp32 manage52873259t_perc#L18ne32lin>   s cla/vmsc4sep32=_p>3429e=snr_arM d="Lide89d2074 id="44t_percp31ass+codezone77   s cla/vmsc4O291vwise 4we2have>295worry aboun=2.4* new45" cldddddddddaaaa321111111111ddddddda_" id="29="m>29sp   29>294_irqcp32 manage5287sp   29>294_irq} n=pef="+code=list_32 clinimep=32g2     2932me=>3262ge" balanced_orlru=>294="L82} whpotve=lru=>2944 clercp31uestpof a similar=or4     unm2949d_fi a_scan.() provide.=47" id45ldddddddddaaaa32>2t_per3p32 n310wap>30i   n,4oup_gfp_" id"L17sc+code=_p1 oeezabls    n"> 9ef=8gfp_tpgdatemaiting9ef=8gfpss=2318at_percp31;ounters are4"L207" cld4dddddddaaaa3253t_percp32e4e fir45 0)"ame="L82">  8229sp   >294_irqcp32 manage5287sp   >294_irq} n=pef="+code=list_32 clinimep=32g2     2932me=>3262ge" balanced_orlru=>294="L82} whpotve=lru=>2944 clercp31uestpof a similar=or4 tstsss=">4percp32">  82     2954 clas45nG" c29f=">2936    i+dpg_data_t3"+cZO3113929/v434="_moefaom>2>
<292odpg_da4a_t="45ck eo sleep31for>318tt"L13929/vm>293lruvee="L82} whpotve=lruvee4 clad="L143" classre30em_cgroupI *_PAlruvee="L82} whpotve=0em_cgroupI *_PAlruvee} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clfneezabls    n"> _percp32 manage52873259t_percan.c#L136SLAB is>needABt4m_ststsss=4>nr_e=snddcf=  name="es a4e134 h29com>294   3232l_percpu_ehres4old  45a>   #L Writeoutse=snL82"/0 ne" name3"L82P293LRU hrelsep ; ; ) P293LRU} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clec||n/0 ne" name3"L82P293U=evict2ingercp31 out hrefP293U=evict2ing} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clesL207" cldddddddddaaaa32>4 as ANON d4>nr_e=snddcf=  name="es a4e13needABt4maaa3249t_428comment"> *name="L82"> 48232an.c#L136SLAB is>needABt4mep32=_p>34dirtyse=snr_from d="Lide84m>28 45t_percp31ass+codezonerinkfinux/3i2_li30M9ef=_evict2ing
<2841 class=23inep_evict2inggline ; ; ) name="L5inep id"L17sgnedplo 2934 clesc#L18ne32lin>   s cla/vmsc4cni      n4me="_moefaom>2>
<292odpg_4ata_t46" cldddddddddaaaa321111111111enumreezabls    n"> lru=">  ="L82} whpotve=lru=>>    rline             lru="L82} whpotve=lruss=21 oeezabls    n"> fp_"elru=base_typg
<2841 class=23inep_lru=base_typg} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clercp31uestpof a similar=or4pa<+31"nr_4onemlinep-"sref)canassree4 im_s46tsss=18at_percp31;ounters are4+c32ssb>324c#L1806id="L1ls eo  alume4 ne" 46 0)"ame="L82">  8229VM_BUG_ON> 213
<2841VM_BUG_ON} n=p ; ; ) name="L5P293Activeercp31 out hrefP293Active  ine ; ; ) name="L5inep id"L17sgnedplo 2934 clesrcp31uestpof a similar=or4ptstsss=">4e>295delta Ls=2..* new re477"> 46nG" c29f=">2936    i+aaaaaaaa_" id="29="m>29C_idrP293U=evict2ingercp31 out hrefC_idrP293U=evict2ing} n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clercp31uestpof a similar=or4pou32nee>34mm/vmscandeltad im_ststss4=">de46ck eo sleep31for>318tio2_> 21g; ; ) name="L5delI *_PA cla_lru=">  ="L82} whpotve=delI *_PA cla_lru=">  } n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clfneezabls    n"> lruvee="L82} whpotve=lruvee4 clfneezabls    n"> LRU_UNEVICT,  nnr_e=snddcf=  na4e="es46s8n > *
 21gL18ne32lins=2sad/vmscavto_lru=">  ="L82} whpotve=ad/vmscavto_lru=">  } n=p ; ; ) name="L5inep id"L17sgnedplo 2934 clfneezabls    n"> lruvee="L82} whpotve=lruvee4 clfneezabls    n"> lru="L82} whpotve=lruss=2ercp31uestpof a similar=or4ph29com>294t_=urrent_ree28n    #L Writeoutse=snnnnnnnnn318tio _> 213324a         mm/vmscan.c#L184et_3246 d>324e/linuxdpg_data_t3"+cZO3113929/v4_ep32=_p>34o/linux/in29a h>292ascan.4##L2046 id="L207" cldddddddddaaaa3274t_percp3274" id="L17328/vm>2872  3274">32747+cRECLAIM_WRIT*/<>  82<3a>  P31r_percp32 manage52873259t_perc#L18ne32lin>   s cla/vmsc4is3m/vmith4ough< name="205" id="L2054 cla.47tsss=">"sref)canassree=2derline, mm/__nla32_vm_ev5  =  +code=_page" __nla32_vm_ev5  =} n=p ; ; ) name="L5UNEVICT, 286 c+codeUNEVICT,  pgRTduu_dstpstructp, 324eep, check if=it was a=324ee>3247 0)"ame="L82">  8ssree=2derline, mm/__nla32_vm_ev5  =  +code=_page" __nla32_vm_ev5  =} n=p ; ; ) name="L5UNEVICT, 286 c+codeUNEVICT,  pggfp_n_dstpstructp, 4=2deronelinep= mm/vmscan.4#L18p47nG" c29f=">2936    i+_" id="29="m>29sp   29>294_irqcp32 manage5287sp   29>294_irq} n=pef="+code=list_32 clinimep=32g2     2932me=>3262ge" balanced_orlru=>294="L82} whpotve=lru=>2944 clercp31uestpof a similar=or4las32"> >3475#L1806id="L1ls eo  alum4, ne"474d>324e/linuxdpg_data_t3"+cZO3113929/v4Minimumg_d4ta_ne" name#L Minimumg_da4a_ne"4name#Ldpg_data_t3"+cZO3113929/v4Mh29com>294=2deronelinep= mm/vms cla4s+cod47a>   #endif1g_data_ne" name#L MinimumCONFIG_SHMEM_ dat_o weird 29an >290c_gfp_" i*_4lststsss="4a         mm/vmscan.G 82<4a>  247me#L207" id="L207" cldddddddd43
nr_a4href="+we13"> 21332codEic voidee=2derline, mm/warnegfp__e=evict2inglinep=  +code=_page" warnegfp__e=evict2inglinep=} n=pvoidsL207" cldddddddddaaaa32>4isa_    ra4>     2933 class=292
4284124707" c#L18ne32lin>   s cla/vmsc4_" id"L17141"nr_zonemlinep-h" 2+codr4ed 3248ps eh32d=">320 ne" name3"L82"rintk_oncp id"L17sgnedplo rintk_oncp} n=p ; ; ) name="L5KERN_WARNING id"L17sgnedploKERN_WARNINGe#L207" id="L207" cldddddddd4pa<+3ih pu4n.c             mm/2ass+c4dezo248ldddddddddaaaa32>2t_per3pg_data_ne" nastr i_
>"%s: Tim_sfp__e=evict2inglinep= sysctl/a13<-interfac" i_s been "at_o weird 29an >290c_gfp_" i*_4_ststih pu4n.c             mm/2aa=324ee>324<29a8L1it=2derf="+    er3pg_data_ne" nastr i_
>"dis2ingco>323lack9ofaa legitimes=uuse case.  If youei_gfp"at_o weird 29an >290c_gfp_" i*_4_tstsss=">41311sgnedploas mm/v2class4code248nG" c29f=">2936    i+aaaag_data_ne" nastr i_
>"293, p_idse sendaameemaill()ioasux-mm@kvack.org.\n"at_o wef.aThi1_gfp_" i_gfp_" i*_4c9a h29"L141311sgnedploas mm/v2calum4, ne"48ck eo sleep31for>318tio2_e=2derline, mm/c2905    +code=_page" new_orderliven if thea>
<2932 cme#L  +code=_page" ne#L4 clercp31uestpof a similar=or4_ststih pu4n.c             mm/2ag_da4a_ne"48ame#Ldpg_data_t3"+cZO3113929/v4_h29com>294 31dap>310href="+co2187t_4ercp248onns_e=snddcf=  name="es ad i4_ststsss="4 31dap>310href="+co21 82<4a>  2487" cldddddddddaaaa3238t_per       L If RECLAIM_SWAP _29set,94hin32sleep4 31dap>310href="+co219f="42936248linux/in29a h>292ascan.2#L1 *_sfp__e=evict2inglinep= [vm] sysctlei_ndler.  On demandare- _29eof     L If RECLAIM_SWAP _29set,94hsa_    ra4 ra>>     2933 clas2pu_li4ubac248d="L207" cldddddddddaaa232da*/linua13  #L    evict2ila2">  8     L If RECLAIM_SWAP _29set,94_" id"L17141"nr_zonemlinep-sc
2m>"> 413  82     r dat_o weird 29an >290c_gfp_" i*_4g eo sleep4 31dap>310href="+co2 cla/4lin3249tsss="odule8L1i2=2der29s30efs>30i gfp__e=evict2inglinep=  +code=_page" gfp__e=evict2inglinep=} n=rcp31uestpof a similar=or4istpgdat  4      2933 class=2929/vm>4938>2429a8L1for>318tio _> 21329t2ingercp31 out hreft2ing, mgvxfor>318tio _> 213 * If wriES, mgvWatchge" canyneossiAddgu419a h29"L14ercp32143" classcpumcodez4nCON249ck eo sleep31for>318tio2_> 21111voidee=2derline, mm/__user  +code=_page" __user, mgfp_" id="29="m>29buffer  +code=_page" buffer, mgvWatchge" canyneossiAddgu41ststih pu4c#L1806id="L1ls eo  6t_pe4cp31249s8n > *
318tio2_e=2derline, mm/sizeorder="+code=_pagsizeor, mgfp_" id="29="m>29length="L82} whpotve=length4 clfneezabls    n"> lofforder="+code=_pagloffor, mgfp_" id="29="m>299po=  +code=_page" 9po=t_perL18ne32lin>   s cla/vmsc41h29com>294=2deronelinep= mm/vmkt31l4_>31249onns_#L18ne32lin>   s cla/vmsc4s    name=4=2deronelinep= mm/vmk 82<4a>  2497s eh32d=">320 ne" name3"L82warnegfp__e=evict2inglinep=  +code=_page" warnegfp__e=evict2inglinep=} n=percp31uestpof a similar=or41in32sleep4=2deronelinep= mm/vmk9f="429362498s eh32d=">320 ne" name3"L82namc_doui2=2vec_minmax id"L17sgnedplo rmc_doui2=2vec_minmax} n=p ; ; ) name="L5t2ingercp31 out hreft2ing, mgvx318tio _> 213 * If wriES, mgvx318tio _> 213 length="L82} whpotve=length4 clfneezabls    n"> 9po=  +code=_page" 9po=t_perrcp31uestpof a similar=or41sa_    ra4eep, check if=it wass bel4w"L72499s eh32d=">320 ne" name3"L82gfp__e=evict2inglinep=  +code=_page" gfp__e=evict2inglinep=} n=1 o          str3" classPF_ME5     name=5=2deronelinep= mm/v3 from5and 350+cRECLAIM_WRIdeltad           str3" classPF_ME5 1   name=5=31dap>310href="+co2 cla/5ap>3350tsss=dpg_data_t3"+cZO3113929/v5ge" class=5    2934 class=29f=3_om>25nes 350me#L Watchge" canyneossiAddgu5ALLOCu143"5classreed im_ststss3ta_t=5+cRE350aom>##ifdef_t"L13929/vm>293CONFIG_NUMAercp31 out hrefCONFIG_NUMAe#L Watchge" canyneossiAddgu5A4LOCu143"5crcp32143" classcpumcodez5perc350e" orderline, mm/v32e=_>322       L If RECLAIM_SWAP _29set,950        m5#L199" id="L199" 313"L82"5  82350"L207" cldddddddddaaaa3236t_* pere" namass="sfp__e=evict2inglinep=ass="mattr bute.  On demandare- _29eof     L If RECLAIM_SWAP _29set,9506       m5#2deronelinep= mm/vmkt31l5>  8350tline" name="L82">  82<2a>  * a spec31iod1" naass="srpere#L2s9e=evict2ing ">  #L    evict2ila2">  8til=snr_likeen77   #L S<29se=snr_outsd3iinr dat_o weird 29an >290c_gfp_" i*_5     name=5=2deronelinep= mm/v3"882"5  82350 d>32an.c#L136SLAB is>needABt5 9   name=5=ep, check if=it wass bel5 >3235/linuxcodEic 0 ne" name3"L82gsizeorder="+code=_pagssizeor, mgf0 ne" name3"L8218seegfp__e=evict2ingl" nader="+code=_pag18seegfp__e=evict2ingl" na} n=p/a=_pa)=p 2 ; ) 2ame="devicader="+code=_pagdevica, mgfp_" id="29="m>29devder="+code=_pagdev, mgvWatchge" canyneossiAddgu5     name=5=2deronelinep= mm/v3=27" 5d="L351" cldddddddddaaaa321111111111dddddddaaaaaaaaaaa/a=_pa)=p 2 ; ) 2ame="devica_attr buteder="+code=_pagdevica_attr bute, mgfp_" id="29="m>29attr="L82} whpotve=attr, mgvWatchge" canyneossiAddgu5 1   name=51"nr_zonemlinep-sc
3" id=5L207351ldddddddddaaaa32>2t_per3p32 nnnnnnnnnnnnnnnnnnncharfp_" id="29="m>29buf  +code=_page" buft_perL18ne32lin>   s cla/vmsc5 e" class=5    2934 class=29f=3ss=295 hre351r_pa"#L18ne32lin>   s cla/vmsc5r=from and5skips eh31 =">3191a3 ha325ou>33513s eh32d=">320 ne" name3"L82warnegfp__e=evict2inglinep=  +code=_page" warnegfp__e=evict2inglinep=} n=percp31uestpof a similar=or5 r31dae>315o/linux/in29a h>2923re1775> 173514cRECLAIM_WRIdeltad _" id="29="m>29sprintf  +code=_page" sprintf} n=p ; ; ) name="L5buf  +code=_page" buft_pe,ag_data_ne" nastr i_
>"0\n"at_o we);=">320_data_ne" name#L Minimumalways zero;ashould"fit...r dat_o weird 29an >290c_gfp_" i*_5         m5#L199" id="L199" 313 alin5"#L2351ame#Ldpg_data_t3"+cZO3113929/v5 6       m5    2934 class=29f=3s"L825>  8351onns_e=snddcf=  name="es ad i5     name=51"nr_zonemlinep-sc
3me="95o2073517" clcodEic 0 ne" name3"L82gsizeorder="+code=_pagssizeor, mgf0 ne" name3"L82wriESegfp__e=evict2ingl" nader="+code=_pagwriESegfp__e=evict2ingl" na} n=p/a=_pa)=p 2 ; ) 2ame="devicader="+code=_pagdevica, mgfp_" id="29="m>29devder="+code=_pagdev, mgvWatchge" canyneossiAddgu5     name=5=2deronelinep= mm/v3s=29a5hre3351new re177"> 17729attr="L82} whpotve=attr, mgvWatchge" canyneossiAddgu5 9   name=5e" new_ocan>32p75838ercp35ref/v51t_percp31ass+codezone7729buf  +code=_page" buft_pefreezabls    n"> mizeorder="+code=_pagsizeor, mgff thea>
<2932 cmeu    +code=_page" nla32t_perL18ne32lin>   s cla/vmsc5Nsysctl_2l5_unm29p9d_rom>2=_pa5213   s cla/vmsc5hr32a> >325sonabls eo  alume, ne" na5e#L2052ref=s143" class+codezon3    warnegfp__e=evict2inglinep=  +code=_page" warnegfp__e=evict2inglinep=} n=percp31uestpof a similar=or5hstpclass=5apd    nvoid *, 322522cRECLAIM_WRIdeltad 1rcp31uestpof a similar=or5h=from and5beyond efis3perc82<  29ef5n207"529a8L1dpg_data_t3"+cZO3113929/v5m2938de>325a.........*"li3225t_percp52e=_p52a>5t_percp32ven3if th5m        m5code=_page" balanced_or325co>3252 id="L207" cldddddddddaaaa32>5mstpclass=5b_rom>2=_pa 2135<293252tlinecodEic 0 ne" name3"L82DEVICE_ATTR  +code=_page" DEVICE_ATTR} n=p ; ; ) name="L5gfp__e=evict2inglinep=  +code=_page" gfp__e=evict2inglinep=} n=freezabls    n"> S_IRUGO  +code=_page" S_IRUGOcRECL"+codGFP_KERNELidS_IWUSR  +code=_page" S_IWUSR, mgvWatchge" canyneossiAddgu5m    name=5+code"L14icc" class+codez5nincl52d="L207" cldddddddddaaaaaaaaa1s30efs>30i 0,a18seegfp__e=evict2ingl" nader="+code=_pag18seegfp__e=evict2ingl" na} n=vWatchge" canyneossiAddgu5m    name=5w_orderline> n     unm29p5d_fi 52new re177"> 177318tio _> 213  erl" nader="+code=_paggfp__e=evict2inglreg>  erl" na} n=p/a=_pa)=p 2 ; ) 2ame="" nader="+code=_pag" na} n=fp_" id="29="m>29" nader="+code=_pag" na} n=rL18ne32lin>   s cla/vmsc5RNei a_lru5_pa   s cla/vmsc5Rstpclass=5nassree=2derline, mm/vmsc5nx   532cRECLAIM_WRIdeltad =p 2 ; ) 2ame="devica_c18sESe mscder="+code=_pagdevica_c18sESe msc} n=pef="+code=list_32 cl" nader="+code=_pag" na} n=ven if thea>
<2932 cdevder="+code=_pagdev, mgv ef="+code=list_32 cldev_attregfp__e=evict2inglinep=  +code=_page" dev_attregfp__e=evict2inglinep=} n=ercp31uestpof a similar=or5R/vmigrows59aom>2905    ls eo  alume5 ne" 539a8L1dpg_data_t3"+cZO3113929/v5aaaa3235t_5ercp32143" classcpumaskli5ep*,353a>5t_percp32ven3if th5R        m5_paei a mappe9ned lsmth9v507" i53s8n >voidee=2derline, mm/gfp__e=evict2ingl29  g>  erl" nader="+code=_paggfp__e=evict2ingl29  g>  erl" na} n=p/a=_pa)=p 2 ; ) 2ame="" nader="+code=_pag" na} n=fp_" id="29="m>29" nader="+code=_pag" na} n=rL18ne32lin>   s cla/vmsc5Rstpclass=5l29LRU lists becausf"L7" 5d="L253onns_#L18ne32lin>   s cla/vmsc5cas ANON d5d als95nodFI *_MAPPEDwe7"5id="L537s eh32d=">320 ne" name3"L82devica_32asvSe mscder="+code=_pagdevica_32asvSe msc} n=pef="+code=list_32 cl" nader="+code=_pag" na} n=ven if thea>
<2932 cdevder="+code=_pagdev, mgv ef="+code=list_32 cldev_attregfp__e=evict2inglinep=  +code=_page" dev_attregfp__e=evict2inglinep=} n=ercp31uestpof a similar=or5R    name=5percp32.c#L131"cpumask_em5ty   53 d>32dpg_data_t3"+cZO3113929/v5a9   name=5laLew_orderline> nfi a_m25p9d" 53=2..*#endifpg_data_t3"+cZO3113929/v5msc32ren>35ppstructp, 
Tim_original LXR softw92asbyita_tg_data_t3http://sourceforge.net/projects/lxr">LXR me#Lunity, mgv te>32experiL Mial vers2lxr@oasux.no, mg.
lxr.oasux.no kindly host+cobytg_data_t3http://www.redpill-oaspro.no">Redpill Laspro AS, mgv provid/linuxLasuxnconsult i_gandaoper i2