Lines Matching refs:shrinker
195 int register_shrinker(struct shrinker *shrinker) in register_shrinker() argument
197 size_t size = sizeof(*shrinker->nr_deferred); in register_shrinker()
205 shrinker->flags &= ~SHRINKER_NUMA_AWARE; in register_shrinker()
207 if (shrinker->flags & SHRINKER_NUMA_AWARE) in register_shrinker()
210 shrinker->nr_deferred = kzalloc(size, GFP_KERNEL); in register_shrinker()
211 if (!shrinker->nr_deferred) in register_shrinker()
215 list_add_tail(&shrinker->list, &shrinker_list); in register_shrinker()
224 void unregister_shrinker(struct shrinker *shrinker) in unregister_shrinker() argument
227 list_del(&shrinker->list); in unregister_shrinker()
229 kfree(shrinker->nr_deferred); in unregister_shrinker()
236 struct shrinker *shrinker, in do_shrink_slab() argument
247 long batch_size = shrinker->batch ? shrinker->batch in do_shrink_slab()
250 freeable = shrinker->count_objects(shrinker, shrinkctl); in do_shrink_slab()
259 nr = atomic_long_xchg(&shrinker->nr_deferred[nid], 0); in do_shrink_slab()
262 delta = (4 * nr_scanned) / shrinker->seeks; in do_shrink_slab()
268 shrinker->scan_objects, total_scan); in do_shrink_slab()
295 trace_mm_shrink_slab_start(shrinker, shrinkctl, nr, in do_shrink_slab()
320 ret = shrinker->scan_objects(shrinker, shrinkctl); in do_shrink_slab()
338 &shrinker->nr_deferred[nid]); in do_shrink_slab()
340 new_nr = atomic_long_read(&shrinker->nr_deferred[nid]); in do_shrink_slab()
342 trace_mm_shrink_slab_end(shrinker, nid, freed, nr, new_nr, total_scan); in do_shrink_slab()
380 struct shrinker *shrinker; in shrink_slab() local
400 list_for_each_entry(shrinker, &shrinker_list, list) { in shrink_slab()
407 if (memcg && !(shrinker->flags & SHRINKER_MEMCG_AWARE)) in shrink_slab()
410 if (!(shrinker->flags & SHRINKER_NUMA_AWARE)) in shrink_slab()
413 freed += do_shrink_slab(&sc, shrinker, nr_scanned, nr_eligible); in shrink_slab()