lkml.org 
[lkml]   [2012]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subjectquestion on NUMA page migration
    Hi Andrea, Peter,

    I have a question on page refcounting in your NUMA
    page migration code.

    In Peter's case, I wonder why you introduce a new
    MIGRATE_FAULT migration mode. If the normal page
    migration / compaction logic can do without taking
    an extra reference count, why does your code need it?

    In Andrea's case, we have a comment suggesting an
    extra refcount is needed, immediately followed by
    a put_page:

    /*
    * Pin the head subpage at least until the first
    * __isolate_lru_page succeeds (__isolate_lru_page pins it
    * again when it succeeds). If we unpin before
    * __isolate_lru_page successd, the page could be freed and
    * reallocated out from under us. Thus our previous checks on
    * the page, and the split_huge_page, would be worthless.
    *
    * We really only need to do this if "ret > 0" but it doesn't
    * hurt to do it unconditionally as nobody can reference
    * "page" anymore after this and so we can avoid an "if (ret >
    * 0)" branch here.
    */
    put_page(page);

    This also confuses me.

    If we do not need the extra refcount (and I do not
    understand why NUMA migrate-on-fault needs one more
    refcount than normal page migration), we can get
    rid of the MIGRATE_FAULT mode.

    If we do need the extra refcount, why is normal
    page migration safe? :)

    --
    All rights reversed


    \
     
     \ /
      Last update: 2012-10-19 18:41    [W:3.618 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site