lkml.org 
[lkml]   [2021]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [RFC 1/8] mm: add overflow and underflow checks for page->_refcount
    > I found some atomic_add/dec are replaced with atomic_add/dec_return,

    I am going to replace -return variants with -fetch variants, potentially -fetch

    > those helpers with return value imply a full memory barrier around it, but
    > others without return value do not. Do you have any numbers to show
    > the impact? Maybe atomic_add/dec_return_relaxed can help this.

    The generic variant uses arch_cmpxchg() for all atomic variants
    without any extra barriers. Therefore, on platforms that use generic
    implementations there won't be performance differences except for an
    extra branch that checks results when VM_BUG_ON is enabled.

    On x86 the difference between the two is the following

    atomic_add:
    lock add %eax,(%rsi)

    atomic_fetch_add:
    lock xadd %eax,(%rsi)

    atomic_fetch_add_relaxed:
    lock xadd %eax,(%rsi)

    No differences between relaxed and non relaxed variants. However, we
    used lock xadd instead of lock add. I am not sure if the performance
    difference is going to be different.

    Pasha

    \
     
     \ /
      Last update: 2021-10-27 20:24    [W:4.510 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site