Skip to content

Commit e33c267

Browse files
rgushchinakpm00
authored andcommitted
mm: shrinkers: provide shrinkers with names
Currently shrinkers are anonymous objects. For debugging purposes they can be identified by count/scan function names, but it's not always useful: e.g. for superblock's shrinkers it's nice to have at least an idea of to which superblock the shrinker belongs. This commit adds names to shrinkers. register_shrinker() and prealloc_shrinker() functions are extended to take a format and arguments to master a name. In some cases it's not possible to determine a good name at the time when a shrinker is allocated. For such cases shrinker_debugfs_rename() is provided. The expected format is: <subsystem>-<shrinker_type>[:<instance>]-<id> For some shrinkers an instance can be encoded as (MAJOR:MINOR) pair. After this change the shrinker debugfs directory looks like: $ cd /sys/kernel/debug/shrinker/ $ ls dquota-cache-16 sb-devpts-28 sb-proc-47 sb-tmpfs-42 mm-shadow-18 sb-devtmpfs-5 sb-proc-48 sb-tmpfs-43 mm-zspool:zram0-34 sb-hugetlbfs-17 sb-pstore-31 sb-tmpfs-44 rcu-kfree-0 sb-hugetlbfs-33 sb-rootfs-2 sb-tmpfs-49 sb-aio-20 sb-iomem-12 sb-securityfs-6 sb-tracefs-13 sb-anon_inodefs-15 sb-mqueue-21 sb-selinuxfs-22 sb-xfs:vda1-36 sb-bdev-3 sb-nsfs-4 sb-sockfs-8 sb-zsmalloc-19 sb-bpf-32 sb-pipefs-14 sb-sysfs-26 thp-deferred_split-10 sb-btrfs:vda2-24 sb-proc-25 sb-tmpfs-1 thp-zero-9 sb-cgroup2-30 sb-proc-39 sb-tmpfs-27 xfs-buf:vda1-37 sb-configfs-23 sb-proc-41 sb-tmpfs-29 xfs-inodegc:vda1-38 sb-dax-11 sb-proc-45 sb-tmpfs-35 sb-debugfs-7 sb-proc-46 sb-tmpfs-40 [[email protected]: fix build warnings] Link: https://lkml.kernel.org/r/Yr+ZTnLb9lJk6fJO@castle Reported-by: kernel test robot <[email protected]> Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Roman Gushchin <[email protected]> Cc: Christophe JAILLET <[email protected]> Cc: Dave Chinner <[email protected]> Cc: Hillf Danton <[email protected]> Cc: Kent Overstreet <[email protected]> Cc: Muchun Song <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 5035ebc commit e33c267

File tree

39 files changed

+167
-45
lines changed

39 files changed

+167
-45
lines changed

arch/x86/kvm/mmu/mmu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6317,7 +6317,7 @@ int kvm_mmu_vendor_module_init(void)
63176317
if (percpu_counter_init(&kvm_total_used_mmu_pages, 0, GFP_KERNEL))
63186318
goto out;
63196319

6320-
ret = register_shrinker(&mmu_shrinker);
6320+
ret = register_shrinker(&mmu_shrinker, "x86-mmu");
63216321
if (ret)
63226322
goto out;
63236323

drivers/android/binder_alloc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,7 @@ int binder_alloc_shrinker_init(void)
10841084
int ret = list_lru_init(&binder_alloc_lru);
10851085

10861086
if (ret == 0) {
1087-
ret = register_shrinker(&binder_shrinker);
1087+
ret = register_shrinker(&binder_shrinker, "android-binder");
10881088
if (ret)
10891089
list_lru_destroy(&binder_alloc_lru);
10901090
}

drivers/gpu/drm/i915/gem/i915_gem_shrinker.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,8 @@ void i915_gem_driver_register__shrinker(struct drm_i915_private *i915)
426426
i915->mm.shrinker.count_objects = i915_gem_shrinker_count;
427427
i915->mm.shrinker.seeks = DEFAULT_SEEKS;
428428
i915->mm.shrinker.batch = 4096;
429-
drm_WARN_ON(&i915->drm, register_shrinker(&i915->mm.shrinker));
429+
drm_WARN_ON(&i915->drm, register_shrinker(&i915->mm.shrinker,
430+
"drm-i915_gem"));
430431

431432
i915->mm.oom_notifier.notifier_call = i915_gem_shrinker_oom;
432433
drm_WARN_ON(&i915->drm, register_oom_notifier(&i915->mm.oom_notifier));

drivers/gpu/drm/msm/msm_gem_shrinker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ void msm_gem_shrinker_init(struct drm_device *dev)
221221
priv->shrinker.count_objects = msm_gem_shrinker_count;
222222
priv->shrinker.scan_objects = msm_gem_shrinker_scan;
223223
priv->shrinker.seeks = DEFAULT_SEEKS;
224-
WARN_ON(register_shrinker(&priv->shrinker));
224+
WARN_ON(register_shrinker(&priv->shrinker, "drm-msm_gem"));
225225

226226
priv->vmap_notifier.notifier_call = msm_gem_shrinker_vmap;
227227
WARN_ON(register_vmap_purge_notifier(&priv->vmap_notifier));

drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ void panfrost_gem_shrinker_init(struct drm_device *dev)
103103
pfdev->shrinker.count_objects = panfrost_gem_shrinker_count;
104104
pfdev->shrinker.scan_objects = panfrost_gem_shrinker_scan;
105105
pfdev->shrinker.seeks = DEFAULT_SEEKS;
106-
WARN_ON(register_shrinker(&pfdev->shrinker));
106+
WARN_ON(register_shrinker(&pfdev->shrinker, "drm-panfrost"));
107107
}
108108

109109
/**

drivers/gpu/drm/ttm/ttm_pool.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ int ttm_pool_mgr_init(unsigned long num_pages)
722722
mm_shrinker.count_objects = ttm_pool_shrinker_count;
723723
mm_shrinker.scan_objects = ttm_pool_shrinker_scan;
724724
mm_shrinker.seeks = 1;
725-
return register_shrinker(&mm_shrinker);
725+
return register_shrinker(&mm_shrinker, "drm-ttm_pool");
726726
}
727727

728728
/**

drivers/md/bcache/btree.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,7 @@ int bch_btree_cache_alloc(struct cache_set *c)
812812
c->shrink.seeks = 4;
813813
c->shrink.batch = c->btree_pages * 2;
814814

815-
if (register_shrinker(&c->shrink))
815+
if (register_shrinker(&c->shrink, "md-bcache:%pU", c->set_uuid))
816816
pr_warn("bcache: %s: could not register shrinker\n",
817817
__func__);
818818

drivers/md/dm-bufio.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1806,7 +1806,8 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign
18061806
c->shrinker.scan_objects = dm_bufio_shrink_scan;
18071807
c->shrinker.seeks = 1;
18081808
c->shrinker.batch = 0;
1809-
r = register_shrinker(&c->shrinker);
1809+
r = register_shrinker(&c->shrinker, "md-%s:(%u:%u)", slab_name,
1810+
MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev));
18101811
if (r)
18111812
goto bad;
18121813

drivers/md/dm-zoned-metadata.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2944,7 +2944,9 @@ int dmz_ctr_metadata(struct dmz_dev *dev, int num_dev,
29442944
zmd->mblk_shrinker.seeks = DEFAULT_SEEKS;
29452945

29462946
/* Metadata cache shrinker */
2947-
ret = register_shrinker(&zmd->mblk_shrinker);
2947+
ret = register_shrinker(&zmd->mblk_shrinker, "md-meta:(%u:%u)",
2948+
MAJOR(dev->bdev->bd_dev),
2949+
MINOR(dev->bdev->bd_dev));
29482950
if (ret) {
29492951
dmz_zmd_err(zmd, "Register metadata cache shrinker failed");
29502952
goto err;

drivers/md/raid5.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7414,7 +7414,7 @@ static struct r5conf *setup_conf(struct mddev *mddev)
74147414
conf->shrinker.count_objects = raid5_cache_count;
74157415
conf->shrinker.batch = 128;
74167416
conf->shrinker.flags = 0;
7417-
ret = register_shrinker(&conf->shrinker);
7417+
ret = register_shrinker(&conf->shrinker, "md-raid5:%s", mdname(mddev));
74187418
if (ret) {
74197419
pr_warn("md/raid:%s: couldn't register shrinker.\n",
74207420
mdname(mddev));

0 commit comments

Comments
 (0)