[PATCH v6 0/8] add a new interface to show the memory usage of 1st kernel
bhe at redhat.com
Sun Aug 31 20:15:32 PDT 2014
Recently people complained that they don't know how to decide how
much disk size need be reserved for kdump. E.g there are lots of
machines with different memory size, if the memory usage information
of current system can be shown, that can help them to make an estimate
how much storage space need be reserved.
In this patchset, a new interface is added into makedumpfile. By the
help of this, people can know the page number of memory in different
use. The implementation is analyzing the "System Ram" and "kernel text"
program segment of /proc/kcore excluding the crashkernel range, then
calculating the page number of different kind per vmcoreinfo.
Previouly, patchset v1 was posted. And patch 7/7 has a change in v2.
So several changes are made in this v3 post per comments from Vivek
[patch 2/8] functions to get crashkernel memory range
In old iomem_for_each_line(), it will call exit(1) if opening iomem
failed. Atsushi suggested changing this to be consistent with other
return value. So here change all the return value to be nr, then
check it outside of iomem_for_each_line, and then decide how to act.
[patch 3/8] preparation functions for parsing vmcoreinfo
Since get_kernel_version need be called to get page_offset
before initial() in mem_usage code flow, and surely it will be called
inside initial() again. Add a static variable to avoid this duplicate
Check the value of info->kernel_version, just return if it has been
assigned to a value. This is suggested by Atsushi, far better than the
static variable idea.
And replace replace get_versiondep_info_x86_64() with get_versiondep_info
Update the git log.
[patch 4/8] set vmcoreinfo for kcore
Change several places error messages which are the same in nearby handling.
[patch 5/8] prepare the dump loads for kcore analysis
Fix the compiler warnings.
Rename is_vmalloc_addr() to is_vmalloc_addr_x86_64() in arch/x86_64.c. And
then define is_vmalloc_addr() for all other ARCHs, just set their value to
be TRUE except of x86_64.
[patch 6/8] introduce-a-function-exclude_zero_pages_cyclic
Newly introduce a function exclude_zero_pages_cyclic(), and call it in
Besides, a strange thing happened when the new interface was tested on
my local AMD machine. It always terminated and printed message:
"Program terminated with signal SIGKILL"
With gdb, it should be going in readmem() of exclude_zero_pages_cyclic, I
still don't know why it happened.
[patch 7/8] implement a function to print the memory usage
Adjust the printing content and format of dumpable page numbers per Vivek's
Slightly adjust the printing format and content.
Set info->dump_level=MAX_DUMP_LEVEL, with MAX_DUMP_LEVEL all kinds of
memory can be calculated.
Add the description of this feature into help message and man page.
Continue adjusting the output message of show_mem_usage calling per
Update the git log.
Adjust the printing format which is related to dump files previously.
Baoquan He (8):
initialize pfn_memhole in get_num_dumpable_cyclic
functions to get crashkernel memory range
preparation functions for parsing vmcoreinfo
set vmcoreinfo for kcore
prepare the dump loads for kcore analysis
introduce a function exclude_zero_pages_cyclic()
implement a function to print the memory usage
add a new interface to show the memory usage of 1st kernel
arch/x86_64.c | 6 +-
elf_info.c | 237 +++++++++++++++++++++++++++++++++++++++++++++++
elf_info.h | 3 +
makedumpfile.8 | 17 ++++
makedumpfile.c | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
makedumpfile.h | 17 ++++
print_info.c | 8 ++
7 files changed, 569 insertions(+), 4 deletions(-)
More information about the kexec