Lines Matching refs:shrinker

226 int register_shrinker(struct shrinker *shrinker)  in register_shrinker()  argument
228 size_t size = sizeof(*shrinker->nr_deferred); in register_shrinker()
236 shrinker->flags &= ~SHRINKER_NUMA_AWARE; in register_shrinker()
238 if (shrinker->flags & SHRINKER_NUMA_AWARE) in register_shrinker()
241 shrinker->nr_deferred = kzalloc(size, GFP_KERNEL); in register_shrinker()
242 if (!shrinker->nr_deferred) in register_shrinker()
246 list_add_tail(&shrinker->list, &shrinker_list); in register_shrinker()
255 void unregister_shrinker(struct shrinker *shrinker) in unregister_shrinker() argument
258 list_del(&shrinker->list); in unregister_shrinker()
260 kfree(shrinker->nr_deferred); in unregister_shrinker()
267 struct shrinker *shrinker, in do_shrink_slab() argument
278 long batch_size = shrinker->batch ? shrinker->batch in do_shrink_slab()
281 freeable = shrinker->count_objects(shrinker, shrinkctl); in do_shrink_slab()
290 nr = atomic_long_xchg(&shrinker->nr_deferred[nid], 0); in do_shrink_slab()
293 delta = (4 * nr_scanned) / shrinker->seeks; in do_shrink_slab()
299 shrinker->scan_objects, total_scan); in do_shrink_slab()
326 trace_mm_shrink_slab_start(shrinker, shrinkctl, nr, in do_shrink_slab()
351 ret = shrinker->scan_objects(shrinker, shrinkctl); in do_shrink_slab()
369 &shrinker->nr_deferred[nid]); in do_shrink_slab()
371 new_nr = atomic_long_read(&shrinker->nr_deferred[nid]); in do_shrink_slab()
373 trace_mm_shrink_slab_end(shrinker, nid, freed, nr, new_nr, total_scan); in do_shrink_slab()
411 struct shrinker *shrinker; in shrink_slab() local
431 list_for_each_entry(shrinker, &shrinker_list, list) { in shrink_slab()
438 if (memcg && !(shrinker->flags & SHRINKER_MEMCG_AWARE)) in shrink_slab()
441 if (!(shrinker->flags & SHRINKER_NUMA_AWARE)) in shrink_slab()
444 freed += do_shrink_slab(&sc, shrinker, nr_scanned, nr_eligible); in shrink_slab()