lkml.org 
[lkml]   [2018]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: dm bufio: Reduce dm_bufio_lock contention
    On Mon 18-06-18 18:11:26, Mikulas Patocka wrote:
    [...]
    > I grepped the kernel for __GFP_NORETRY and triaged them. I found 16 cases
    > without a fallback - those are bugs that make various functions randomly
    > return -ENOMEM.

    Well, maybe those are just optimistic attempts to allocate memory and
    have a fallback somewhere else. So I would be careful calling them
    outright bugs. But maybe you are right.

    > Most of the callers provide callback.
    >
    > There is another strange flag - __GFP_RETRY_MAYFAIL - it provides two
    > different functions - if the allocation is larger than
    > PAGE_ALLOC_COSTLY_ORDER, it retries the allocation as if it were smaller.
    > If the allocations is smaller than PAGE_ALLOC_COSTLY_ORDER,
    > __GFP_RETRY_MAYFAIL will avoid the oom killer (larger order allocations
    > don't trigger the oom killer at all).

    Well, the primary purpose of this flag is to provide a consistent
    failure behavior for all requests regardless of the size.

    > So, perhaps __GFP_RETRY_MAYFAIL could be used instead of __GFP_NORETRY in
    > the cases where the caller wants to avoid trigerring the oom killer (the
    > problem is that __GFP_NORETRY causes random failure even in no-oom
    > situations but __GFP_RETRY_MAYFAIL doesn't).

    myabe yes.

    > So my suggestion is - fix these obvious bugs when someone allocates memory
    > with __GFP_NORETRY without any fallback - and then, __GFP_NORETRY could be
    > just changed to return NULL instead of sleeping.

    No real objection to fixing wrong __GFP_NORETRY usage. But __GFP_NORETRY
    can sleep. Nothing will really change in that regards. It does a
    reclaim and that _might_ sleep.

    But seriously, isn't the best way around the throttling issue to use
    PF_LESS_THROTTLE?
    --
    Michal Hocko
    SUSE Labs

    \
     
     \ /
      Last update: 2018-06-19 12:44    [W:2.425 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site