[PATCH] drm/gem: Mark pinned pages as unevictable
Kuo-Hsin Yang
vovoy at chromium.org
Fri Dec 14 10:09:11 UTC 2018
On Fri, Dec 14, 2018 at 5:51 PM Chris Wilson <chris at chris-wilson.co.uk> wrote:
>
> Quoting Kuo-Hsin Yang (2018-12-14 09:33:19)
> > On Fri, Dec 14, 2018 at 4:59 PM Chris Wilson <chris at chris-wilson.co.uk> wrote:
> > >
> > >
> > > Do you have a driver in mind (msm?) to demonstrate the use case?
> >
> > On Samsung Chromebook Plus, the drm/rockchip driver may call
> > rockchip_gem_get_pages()/drm_gem_get_pages() to pin a lot of pages,
> > breaking the page reclaim mechanism and causing oom-killer invocation.
>
> Hmm, but this doesn't change the unavailability of the pages, just how
> much work the shrinker must do scanning the evictable lists containing
> GEM pages to no avail. So it won't prevent an oom by itself because
> rockchip will still be holding the pages.
>
> Or?
When the size of a zone is 4GB, the inactive_ratio is 5. If all pages
in the inactive_anon are pinned and active_anon / inactive_anon < 5,
page reclaim would only scan inactive_anon due to inactive_ratio. It
breaks page reclaim when the rockchip driver only pins about 1/6 of
the anon lru pages. If the pinned pages are marked unevictable, the
oom-killer would be invoked when anon lru is close to 0.
An example dmesg with oom-killer invocation shows there are still a
lot of anon lru pages:
[ 516.170949] TaskSchedulerFo invoked oom-killer: gfp_mask=0x24200ca,
order=0, oom_score_adj=300
...
[ 516.211085] Mem-Info:
[ 516.211116] DMA free:48816kB min:45056kB low:56320kB high:67584kB
active_anon:1453484kB inactive_anon:309284kB active_file:208808kB
inactive_file:177308kB unevictable:0kB isolated(anon):3200kB
isolated(file):0kB present:4059136kB managed:3904852kB mlocked:0kB
dirty:0kB writeback:0kB mapped:245000kB shmem:323300kB
slab_reclaimable:43540kB slab_unreclaimable:87896kB
kernel_stack:31520kB pagetables:59440kB unstable:0kB bounce:0kB
free_pcp:588kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB
pages_scanned:10977908 all_unreclaimable? yes
More information about the dri-devel
mailing list