| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_shrinker.c | 31 struct shrinker *shrink; 35 static struct xe_shrinker *to_xe_shrinker(struct shrinker *shrink) in to_xe_shrinker() 49 xe_shrinker_mod_pages(struct xe_shrinker *shrinker, long shrinkable, long purgeable) in xe_shrinker_mod_pages() argument 51 write_lock(&shrinker->lock); in xe_shrinker_mod_pages() 52 shrinker->shrinkable_pages += shrinkable; in xe_shrinker_mod_pages() 53 shrinker->purgeable_pages += purgeable; in xe_shrinker_mod_pages() 54 write_unlock(&shrinker->lock); in xe_shrinker_mod_pages() 139 xe_shrinker_count(struct shrinker *shrink, struct shrink_control *sc) in xe_shrinker_count() 141 struct xe_shrinker *shrinker = to_xe_shrinker(shrink); in xe_shrinker_count() local 146 read_lock(&shrinker->lock); in xe_shrinker_count() [all …]
|
| /linux/drivers/gpu/drm/ |
| H A D | drm_pagemap_util.c | 32 struct drm_pagemap_shrinker *shrinker; member 55 struct shrinker *shrink; 65 drm_dbg(cache->shrinker->drm, "Destroying dpagemap cache.\n"); in drm_pagemap_cache_fini() 91 struct drm_pagemap_cache *drm_pagemap_cache_create_devm(struct drm_pagemap_shrinker *shrinker) in drm_pagemap_cache_create_devm() argument 101 cache->shrinker = shrinker; in drm_pagemap_cache_create_devm() 103 err = devm_add_action_or_reset(shrinker->drm->dev, drm_pagemap_cache_fini, cache); in drm_pagemap_cache_create_devm() 267 struct drm_pagemap_shrinker *shrinker = cache->shrinker; in drm_pagemap_shrinker_cancel() local 269 spin_lock(&shrinker->lock); in drm_pagemap_shrinker_cancel() 271 spin_unlock(&shrinker->lock); in drm_pagemap_shrinker_cancel() 276 atomic_dec(&shrinker->num_dpagemaps); in drm_pagemap_shrinker_cancel() [all …]
|
| /linux/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 135 struct shrinker *shrinker_alloc(unsigned int flags, const char *fmt, ...); 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 141 return refcount_inc_not_zero(&shrinker->refcount); in shrinker_try_get() 144 static inline void shrinker_put(struct shrinker *shrinker) in shrinker_put() argument 146 if (refcount_dec_and_test(&shrinker->refcount)) in shrinker_put() [all …]
|
| /linux/drivers/gpu/drm/msm/ |
| H A D | msm_gem_shrinker.c | 34 msm_gem_shrinker_count(struct shrinker *shrinker, struct shrink_control *sc) in msm_gem_shrinker_count() argument 36 struct msm_drm_private *priv = shrinker->private_data; in msm_gem_shrinker_count() 154 msm_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc) in msm_gem_shrinker_scan() argument 156 struct msm_drm_private *priv = shrinker->private_data; in msm_gem_shrinker_scan() 210 if (priv->shrinker) in msm_gem_shrinker_shrink() 211 ret = msm_gem_shrinker_scan(priv->shrinker, &sc); in msm_gem_shrinker_shrink() 275 priv->shrinker = shrinker_alloc(0, "drm-msm_gem"); in msm_gem_shrinker_init() 276 if (!priv->shrinker) in msm_gem_shrinker_init() 279 priv->shrinker->count_objects = msm_gem_shrinker_count; in msm_gem_shrinker_init() 280 priv->shrinker->scan_objects = msm_gem_shrinker_scan; in msm_gem_shrinker_init() [all …]
|
| H A D | msm_drv.h | 115 * The dontneed LRU is considered by the shrinker for objects 154 struct shrinker *shrinker; 156 struct shrinker *shrinker; global() member
|
| /linux/drivers/android/binder/ |
| H A D | page_range.rs | 6 //! vma shrinker. 14 // The shrinker will use trylock methods because it locks them in a different order. 40 /// Represents a shrinker that can be registered with the kernel. 42 /// Each shrinker can be used by many `ShrinkablePageRange` objects. 45 inner: Opaque<*mut bindings::shrinker>, 49 // SAFETY: The shrinker and list_lru are thread safe. 51 // SAFETY: The shrinker and list_lru are thread safe. 55 /// Create a new shrinker. 59 /// Before using this shrinker with a `ShrinkablePageRange`, the `register` method must have 68 /// Register this shrinker wit 83 let shrinker = unsafe { bindings::shrinker_alloc(0, name.as_char_ptr()) }; register() localVariable 130 shrinker: &'static Shrinker, global() field 662 rust_shrink_count( shrink: *mut bindings::shrinker, _sc: *mut bindings::shrink_control, ) -> c_ulong rust_shrink_count() argument 675 rust_shrink_scan( shrink: *mut bindings::shrinker, sc: *mut bindings::shrink_control, ) -> c_ulong rust_shrink_scan() argument [all...] |
| /linux/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/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/drivers/misc/ |
| H A D | vmw_balloon.c | 388 struct shrinker *shrinker; member 1513 static unsigned long vmballoon_shrinker_scan(struct shrinker *shrinker, in vmballoon_shrinker_scan() argument 1555 static unsigned long vmballoon_shrinker_count(struct shrinker *shrinker, in vmballoon_shrinker_count() argument 1565 shrinker_free(b->shrinker); in vmballoon_unregister_shrinker() 1566 b->shrinker = NULL; in vmballoon_unregister_shrinker() 1575 b->shrinker = shrinker_alloc(0, "vmw-balloon"); in vmballoon_register_shrinker() 1576 if (!b->shrinker) in vmballoon_register_shrinker() 1579 b->shrinker->scan_objects = vmballoon_shrinker_scan; in vmballoon_register_shrinker() 1580 b->shrinker->count_objects = vmballoon_shrinker_count; in vmballoon_register_shrinker() 1581 b->shrinker->private_data = b; in vmballoon_register_shrinker() [all …]
|
| /linux/mm/ |
| H A D | zswap.c | 120 /* Enable/disable memory pressure-based shrinker. */ 170 static struct shrinker *zswap_shrinker; 183 * logic if referenced is unset. See comments in the shrinker 723 * Since the global shrinker shrink_worker() may hold a reference 732 /* lock out zswap shrinker walking memcg tree */ in zswap_memcg_offline_cleanup() 1011 * hot, so skip it. For the unlikely concurrent shrinker case, in zswap_writeback_entry() 1064 * shrinker functions in zswap_writeback_entry() 1067 * The dynamic shrinker is modulated by the following factors: 1069 * 1. Each zswap entry has a referenced bit, which the shrinker unsets (giving 1071 * entry is considered again by the shrinker, wit 1174 zswap_shrinker_scan(struct shrinker * shrinker,struct shrink_control * sc) zswap_shrinker_scan() argument 1195 zswap_shrinker_count(struct shrinker * shrinker,struct shrink_control * sc) zswap_shrinker_count() argument 1269 struct shrinker *shrinker; zswap_alloc_shrinker() local [all...] |
| H A D | huge_memory.c | 18 #include <linux/shrinker.h> 73 static struct shrinker *deferred_split_shrinker; 74 static unsigned long deferred_split_count(struct shrinker *shrink, 76 static unsigned long deferred_split_scan(struct shrinker *shrink, 248 /* We take additional reference here. It will be put back by shrinker */ in get_huge_zero_folio() 258 * Counter should never go to zero here. Only shrinker can put in put_huge_zero_folio() 290 static unsigned long shrink_huge_zero_folio_count(struct shrinker *shrink, in shrink_huge_zero_folio_count() 297 static unsigned long shrink_huge_zero_folio_scan(struct shrinker *shrink, in shrink_huge_zero_folio_scan() 311 static struct shrinker *huge_zero_folio_shrinker; in enabled_show() 978 * initialize the shrinker in hugepage_init() [all...] |
| H A D | slab_common.c | 1298 // A page shrinker can ask for pages to be freed to make them 1304 // interference with the shrinker while it asks other systems to 2128 kfree_rcu_shrink_count(struct shrinker *shrink, struct shrink_control *sc) in kfree_rcu_shrink_count() 2146 kfree_rcu_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) in kfree_rcu_shrink_scan() 2172 struct shrinker *kfree_rcu_shrinker; in kvfree_rcu_init() 2211 pr_err("Failed to allocate kfree_rcu() shrinker!\n"); in kvfree_rcu_init()
|
| /linux/fs/btrfs/ |
| H A D | compression.c | 23 #include <linux/shrinker.h> 133 struct shrinker *shrinker; member 140 static unsigned long btrfs_compr_pool_count(struct shrinker *sh, struct shrink_control *sc) in btrfs_compr_pool_count() 154 static unsigned long btrfs_compr_pool_scan(struct shrinker *sh, struct shrink_control *sc) in btrfs_compr_pool_scan() 1146 compr_pool.shrinker = shrinker_alloc(SHRINKER_NONSLAB, "btrfs-compr-pages"); in btrfs_alloc_compress_wsm() 1147 if (!compr_pool.shrinker) in btrfs_alloc_compress_wsm() 1155 compr_pool.shrinker->count_objects = btrfs_compr_pool_count; in btrfs_free_compress_wsm() 1156 compr_pool.shrinker->scan_objects = btrfs_compr_pool_scan; in btrfs_free_compress_wsm() 1157 compr_pool.shrinker in btrfs_free_compress_wsm() [all...] |
| /linux/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/fs/erofs/ |
| H A D | zutil.c | 29 static struct shrinker *erofs_shrinker_info; 242 static unsigned long erofs_shrink_count(struct shrinker *shrink, in erofs_shrink_count() 248 static unsigned long erofs_shrink_scan(struct shrinker *shrink, in erofs_shrink_scan()
|
| /linux/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()
|
| H A D | Makefile | 4 ubifs-y += shrinker.o journal.o file.o dir.o super.o sb.o io.o
|
| /linux/fs/f2fs/ |
| H A D | shrinker.c | 40 unsigned long f2fs_shrink_count(struct shrinker *shrink, in f2fs_shrink_count() 79 unsigned long f2fs_shrink_scan(struct shrinker *shrink, in f2fs_shrink_scan()
|
| H A D | Makefile | 6 f2fs-y += shrinker.o extent_cache.o sysfs.o
|
| /linux/include/linux/fs/ |
| H A D | super_types.h | 32 struct shrinker; 229 struct shrinker *s_shrink; /* per-sb shrinker handle */
|
| /linux/Documentation/gpu/rfc/ |
| H A D | i915_gem_lmem.rst | 15 * TTM shrinker for discrete
|
| /linux/net/sunrpc/ |
| H A D | auth.c | 475 rpcauth_cache_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) in rpcauth_cache_shrink_scan() 489 rpcauth_cache_shrink_count(struct shrinker *shrink, struct shrink_control *sc) in rpcauth_cache_shrink_count() 866 static struct shrinker *rpc_cred_shrinker;
|
| /linux/fs/nfsd/ |
| H A D | filecache.c | 555 /* If the shrinker runs between calls to list_lru_walk_node() in 559 * the shrinker. 598 nfsd_file_lru_count(struct shrinker *s, struct shrink_control *sc) in nfsd_file_lru_count() 604 nfsd_file_lru_scan(struct shrinker *s, struct shrink_control *sc) in nfsd_file_lru_scan() 620 static struct shrinker *nfsd_file_shrinker;
|
| /linux/drivers/gpu/drm/ttm/ |
| H A D | ttm_pool.c | 133 static struct shrinker *mm_shrinker; 1207 static unsigned long ttm_pool_shrinker_scan(struct shrinker *shrink, in ttm_pool_shrinker_scan() 1223 static unsigned long ttm_pool_shrinker_count(struct shrinker *shrink, in ttm_pool_shrinker_count()
|
| /linux/fs/nfs/ |
| H A D | internal.h | 391 extern unsigned long nfs_access_cache_count(struct shrinker *shrink, 393 extern unsigned long nfs_access_cache_scan(struct shrinker *shrink,
|