lkml.org 
[lkml]   [2016]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/5] radix-tree: account radix_tree_node to memory cgroup
    On Sun, Feb 07, 2016 at 08:27:34PM +0300, Vladimir Davydov wrote:
    > Allocation of radix_tree_node objects can be easily triggered from
    > userspace, so we should account them to memory cgroup. Besides, we need
    > them accounted for making shadow node shrinker per memcg (see
    > mm/workingset.c).
    >
    > A tricky thing about accounting radix_tree_node objects is that they are
    > mostly allocated through radix_tree_preload(), so we can't just set
    > SLAB_ACCOUNT for radix_tree_node_cachep - that would likely result in a
    > lot of unrelated cgroups using objects from each other's caches.
    >
    > One way to overcome this would be making radix tree preloads per memcg,
    > but that would probably look cumbersome and overcomplicated.
    >
    > Instead, we make radix_tree_node_alloc() first try to allocate from the
    > cache with __GFP_ACCOUNT, no matter if the caller has preloaded or not,
    > and only if it fails fall back on using per cpu preloads. This should
    > make most allocations accounted.
    >
    > Signed-off-by: Vladimir Davydov <vdavydov@virtuozzo.com>

    Acked-by: Johannes Weiner <hannes@cmpxchg.org>

    I'm not too stoked about the extra slab call. But the preload call
    allocates nodes for the worst-case insertion, so you are absolutely
    right that charging there would not make sense for cgroup ownership.
    And I can't think of anything better to do here.

    \
     
     \ /
      Last update: 2016-02-08 07:41    [W:6.137 / U:2.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site