All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xishi Qiu <qiuxishi@huawei.com>
To: cl@linux.com, Pekka Enberg <penberg@kernel.org>,
	David Rientjes <rientjes@google.com>,
	iamjoonsoo.kim@lge.com, Andrew Morton <akpm@linux-foundation.org>,
	zhong jiang <zhongjiang@huawei.com>
Cc: Linux MM <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Xishi Qiu <qiuxishi@huawei.com>
Subject: [PATCH] mm: add ratio in slabinfo print
Date: Mon, 11 Jan 2016 11:54:57 +0800	[thread overview]
Message-ID: <56932791.3080502@huawei.com> (raw)

Add ratio(active_objs/num_objs) in /proc/slabinfo, it is used to show
the availability factor in each slab. Also adjustment format because
some slabs' name is too long.

before applied
...
ext4_inode_cache    1591   3008   1008   32    8 : tunables    0    0    0 : slabdata     94     94      0
ext4_free_data       640    640     64   64    1 : tunables    0    0    0 : slabdata     10     10      0
ext4_allocation_context    480    480    128   32    1 : tunables    0    0    0 : slabdata     15     15      0
ext4_io_end          616    616     72   56    1 : tunables    0    0    0 : slabdata     11     11      0
ext4_extent_status   3979   4794     40  102    1 : tunables    0    0    0 : slabdata     47     47      0
jbd2_journal_handle   1360   1360     48   85    1 : tunables    0    0    0 : slabdata     16     16      0
jbd2_journal_head    510    510    120   34    1 : tunables    0    0    0 : slabdata     15     15      0
jbd2_revoke_table_s    768    768     16  256    1 : tunables    0    0    0 : slabdata      3      3      0
jbd2_revoke_record_s    384    384     32  128    1 : tunables    0    0    0 : slabdata      3      3      0
scsi_data_buffer       0      0     24  170    1 : tunables    0    0    0 : slabdata      0      0      0
cfq_queue            560    560    232   35    2 : tunables    0    0    0 : slabdata     16     16      0
bsg_cmd                0      0    312   26    2 : tunables    0    0    0 : slabdata      0      0      0
mqueue_inode_cache     36     36    896   36    8 : tunables    0    0    0 : slabdata      1      1      0
isofs_inode_cache      0      0    600   27    4 : tunables    0    0    0 : slabdata      0      0      0
hugetlbfs_inode_cache     28     28    568   28    4 : tunables    0    0    0 : slabdata      1      1      0
dquot                448    448    256   32    2 : tunables    0    0    0 : slabdata     14     14      0

after applied
...
ext4_inode_cache            1287   2400     53%   1008   32    8 : tunables    0    0    0 : slabdata     75     75      0
ext4_free_data               640    640    100%     64   64    1 : tunables    0    0    0 : slabdata     10     10      0
ext4_allocation_context      512    512    100%    128   32    1 : tunables    0    0    0 : slabdata     16     16      0
ext4_io_end                  560    560    100%     72   56    1 : tunables    0    0    0 : slabdata     10     10      0
ext4_extent_status          3775   4692     80%     40  102    1 : tunables    0    0    0 : slabdata     46     46      0
jbd2_journal_handle         1360   1360    100%     48   85    1 : tunables    0    0    0 : slabdata     16     16      0
jbd2_journal_head            544    544    100%    120   34    1 : tunables    0    0    0 : slabdata     16     16      0
jbd2_revoke_table_s          768    768    100%     16  256    1 : tunables    0    0    0 : slabdata      3      3      0
jbd2_revoke_record_s         512    512    100%     32  128    1 : tunables    0    0    0 : slabdata      4      4      0
scsi_data_buffer               0      0      0%     24  170    1 : tunables    0    0    0 : slabdata      0      0      0
cfq_queue                    560    560    100%    232   35    2 : tunables    0    0    0 : slabdata     16     16      0
bsg_cmd                        0      0      0%    312   26    2 : tunables    0    0    0 : slabdata      0      0      0
mqueue_inode_cache            36     36    100%    896   36    8 : tunables    0    0    0 : slabdata      1      1      0
isofs_inode_cache              0      0      0%    600   27    4 : tunables    0    0    0 : slabdata      0      0      0
hugetlbfs_inode_cache         28     28    100%    568   28    4 : tunables    0    0    0 : slabdata      1      1      0
dquot                        448    448    100%    256   32    2 : tunables    0    0    0 : slabdata     14     14      0

Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
 mm/slab_common.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/mm/slab_common.c b/mm/slab_common.c
index 3c6a86b..6f1e130 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1041,8 +1041,8 @@ static void print_slabinfo_header(struct seq_file *m)
 #else
 	seq_puts(m, "slabinfo - version: 2.1\n");
 #endif
-	seq_puts(m, "# name            <active_objs> <num_objs> <objsize> "
-		 "<objperslab> <pagesperslab>");
+	seq_puts(m, "# name                   <active_objs> <num_objs> <ratio> "
+		 "<objsize> <objperslab> <pagesperslab>");
 	seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>");
 	seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>");
 #ifdef CONFIG_DEBUG_SLAB
@@ -1093,15 +1093,18 @@ memcg_accumulate_slabinfo(struct kmem_cache *s, struct slabinfo *info)
 static void cache_show(struct kmem_cache *s, struct seq_file *m)
 {
 	struct slabinfo sinfo;
+	unsigned long ratio;
 
 	memset(&sinfo, 0, sizeof(sinfo));
 	get_slabinfo(s, &sinfo);
 
 	memcg_accumulate_slabinfo(s, &sinfo);
+	ratio = sinfo.num_objs ? sinfo.active_objs * 100 / sinfo.num_objs : 0;
 
-	seq_printf(m, "%-17s %6lu %6lu %6u %4u %4d",
-		   cache_name(s), sinfo.active_objs, sinfo.num_objs, s->size,
-		   sinfo.objects_per_slab, (1 << sinfo.cache_order));
+	seq_printf(m, "%-25s %6lu %6lu %6lu%% %6u %4u %4d",
+		   cache_name(s), sinfo.active_objs, sinfo.num_objs,
+		   ratio, s->size, sinfo.objects_per_slab,
+		   (1 << sinfo.cache_order));
 
 	seq_printf(m, " : tunables %4u %4u %4u",
 		   sinfo.limit, sinfo.batchcount, sinfo.shared);
-- 
2.0.0


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Xishi Qiu <qiuxishi@huawei.com>
To: <cl@linux.com>, Pekka Enberg <penberg@kernel.org>,
	David Rientjes <rientjes@google.com>, <iamjoonsoo.kim@lge.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	zhong jiang <zhongjiang@huawei.com>
Cc: Linux MM <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Xishi Qiu <qiuxishi@huawei.com>
Subject: [PATCH] mm: add ratio in slabinfo print
Date: Mon, 11 Jan 2016 11:54:57 +0800	[thread overview]
Message-ID: <56932791.3080502@huawei.com> (raw)

Add ratio(active_objs/num_objs) in /proc/slabinfo, it is used to show
the availability factor in each slab. Also adjustment format because
some slabs' name is too long.

before applied
...
ext4_inode_cache    1591   3008   1008   32    8 : tunables    0    0    0 : slabdata     94     94      0
ext4_free_data       640    640     64   64    1 : tunables    0    0    0 : slabdata     10     10      0
ext4_allocation_context    480    480    128   32    1 : tunables    0    0    0 : slabdata     15     15      0
ext4_io_end          616    616     72   56    1 : tunables    0    0    0 : slabdata     11     11      0
ext4_extent_status   3979   4794     40  102    1 : tunables    0    0    0 : slabdata     47     47      0
jbd2_journal_handle   1360   1360     48   85    1 : tunables    0    0    0 : slabdata     16     16      0
jbd2_journal_head    510    510    120   34    1 : tunables    0    0    0 : slabdata     15     15      0
jbd2_revoke_table_s    768    768     16  256    1 : tunables    0    0    0 : slabdata      3      3      0
jbd2_revoke_record_s    384    384     32  128    1 : tunables    0    0    0 : slabdata      3      3      0
scsi_data_buffer       0      0     24  170    1 : tunables    0    0    0 : slabdata      0      0      0
cfq_queue            560    560    232   35    2 : tunables    0    0    0 : slabdata     16     16      0
bsg_cmd                0      0    312   26    2 : tunables    0    0    0 : slabdata      0      0      0
mqueue_inode_cache     36     36    896   36    8 : tunables    0    0    0 : slabdata      1      1      0
isofs_inode_cache      0      0    600   27    4 : tunables    0    0    0 : slabdata      0      0      0
hugetlbfs_inode_cache     28     28    568   28    4 : tunables    0    0    0 : slabdata      1      1      0
dquot                448    448    256   32    2 : tunables    0    0    0 : slabdata     14     14      0

after applied
...
ext4_inode_cache            1287   2400     53%   1008   32    8 : tunables    0    0    0 : slabdata     75     75      0
ext4_free_data               640    640    100%     64   64    1 : tunables    0    0    0 : slabdata     10     10      0
ext4_allocation_context      512    512    100%    128   32    1 : tunables    0    0    0 : slabdata     16     16      0
ext4_io_end                  560    560    100%     72   56    1 : tunables    0    0    0 : slabdata     10     10      0
ext4_extent_status          3775   4692     80%     40  102    1 : tunables    0    0    0 : slabdata     46     46      0
jbd2_journal_handle         1360   1360    100%     48   85    1 : tunables    0    0    0 : slabdata     16     16      0
jbd2_journal_head            544    544    100%    120   34    1 : tunables    0    0    0 : slabdata     16     16      0
jbd2_revoke_table_s          768    768    100%     16  256    1 : tunables    0    0    0 : slabdata      3      3      0
jbd2_revoke_record_s         512    512    100%     32  128    1 : tunables    0    0    0 : slabdata      4      4      0
scsi_data_buffer               0      0      0%     24  170    1 : tunables    0    0    0 : slabdata      0      0      0
cfq_queue                    560    560    100%    232   35    2 : tunables    0    0    0 : slabdata     16     16      0
bsg_cmd                        0      0      0%    312   26    2 : tunables    0    0    0 : slabdata      0      0      0
mqueue_inode_cache            36     36    100%    896   36    8 : tunables    0    0    0 : slabdata      1      1      0
isofs_inode_cache              0      0      0%    600   27    4 : tunables    0    0    0 : slabdata      0      0      0
hugetlbfs_inode_cache         28     28    100%    568   28    4 : tunables    0    0    0 : slabdata      1      1      0
dquot                        448    448    100%    256   32    2 : tunables    0    0    0 : slabdata     14     14      0

Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
 mm/slab_common.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/mm/slab_common.c b/mm/slab_common.c
index 3c6a86b..6f1e130 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1041,8 +1041,8 @@ static void print_slabinfo_header(struct seq_file *m)
 #else
 	seq_puts(m, "slabinfo - version: 2.1\n");
 #endif
-	seq_puts(m, "# name            <active_objs> <num_objs> <objsize> "
-		 "<objperslab> <pagesperslab>");
+	seq_puts(m, "# name                   <active_objs> <num_objs> <ratio> "
+		 "<objsize> <objperslab> <pagesperslab>");
 	seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>");
 	seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>");
 #ifdef CONFIG_DEBUG_SLAB
@@ -1093,15 +1093,18 @@ memcg_accumulate_slabinfo(struct kmem_cache *s, struct slabinfo *info)
 static void cache_show(struct kmem_cache *s, struct seq_file *m)
 {
 	struct slabinfo sinfo;
+	unsigned long ratio;
 
 	memset(&sinfo, 0, sizeof(sinfo));
 	get_slabinfo(s, &sinfo);
 
 	memcg_accumulate_slabinfo(s, &sinfo);
+	ratio = sinfo.num_objs ? sinfo.active_objs * 100 / sinfo.num_objs : 0;
 
-	seq_printf(m, "%-17s %6lu %6lu %6u %4u %4d",
-		   cache_name(s), sinfo.active_objs, sinfo.num_objs, s->size,
-		   sinfo.objects_per_slab, (1 << sinfo.cache_order));
+	seq_printf(m, "%-25s %6lu %6lu %6lu%% %6u %4u %4d",
+		   cache_name(s), sinfo.active_objs, sinfo.num_objs,
+		   ratio, s->size, sinfo.objects_per_slab,
+		   (1 << sinfo.cache_order));
 
 	seq_printf(m, " : tunables %4u %4u %4u",
 		   sinfo.limit, sinfo.batchcount, sinfo.shared);
-- 
2.0.0

             reply	other threads:[~2016-01-11  4:00 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-11  3:54 Xishi Qiu [this message]
2016-01-11  3:54 ` [PATCH] mm: add ratio in slabinfo print Xishi Qiu
2016-01-11 12:25 ` Michal Hocko
2016-01-11 12:25   ` Michal Hocko
2016-01-11 13:15   ` Xishi Qiu
2016-01-11 13:15     ` Xishi Qiu
2016-01-11 13:39     ` Michal Hocko
2016-01-11 13:39       ` Michal Hocko
2016-01-12  0:20     ` David Rientjes
2016-01-12  0:20       ` David Rientjes
2016-01-12  1:05       ` Xishi Qiu
2016-01-12  1:05         ` Xishi Qiu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56932791.3080502@huawei.com \
    --to=qiuxishi@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=zhongjiang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.