| /linux-6.15/drivers/gpu/drm/xe/ |
| H A D | xe_shrinker.c | 30 struct shrinker *shrink; 225 struct xe_shrinker *shrinker = kzalloc(sizeof(*shrinker), GFP_KERNEL); in xe_shrinker_create() local 227 if (!shrinker) in xe_shrinker_create() 231 if (!shrinker->shrink) { in xe_shrinker_create() 232 kfree(shrinker); in xe_shrinker_create() 237 shrinker->xe = xe; in xe_shrinker_create() 241 shrinker->shrink->private_data = shrinker; in xe_shrinker_create() 244 return shrinker; in xe_shrinker_create() 253 xe_assert(shrinker->xe, !shrinker->shrinkable_pages); in xe_shrinker_destroy() 254 xe_assert(shrinker->xe, !shrinker->purgeable_pages); in xe_shrinker_destroy() [all …]
|
| H A D | xe_shrinker.h | 12 void xe_shrinker_mod_pages(struct xe_shrinker *shrinker, long shrinkable, long purgeable); 16 void xe_shrinker_destroy(struct xe_shrinker *shrinker);
|
| /linux-6.15/mm/ |
| H A D | shrinker.c | 216 static int shrinker_memcg_alloc(struct shrinker *shrinker) in shrinker_memcg_alloc() argument 336 static long xchg_nr_deferred(struct shrinker *shrinker, in xchg_nr_deferred() argument 372 struct shrinker *shrinker, int priority) in do_shrink_slab() argument 380 long batch_size = shrinker->batch ? shrinker->batch in do_shrink_slab() 437 ret = shrinker->scan_objects(shrinker, shrinkctl); in do_shrink_slab() 533 struct shrinker *shrinker; in shrink_slab_memcg() local 618 struct shrinker *shrinker; in shrink_slab() local 680 struct shrinker *shrinker; in shrinker_alloc() local 738 void shrinker_register(struct shrinker *shrinker) in shrinker_register() argument 763 struct shrinker *shrinker = container_of(head, struct shrinker, rcu); in shrinker_free_rcu_cb() local [all …]
|
| H A D | shrinker_debug.c | 18 static unsigned long shrinker_count_objects(struct shrinker *shrinker, in shrinker_count_objects() argument 33 nr = shrinker->count_objects(shrinker, &sc); in shrinker_count_objects() 49 struct shrinker *shrinker = m->private; in shrinker_debugfs_count_show() local 108 struct shrinker *shrinker = file->private_data; in shrinker_debugfs_scan_write() local 149 shrinker->scan_objects(shrinker, &sc); in shrinker_debugfs_scan_write() 162 int shrinker_debugfs_add(struct shrinker *shrinker) in shrinker_debugfs_add() argument 211 old = shrinker->name; in shrinker_debugfs_rename() 212 shrinker->name = new; in shrinker_debugfs_rename() 215 shrinker->name, shrinker->debugfs_id); in shrinker_debugfs_rename() 229 struct dentry *shrinker_debugfs_detach(struct shrinker *shrinker, in shrinker_debugfs_detach() argument [all …]
|
| H A D | internal.h | 1535 struct shrinker *shrinker, const char *fmt, va_list ap) in shrinker_debugfs_name_alloc() argument 1539 return shrinker->name ? 0 : -ENOMEM; in shrinker_debugfs_name_alloc() 1542 static inline void shrinker_debugfs_name_free(struct shrinker *shrinker) in shrinker_debugfs_name_free() argument 1544 kfree_const(shrinker->name); in shrinker_debugfs_name_free() 1545 shrinker->name = NULL; in shrinker_debugfs_name_free() 1548 extern int shrinker_debugfs_add(struct shrinker *shrinker); 1549 extern struct dentry *shrinker_debugfs_detach(struct shrinker *shrinker, 1554 static inline int shrinker_debugfs_add(struct shrinker *shrinker) in shrinker_debugfs_add() argument 1558 static inline int shrinker_debugfs_name_alloc(struct shrinker *shrinker, in shrinker_debugfs_name_alloc() argument 1563 static inline void shrinker_debugfs_name_free(struct shrinker *shrinker) in shrinker_debugfs_name_free() argument [all …]
|
| H A D | zswap.c | 178 static struct shrinker *zswap_shrinker; 1254 static unsigned long zswap_shrinker_scan(struct shrinker *shrinker, in zswap_shrinker_scan() argument 1275 static unsigned long zswap_shrinker_count(struct shrinker *shrinker, in zswap_shrinker_count() argument 1349 struct shrinker *shrinker; in zswap_alloc_shrinker() local 1351 shrinker = in zswap_alloc_shrinker() 1353 if (!shrinker) in zswap_alloc_shrinker() 1356 shrinker->scan_objects = zswap_shrinker_scan; in zswap_alloc_shrinker() 1357 shrinker->count_objects = zswap_shrinker_count; in zswap_alloc_shrinker() 1358 shrinker->batch = 0; in zswap_alloc_shrinker() 1359 shrinker->seeks = DEFAULT_SEEKS; in zswap_alloc_shrinker() [all …]
|
| H A D | workingset.c | 642 static unsigned long count_shadow_nodes(struct shrinker *shrinker, in count_shadow_nodes() argument 769 static unsigned long scan_shadow_nodes(struct shrinker *shrinker, in scan_shadow_nodes() argument 785 struct shrinker *workingset_shadow_shrinker; in workingset_init()
|
| H A D | zsmalloc.c | 218 struct shrinker *shrinker; member 2014 static unsigned long zs_shrinker_scan(struct shrinker *shrinker, in zs_shrinker_scan() argument 2018 struct zs_pool *pool = shrinker->private_data; in zs_shrinker_scan() 2030 static unsigned long zs_shrinker_count(struct shrinker *shrinker, in zs_shrinker_count() argument 2036 struct zs_pool *pool = shrinker->private_data; in zs_shrinker_count() 2051 shrinker_free(pool->shrinker); in zs_unregister_shrinker() 2057 if (!pool->shrinker) in zs_register_shrinker() 2060 pool->shrinker->scan_objects = zs_shrinker_scan; in zs_register_shrinker() 2062 pool->shrinker->batch = 0; in zs_register_shrinker() 2063 pool->shrinker->private_data = pool; in zs_register_shrinker() [all …]
|
| /linux-6.15/include/linux/ |
| H A D | shrinker.h | 82 struct shrinker { struct 83 unsigned long (*count_objects)(struct shrinker *, argument 85 unsigned long (*scan_objects)(struct shrinker *, argument 136 void shrinker_register(struct shrinker *shrinker); 137 void shrinker_free(struct shrinker *shrinker); 139 static inline bool shrinker_try_get(struct shrinker *shrinker) in shrinker_try_get() argument 144 static inline void shrinker_put(struct shrinker *shrinker) in shrinker_put() argument 146 if (refcount_dec_and_test(&shrinker->refcount)) in shrinker_put() 147 complete(&shrinker->done); in shrinker_put() 151 extern int __printf(2, 3) shrinker_debugfs_rename(struct shrinker *shrinker, [all …]
|
| H A D | list_lru.h | 66 struct shrinker *shrinker); 70 #define list_lru_init_memcg(lru, shrinker) \ argument 71 __list_lru_init((lru), true, shrinker) 73 static inline int list_lru_init_memcg_key(struct list_lru *lru, struct shrinker *shrinker, in list_lru_init_memcg_key() argument 79 return list_lru_init_memcg(lru, shrinker); in list_lru_init_memcg_key()
|
| /linux-6.15/drivers/gpu/drm/panfrost/ |
| H A D | panfrost_gem_shrinker.c | 19 panfrost_gem_shrinker_count(struct shrinker *shrinker, struct shrink_control *sc) in panfrost_gem_shrinker_count() argument 21 struct panfrost_device *pfdev = shrinker->private_data; in panfrost_gem_shrinker_count() 65 panfrost_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc) in panfrost_gem_shrinker_scan() argument 67 struct panfrost_device *pfdev = shrinker->private_data; in panfrost_gem_shrinker_scan() 102 pfdev->shrinker = shrinker_alloc(0, "drm-panfrost"); in panfrost_gem_shrinker_init() 103 if (!pfdev->shrinker) in panfrost_gem_shrinker_init() 107 pfdev->shrinker->scan_objects = panfrost_gem_shrinker_scan; in panfrost_gem_shrinker_init() 108 pfdev->shrinker->private_data = pfdev; in panfrost_gem_shrinker_init() 110 shrinker_register(pfdev->shrinker); in panfrost_gem_shrinker_init() 125 if (pfdev->shrinker) in panfrost_gem_shrinker_cleanup() [all …]
|
| /linux-6.15/drivers/gpu/drm/msm/ |
| H A D | msm_gem_shrinker.c | 35 msm_gem_shrinker_count(struct shrinker *shrinker, struct shrink_control *sc) in msm_gem_shrinker_count() argument 37 struct msm_drm_private *priv = shrinker->private_data; in msm_gem_shrinker_count() 100 msm_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc) in msm_gem_shrinker_scan() argument 152 if (priv->shrinker) in msm_gem_shrinker_shrink() 153 ret = msm_gem_shrinker_scan(priv->shrinker, &sc); in msm_gem_shrinker_shrink() 216 priv->shrinker = shrinker_alloc(0, "drm-msm_gem"); in msm_gem_shrinker_init() 217 if (!priv->shrinker) in msm_gem_shrinker_init() 222 priv->shrinker->private_data = priv; in msm_gem_shrinker_init() 224 shrinker_register(priv->shrinker); in msm_gem_shrinker_init() 242 if (priv->shrinker) { in msm_gem_shrinker_cleanup() [all …]
|
| /linux-6.15/drivers/gpu/drm/i915/gem/ |
| H A D | i915_gem_shrinker.c | 289 i915_gem_shrinker_count(struct shrinker *shrinker, struct shrink_control *sc) in i915_gem_shrinker_count() argument 291 struct drm_i915_private *i915 = shrinker->private_data; in i915_gem_shrinker_count() 308 i915->mm.shrinker->batch = in i915_gem_shrinker_count() 309 max((i915->mm.shrinker->batch + avg) >> 1, in i915_gem_shrinker_count() 317 i915_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc) in i915_gem_shrinker_scan() argument 431 i915->mm.shrinker = shrinker_alloc(0, "drm-i915_gem"); in i915_gem_driver_register__shrinker() 432 if (!i915->mm.shrinker) { in i915_gem_driver_register__shrinker() 437 i915->mm.shrinker->batch = 4096; in i915_gem_driver_register__shrinker() 438 i915->mm.shrinker->private_data = i915; in i915_gem_driver_register__shrinker() 440 shrinker_register(i915->mm.shrinker); in i915_gem_driver_register__shrinker() [all …]
|
| /linux-6.15/fs/nfs/ |
| H A D | nfs42xattr.c | 980 static int __init nfs4_xattr_shrinker_init(struct shrinker **shrinker, in nfs4_xattr_shrinker_init() argument 988 if (!*shrinker) in nfs4_xattr_shrinker_init() 991 ret = list_lru_init_memcg(lru, *shrinker); in nfs4_xattr_shrinker_init() 993 shrinker_free(*shrinker); in nfs4_xattr_shrinker_init() 997 (*shrinker)->count_objects = count; in nfs4_xattr_shrinker_init() 998 (*shrinker)->scan_objects = scan; in nfs4_xattr_shrinker_init() 999 (*shrinker)->batch = batch; in nfs4_xattr_shrinker_init() 1000 (*shrinker)->seeks = seeks; in nfs4_xattr_shrinker_init() 1002 shrinker_register(*shrinker); in nfs4_xattr_shrinker_init() 1007 static void nfs4_xattr_shrinker_destroy(struct shrinker *shrinker, in nfs4_xattr_shrinker_destroy() argument [all …]
|
| /linux-6.15/Documentation/admin-guide/mm/ |
| H A D | shrinker_debugfs.rst | 9 For each shrinker registered in the system a directory in **<debugfs>/shrinker/** 10 is created. The directory's name is composed from the shrinker's name and an 13 Each shrinker directory contains **count** and **scan** files, which allow to 24 $ cd /sys/kernel/debug/shrinker/ 40 2. *Get information about a specific shrinker* 59 If the shrinker is not memcg-aware or CONFIG_MEMCG is off, 0 is printed 60 as cgroup inode id. If the shrinker is not numa-aware, 0's are printed 112 For a non-memcg-aware shrinker or on a system with no memory 116 $ cd /sys/kernel/debug/shrinker/
|
| /linux-6.15/tools/cgroup/ |
| H A D | memcg_shrinker.py | 27 for shrinker in subdirs: 28 count_path = os.path.join(root, shrinker, "count") 34 shrinkers.append((int(items[1]), shrinker, ino))
|
| /linux-6.15/drivers/virtio/ |
| H A D | virtio_balloon.c | 114 struct shrinker *shrinker; member 897 static unsigned long virtio_balloon_shrinker_scan(struct shrinker *shrinker, in virtio_balloon_shrinker_scan() argument 900 struct virtio_balloon *vb = shrinker->private_data; in virtio_balloon_shrinker_scan() 905 static unsigned long virtio_balloon_shrinker_count(struct shrinker *shrinker, in virtio_balloon_shrinker_count() argument 908 struct virtio_balloon *vb = shrinker->private_data; in virtio_balloon_shrinker_count() 929 shrinker_free(vb->shrinker); in virtio_balloon_unregister_shrinker() 934 vb->shrinker = shrinker_alloc(0, "virtio-balloon"); in virtio_balloon_register_shrinker() 935 if (!vb->shrinker) in virtio_balloon_register_shrinker() 938 vb->shrinker->scan_objects = virtio_balloon_shrinker_scan; in virtio_balloon_register_shrinker() 940 vb->shrinker->private_data = vb; in virtio_balloon_register_shrinker() [all …]
|
| /linux-6.15/drivers/misc/ |
| H A D | vmw_balloon.c | 383 struct shrinker *shrinker; member 1510 static unsigned long vmballoon_shrinker_scan(struct shrinker *shrinker, in vmballoon_shrinker_scan() argument 1552 static unsigned long vmballoon_shrinker_count(struct shrinker *shrinker, in vmballoon_shrinker_count() argument 1562 shrinker_free(b->shrinker); in vmballoon_unregister_shrinker() 1563 b->shrinker = NULL; in vmballoon_unregister_shrinker() 1572 b->shrinker = shrinker_alloc(0, "vmw-balloon"); in vmballoon_register_shrinker() 1573 if (!b->shrinker) in vmballoon_register_shrinker() 1576 b->shrinker->scan_objects = vmballoon_shrinker_scan; in vmballoon_register_shrinker() 1577 b->shrinker->count_objects = vmballoon_shrinker_count; in vmballoon_register_shrinker() 1578 b->shrinker->private_data = b; in vmballoon_register_shrinker() [all …]
|
| /linux-6.15/drivers/xen/xenbus/ |
| H A D | xenbus_probe_backend.c | 279 static unsigned long backend_shrink_memory_count(struct shrinker *shrinker, in backend_shrink_memory_count() argument 289 struct shrinker *backend_memory_shrinker; in xenbus_probe_backend_init()
|
| /linux-6.15/fs/btrfs/ |
| H A D | compression.c | 174 struct shrinker *shrinker; member 181 static unsigned long btrfs_compr_pool_count(struct shrinker *sh, struct shrink_control *sc) in btrfs_compr_pool_count() 195 static unsigned long btrfs_compr_pool_scan(struct shrinker *sh, struct shrink_control *sc) in btrfs_compr_pool_scan() 1104 compr_pool.shrinker = shrinker_alloc(SHRINKER_NONSLAB, "btrfs-compr-pages"); in btrfs_init_compress() 1105 if (!compr_pool.shrinker) in btrfs_init_compress() 1118 compr_pool.shrinker->count_objects = btrfs_compr_pool_count; in btrfs_init_compress() 1119 compr_pool.shrinker->scan_objects = btrfs_compr_pool_scan; in btrfs_init_compress() 1120 compr_pool.shrinker->batch = 32; in btrfs_init_compress() 1121 compr_pool.shrinker->seeks = DEFAULT_SEEKS; in btrfs_init_compress() 1122 shrinker_register(compr_pool.shrinker); in btrfs_init_compress() [all …]
|
| /linux-6.15/fs/nfsd/ |
| H A D | netns.h | 191 struct shrinker *nfsd_reply_cache_shrinker; 209 struct shrinker *nfsd_client_shrinker;
|
| /linux-6.15/fs/erofs/ |
| H A D | zutil.c | 29 static struct shrinker *erofs_shrinker_info; 243 static unsigned long erofs_shrink_count(struct shrinker *shrink, in erofs_shrink_count() 249 static unsigned long erofs_shrink_scan(struct shrinker *shrink, in erofs_shrink_scan()
|
| /linux-6.15/fs/ubifs/ |
| H A D | shrinker.c | 267 unsigned long ubifs_shrink_count(struct shrinker *shrink, in ubifs_shrink_count() 279 unsigned long ubifs_shrink_scan(struct shrinker *shrink, in ubifs_shrink_scan()
|
| /linux-6.15/fs/ |
| H A D | mbcache.c | 40 struct shrinker *c_shrink; 293 static unsigned long mb_cache_count(struct shrinker *shrink, in mb_cache_count() 332 static unsigned long mb_cache_scan(struct shrinker *shrink, in mb_cache_scan()
|
| /linux-6.15/fs/bcachefs/ |
| H A D | btree_key_cache_types.h | 11 struct shrinker *shrink;
|