lkml.org 
[lkml]   [2009]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 4/4] Memory controller soft limit reclaim on contention (v3)
    Date
    > * KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> [2009-03-02 12:08:01]:
    >
    > > Hi Balbir,
    > >
    > > > @@ -2015,9 +2016,12 @@ static int kswapd(void *p)
    > > > finish_wait(&pgdat->kswapd_wait, &wait);
    > > >
    > > > if (!try_to_freeze()) {
    > > > + struct zonelist *zl = pgdat->node_zonelists;
    > > > /* We can speed up thawing tasks if we don't call
    > > > * balance_pgdat after returning from the refrigerator
    > > > */
    > > > + if (!order)
    > > > + mem_cgroup_soft_limit_reclaim(zl, GFP_KERNEL);
    > > > balance_pgdat(pgdat, order);
    > > > }
    > > > }
    > >
    > > kswapd's roll is increasing free pages until zone->pages_high in "own node".
    > > mem_cgroup_soft_limit_reclaim() free one (or more) exceed page in any node.
    > >
    > > Oh, well.
    > > I think it is not consistency.
    > >
    > > if mem_cgroup_soft_limit_reclaim() is aware to target node and its pages_high,
    > > I'm glad.
    >
    > Yes, correct the role of kswapd is to keep increasing free pages until
    > zone->pages_high and the first set of pages to consider is the memory
    > controller over their soft limits. We pass the zonelist to ensure that
    > while doing soft reclaim, we focus on the zonelist associated with the
    > node. Kamezawa had concernes over calling the soft limit reclaim from
    > __alloc_pages_internal(), did you prefer that call path?

    I read your patch again.
    So, mem_cgroup_soft_limit_reclaim() caller place seems in balance_pgdat() is better.

    Please imazine most bad scenario.
    CPU0 (kswapd) take to continue shrinking.
    CPU1 take another activity and charge memcg conteniously.
    At that time, balance_pgdat() don't exit very long time. then
    mem_cgroup_soft_limit_reclaim() is never called.

    In ideal, if another cpu take another charge, kswapd should shrink
    soft limit again.


    btw, I don't like "if (!order)" condition. memcg soft limit sould be
    always shrinked although
    it's the order of because wakeup_kswapd() argument is merely hint.

    another process want another order.





    \
     
     \ /
      Last update: 2009-03-03 03:47    [W:0.031 / U:30.996 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site