lkml.org 
[lkml]   [2015]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectNewbie's question: memory allocation when reclaiming memory
    From
    Date
    May I ask a newbie question? Say, there is some amount of memory pages
    which can be reclaimed if they are flushed to storage. And lower layer
    might issue memory allocation request in a way which won't cause reclaim
    deadlock (e.g. using GFP_NOFS or GFP_NOIO) when flushing to storage,
    isn't it?

    What I'm worrying is a dependency that __GFP_FS allocation requests think
    that there are reclaimable pages and therefore there is no need to call
    out_of_memory(); and GFP_NOFS allocation requests which the __GFP_FS
    allocation requests depend on (in order to flush to storage) is waiting
    for GFP_NOIO allocation requests; and the GFP_NOIO allocation requests
    which the GFP_NOFS allocation requests depend on (in order to flush to
    storage) are waiting for memory pages to be reclaimed without calling
    out_of_memory(); because gfp_to_alloc_flags() does not favor GFP_NOIO over
    GFP_NOFS nor GFP_NOFS over __GFP_FS which will throttle all allocations
    at the same watermark level.

    How do we guarantee that GFP_NOFS/GFP_NOIO allocations make forward
    progress? What mechanism guarantees that memory pages which __GFP_FS
    allocation requests are waiting for are reclaimed? I assume that there
    is some mechanism; otherwise we can hit silent livelock, can't we?


    \
     
     \ /
      Last update: 2015-10-26 13:01    [W:2.854 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site