Hi, Kazu Thank you for the comment. On Wed, Feb 15, 2023 at 1:38 PM HAGIO KAZUHITO(萩尾 一仁) <k-hagio...@nec.com> wrote:
> On 2023/02/14 23:37, Lianbo Jiang wrote: > > The "kmem -i" option may output the bogus statistics of CACHED, which > > might be observed when some extreme situations occur in kernel, such as > > OOM, disk IO errors, etc. > > > > The following result of calculation may be a negative value, refer to > > the dump_kmeminfo(): > > page_cache_size = nr_file_pages - swapper_space_nrpages - > buffer_pages; > > > > As a result, the negative value will be converted to unsigned long > > integer, eventually it overflows and gets a big integer. > > > > crash> kmem -i > > PAGES TOTAL PERCENTAGE > > TOTAL MEM 255314511 973.9 GB ---- > > FREE 533574 2 GB 0% of TOTAL MEM > > USED 254780937 971.9 GB 99% of TOTAL MEM > > SHARED 1713 6.7 MB 0% of TOTAL MEM > > BUFFERS 374 1.5 MB 0% of TOTAL MEM > > CACHED -114 70368744177664 GB 72251060080% of TOTAL MEM > > ^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ > > I think that this is not very bad output :) because we can notice > the negative value. Maybe it's due to future kernel changes. > > It's true. But it is also easy to mislead users, because it is not clear whether the crash tool gave a wrong result. Actually this issue was observed on the kernel 3.10. So if you set it to zero, what about emitting an info message? > > It should be good to have an info message. > + if (page_cache_size < 0) { > + error(INFO, "page_cache_size went negative (%ld), setting > to 0\n", > + page_cache_size); > + page_cache_size = 0; > + } > > Looks good. Thanks. Lianbo > For example, > > crash> kmem -i > PAGES TOTAL PERCENTAGE > TOTAL MEM 16252500 62 GB ---- > FREE 246162 961.6 MB 1% of TOTAL MEM > USED 16006338 61.1 GB 98% of TOTAL MEM > SHARED 329258 1.3 GB 2% of TOTAL MEM > BUFFERS 1436 5.6 MB 0% of TOTAL MEM > kmem: page_cache_size went negative (-114), setting to 0 > CACHED 0 0 0% of TOTAL MEM > SLAB 311514 1.2 GB 1% of TOTAL MEM > > Thanks, > Kazu > > > ... > > > > Let's normalize it to zero to fix such corner cases. > > > > Reported-by: Buland Kumar Singh <bsi...@redhat.com> > > Signed-off-by: Lianbo Jiang <liji...@redhat.com> > > --- > > memory.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/memory.c b/memory.c > > index e0742c1bd3a4..860a3a978a4d 100644 > > --- a/memory.c > > +++ b/memory.c > > @@ -8615,6 +8615,8 @@ dump_kmeminfo(void) > > page_cache_size = 0; > > > > > > + if (page_cache_size < 0) > > + page_cache_size = 0; > > pct = (page_cache_size * 100)/totalram_pages; > > fprintf(fp, "%13s %7ld %11s %3ld%% of TOTAL MEM\n", > > "CACHED", page_cache_size,
-- Crash-utility mailing list Crash-utility@redhat.com https://listman.redhat.com/mailman/listinfo/crash-utility Contribution Guidelines: https://github.com/crash-utility/crash/wiki