[PATCH 6/7] implement a function to print the memory usage

Baoquan He bhe at redhat.com
Fri Jul 11 00:16:03 PDT 2014


Introduce print_mem_usage to print the result of analysis of /proc/kcore.
The page number of memory in different use are printed.

Signed-off-by: Baoquan He <bhe at redhat.com>
---
 makedumpfile.c | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/makedumpfile.c b/makedumpfile.c
index b67ede1..a170dd3 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -7830,6 +7830,46 @@ print_report(void)
 	REPORT_MSG("\n");
 }
 
+static void
+print_mem_usage(void)
+{
+	mdf_pfn_t pfn_original, pfn_excluded, shrinking;
+
+	/*
+	* /proc/vmcore doesn't contain the memory hole area.
+	*/
+	pfn_original = info->max_mapnr - pfn_memhole;
+
+	pfn_excluded = pfn_zero + pfn_cache + pfn_cache_private
+	    + pfn_user + pfn_free + pfn_hwpoison;
+	shrinking = (pfn_original - pfn_excluded) * 100;
+	shrinking = shrinking / pfn_original;
+
+	MSG("\n");
+	MSG("Page number of memory in different use\n");
+	MSG("--------------------------------------------------\n");
+	MSG("TYPE			PAGES			EXCLUDABLE	DESCRIPTION\n");
+
+	MSG("pfn_zero		0x%016llx	yes		Pages filled with zero\n", pfn_zero);
+	MSG("pfn_cache		0x%016llx	yes		Cache pages\n", pfn_cache);
+	MSG("pfn_cache_private	0x%016llx	yes		Cache pages + private\n",
+	    pfn_cache_private);
+	MSG("pfn_user		0x%016llx	yes		User process data pages\n", pfn_user);
+	MSG("pfn_free		0x%016llx	yes		Free pages\n", pfn_free);
+	MSG("pfn_hwpoison		0x%016llx	yes		Hwpoison pages\n", pfn_hwpoison);
+	MSG("pfn_kernel_data		0x%016llx	no		Dumpable kernel data \n",
+	    pfn_original - pfn_excluded);
+
+	MSG("\n");
+
+	MSG("Total pages on system:	0x%016llx\n", pfn_original);
+	MSG("Excludable pages:	0x%016llx\n", pfn_excluded);
+	MSG("Memory Hole: 		0x%016llx\n", pfn_memhole);
+	MSG("--------------------------------------------------\n");
+	MSG("Total pages:		0x%016llx\n", info->max_mapnr);
+	MSG("\n");
+}
+
 int
 writeout_dumpfile(void)
 {
-- 
1.8.4.2




More information about the kexec mailing list