Re: [PATCH] mm, slab: Extend slab/shrink to shrink all the memcg caches
From: Vlastimil Babka <hidden>
Date: 2019-08-07 16:33:45
Also in:
cgroups, linux-fsdevel, linux-mm, lkml
On 7/23/19 4:30 PM, Waiman Long wrote:
On 7/22/19 8:46 AM, peter enderborg wrote:quoted
On 7/2/19 8:37 PM, Waiman Long wrote:quoted
Currently, a value of '1" is written to /sys/kernel/slab/<slab>/shrink file to shrink the slab by flushing all the per-cpu slabs and free slabs in partial lists. This applies only to the root caches, though. Extends this capability by shrinking all the child memcg caches and the root cache when a value of '2' is written to the shrink sysfs file. On a 4-socket 112-core 224-thread x86-64 system after a parallel kernel build, the the amount of memory occupied by slabs before shrinking slabs were: # grep task_struct /proc/slabinfo task_struct 7114 7296 7744 4 8 : tunables 0 0 0 : slabdata 1824 1824 0 # grep "^S[lRU]" /proc/meminfo Slab: 1310444 kB SReclaimable: 377604 kB SUnreclaim: 932840 kB After shrinking slabs: # grep "^S[lRU]" /proc/meminfo Slab: 695652 kB SReclaimable: 322796 kB SUnreclaim: 372856 kB # grep task_struct /proc/slabinfo task_struct 2262 2572 7744 4 8 : tunables 0 0 0 : slabdata 643 643 0What is the time between this measurement points? Should not the shrinked memory show up as reclaimable?In this case, I echoed '2' to all the shrink sysfs files under /sys/kernel/slab. The purpose of shrinking caches is to reclaim as much unused memory slabs from all the caches, irrespective if they are reclaimable or not.
Well, SReclaimable counts pages allocated by kmem caches with SLAB_RECLAIM_ACCOUNT flags, which should match those that have a shrinker associated and can thus actually reclaim objects. That shrinking slabs affected SReclaimable just a bit while reducing SUnreclaim by more than 50% looks certainly odd. For example the task_struct cache is not a reclaimable one, yet shows massive reduction. Could be that the reclaimable objects were pinning non-reclaimable ones, so the shrinking had secondary effects in non-reclaimable caches.
We do not reclaim any used objects. That is why we see the numbers were reduced in both cases. Cheers, Longman