lkml.org 
[lkml]   [2017]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [v10 3/6] mm, oom: cgroup-aware OOM killer
    > +
    > +static void select_victim_memcg(struct mem_cgroup *root, struct oom_control *oc)
    > +{
    > + struct mem_cgroup *iter;
    > +
    > + oc->chosen_memcg = NULL;
    > + oc->chosen_points = 0;
    > +
    > + /*
    > + * The oom_score is calculated for leaf memory cgroups (including
    > + * the root memcg).
    > + */
    > + rcu_read_lock();
    > + for_each_mem_cgroup_tree(iter, root) {
    > + long score;
    > +
    > + if (memcg_has_children(iter))
    > + continue;

    && iter != root_mem_cgroup ?

    > +
    > + score = oom_evaluate_memcg(iter, oc->nodemask, oc->totalpages);
    > +
    > + /*
    > + * Ignore empty and non-eligible memory cgroups.
    > + */
    > + if (score == 0)
    > + continue;
    > +
    > + /*
    > + * If there are inflight OOM victims, we don't need
    > + * to look further for new victims.
    > + */
    > + if (score == -1) {
    > + oc->chosen_memcg = INFLIGHT_VICTIM;
    > + mem_cgroup_iter_break(root, iter);
    > + break;
    > + }
    > +

    Shouldn't there be a CSS_ONLINE check? Also instead of css_get at the
    end why not css_tryget_online() here and css_put for the previous
    selected one.

    > + if (score > oc->chosen_points) {
    > + oc->chosen_points = score;
    > + oc->chosen_memcg = iter;
    > + }
    > + }
    > +
    > + if (oc->chosen_memcg && oc->chosen_memcg != INFLIGHT_VICTIM)
    > + css_get(&oc->chosen_memcg->css);
    > +
    > + rcu_read_unlock();
    > +}
    > +

    \
     
     \ /
      Last update: 2017-10-04 21:49    [W:2.695 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site