[lkml]   [2012]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[PATCH v3 00/28] kmem limitation for memcg
    Hello All,

    This is my new take for the memcg kmem accounting. This should merge
    all of the previous comments from you, plus fix a bunch of bugs.

    At this point, I consider the series pretty mature. Since last submission
    2 weeks ago, I focused on broadening the testing coverage. Some bugs were
    fixed, but that of course doesn't mean no bugs exist.

    I believe some of the early patches here are already in some trees around.
    I don't know who should pick this, so if everyone agrees with what's in here,
    please just ack them and tell me which tree I should aim for (-mm? Hocko's?)
    and I'll rebase it.

    I should point out again that most, if not all, of the code in the caches
    are wrapped in static_key areas, meaning they will be completely patched out
    until the first limit is set. Enabling and disabling of static_keys incorporate
    the last fixes for sock memcg, and should be pretty robust.

    I also put a lot of effort, as you will all see, in the proper separation
    of the patches, so the review process is made as easy as the complexity of
    the work allows to.

    [ v3 ]
    * fixed lockdep bugs in slab (ordering of get_online_cpus() vs slab_mutex)
    * improved style in slab and slub with less #ifdefs in-code
    * tested and fixed hierarchical accounting (memcg: propagate kmem limiting...)
    * some more small bug fixes
    * No longer using res_counter_charge_nofail for GFP_NOFAIL submissions. Those
    go to the root memcg directly.
    * reordered tests in mem_cgroup_get_kmem_cache so we exit even earlier for
    tasks in root memcg
    * no more memcg state for slub initialization
    * do_tune_cpucache will always (only after FULL) propagate to children when
    they exist.
    * slab itself will destroy the kmem_cache string for chained caches, so we
    don't need to bother with consistency between them.
    * other minor issues
    [ v2 ]
    * memcgs can be properly removed.
    * We are not charging based on current->mm->owner instead of current
    * kmem_large allocations for slub got some fixes, specially for the free case
    * A cache that is registered can be properly removed (common module case)
    even if it spans memcg children. Slab had some code for that, now it works
    well with both
    * A new mechanism for skipping allocations is proposed (patch posted
    separately already). Now instead of having kmalloc_no_account, we mark
    a region as non-accountable for memcg.

    Glauber Costa (25):
    slab: move FULL state transition to an initcall
    memcg: Always free struct memcg through schedule_work()
    slab: rename gfpflags to allocflags
    slab: use obj_size field of struct kmem_cache when not debugging
    memcg: change defines to an enum
    res_counter: don't force return value checking in
    kmem slab accounting basic infrastructure
    slab/slub: struct memcg_params
    slub: consider a memcg parameter in kmem_create_cache
    slab: pass memcg parameter to kmem_cache_create
    slub: create duplicate cache
    slab: create duplicate cache
    slub: always get the cache from its page in kfree
    memcg: kmem controller charge/uncharge infrastructure
    skip memcg kmem allocations in specified code regions
    slub: charge allocation to a memcg
    slab: per-memcg accounting of slab caches
    memcg: disable kmem code when not in use.
    memcg: destroy memcg caches
    memcg/slub: shrink dead caches
    slab: Track all the memcg children of a kmem_cache.
    slub: create slabinfo file for memcg
    slub: track all children of a kmem cache
    memcg: propagate kmem limiting information to children
    Documentation: add documentation for slab tracker for memcg

    Suleiman Souhlal (3):
    memcg: Make it possible to use the stock for more than one page.
    memcg: Reclaim when more than one page needed.
    memcg: Per-memcg memory.kmem.slabinfo file.

    Documentation/cgroups/memory.txt | 33 ++
    include/linux/memcontrol.h | 101 +++++
    include/linux/res_counter.h | 2 +-
    include/linux/sched.h | 1 +
    include/linux/slab.h | 32 ++
    include/linux/slab_def.h | 79 ++++-
    include/linux/slub_def.h | 68 +++-
    init/Kconfig | 2 +-
    mm/memcontrol.c | 897 ++++++++++++++++++++++++++++++++++++--
    mm/slab.c | 423 +++++++++++++++---
    mm/slub.c | 282 +++++++++++-
    11 files changed, 1787 insertions(+), 133 deletions(-)


     \ /
      Last update: 2012-05-25 15:41    [W:0.025 / U:7.636 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site