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
next 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.