2021-10-18 03:35:31

by Hyeonggon Yoo

[permalink] [raw]
Subject: [PATCH] Unit mismatch (Slab/SReclaimable/SUnreclaim) in meminfo

Hello, it seems there's mismatch in unit (byte and kB) in meminfo.
Would something like this will be acceptable?

commit d42f3245c7e2 ("mm: memcg: convert vmstat slab counters
to bytes") changed it to bytes but proc seems to print everything in
kilobytes.

---
fs/proc/meminfo.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index 6fa761c9cc78..182376582076 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -52,8 +52,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
pages[lru] = global_node_page_state(NR_LRU_BASE + lru);

available = si_mem_available();
- sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B);
- sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B);
+ sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) / 1024;
+ sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B) / 1024;

show_val_kb(m, "MemTotal: ", i.totalram);
show_val_kb(m, "MemFree: ", i.freeram);
--
2.27.0


2021-10-18 03:35:31

by Hyeonggon Yoo

[permalink] [raw]
Subject: Not [PATCH] :)

On Sat, Oct 16, 2021 at 11:54:29AM +0000, Hyeonggon Yoo wrote:
> Hello, it seems there's mismatch in unit (byte and kB) in meminfo.
> Would something like this will be acceptable?
>
> commit d42f3245c7e2 ("mm: memcg: convert vmstat slab counters
> to bytes") changed it to bytes but proc seems to print everything in
> kilobytes.
>

This is not actually patch - I'll send you a patch
if this is not my misunderstanding :)

Thanks,
Hyeonggon.

> ---
> fs/proc/meminfo.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> index 6fa761c9cc78..182376582076 100644
> --- a/fs/proc/meminfo.c
> +++ b/fs/proc/meminfo.c
> @@ -52,8 +52,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
> pages[lru] = global_node_page_state(NR_LRU_BASE + lru);
>
> available = si_mem_available();
> - sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B);
> - sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B);
> + sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) / 1024;
> + sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B) / 1024;
>
> show_val_kb(m, "MemTotal: ", i.totalram);
> show_val_kb(m, "MemFree: ", i.freeram);
> --
> 2.27.0
>

2021-10-18 03:42:44

by Hyeonggon Yoo

[permalink] [raw]
Subject: Re: [PATCH] Unit mismatch (Slab/SReclaimable/SUnreclaim) in meminfo

On Sat, Oct 16, 2021 at 11:54:29AM +0000, Hyeonggon Yoo wrote:
> Hello, it seems there's mismatch in unit (byte and kB) in meminfo.
> Would something like this will be acceptable?
>
> commit d42f3245c7e2 ("mm: memcg: convert vmstat slab counters
> to bytes") changed it to bytes but proc seems to print everything in
> kilobytes.
>

Ignore this.

this was my misunderstanding of code :(
It internally converts to kilobytes when updating its data.

> ---
> fs/proc/meminfo.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> index 6fa761c9cc78..182376582076 100644
> --- a/fs/proc/meminfo.c
> +++ b/fs/proc/meminfo.c
> @@ -52,8 +52,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
> pages[lru] = global_node_page_state(NR_LRU_BASE + lru);
>
> available = si_mem_available();
> - sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B);
> - sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B);
> + sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) / 1024;
> + sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B) / 1024;
>
> show_val_kb(m, "MemTotal: ", i.totalram);
> show_val_kb(m, "MemFree: ", i.freeram);
> --
> 2.27.0
>