lkml.org 
[lkml]   [2013]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 5/6] mm: Fold page->_last_nid into page->flags where possible
    On Tue, 22 Jan 2013 17:12:41 +0000
    Mel Gorman <mgorman@suse.de> wrote:

    > From: Peter Zijlstra <a.p.zijlstra@chello.nl>
    >
    > page->_last_nid fits into page->flags on 64-bit. The unlikely 32-bit NUMA
    > configuration with NUMA Balancing will still need an extra page field.
    > As Peter notes "Completely dropping 32bit support for CONFIG_NUMA_BALANCING
    > would simplify things, but it would also remove the warning if we grow
    > enough 64bit only page-flags to push the last-cpu out."

    How much space remains in the 64-bit page->flags?

    Was this the best possible use of the remaining space?

    It's good that we can undo this later by flipping
    LAST_NID_NOT_IN_PAGE_FLAGS.

    > [mgorman@suse.de: Minor modifications]
    > Signed-off-by: Mel Gorman <mgorman@suse.de>

    Several of these patches are missing signoffs (Peter and Hugh).

    >
    > ...
    >
    > +static inline int page_last_nid(struct page *page)
    > +{
    > + return (page->flags >> LAST_NID_PGSHIFT) & LAST_NID_MASK;
    > +}
    > +
    > +static inline int page_xchg_last_nid(struct page *page, int nid)
    > +{
    > + unsigned long old_flags, flags;
    > + int last_nid;
    > +
    > + do {
    > + old_flags = flags = page->flags;
    > + last_nid = page_last_nid(page);
    > +
    > + flags &= ~(LAST_NID_MASK << LAST_NID_PGSHIFT);
    > + flags |= (nid & LAST_NID_MASK) << LAST_NID_PGSHIFT;
    > + } while (unlikely(cmpxchg(&page->flags, old_flags, flags) != old_flags));
    > +
    > + return last_nid;
    > +}
    > +
    > +static inline void reset_page_last_nid(struct page *page)
    > +{
    > + page_xchg_last_nid(page, (1 << LAST_NID_SHIFT) - 1);
    > +}

    page_xchg_last_nid() and reset_page_last_nid() are getting nuttily
    large. Please investigate uninlining them?

    reset_page_last_nid() is poorly named. page_reset_last_nid() would be
    better, and consistent.




    \
     
     \ /
      Last update: 2013-01-23 00:22    [W:9.012 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site