Messages in this thread Patch in this message | | | From | Heesub Shin <> | Subject | [PATCH] mm: vmscan: remove redundant querying to shrinker | Date | Fri, 14 Jun 2013 19:07:51 +0900 |
| |
shrink_slab() queries each slab cache to get the number of elements in it. In most cases such queries are cheap but, on some caches. For example, Android low-memory-killer, which is operates as a slab shrinker, does relatively long calculation once invoked and it is quite expensive.
This patch removes redundant queries to shrinker function in the loop of shrink batch.
Signed-off-by: Heesub Shin <heesub.shin@samsung.com> --- mm/vmscan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c index fa6a853..11b6695 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -282,9 +282,8 @@ unsigned long shrink_slab(struct shrink_control *shrink, max_pass, delta, total_scan); while (total_scan >= batch_size) { - int nr_before; + int nr_before = max_pass; - nr_before = do_shrinker_shrink(shrinker, shrink, 0); shrink_ret = do_shrinker_shrink(shrinker, shrink, batch_size); if (shrink_ret == -1) @@ -293,6 +292,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, ret += nr_before - shrink_ret; count_vm_events(SLABS_SCANNED, batch_size); total_scan -= batch_size; + max_pass = shrink_ret; cond_resched(); } -- 1.8.3.1
| |