From: Johannes Weiner <hannes@saeurebad.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: [PATCH 02/20] mm: generic show_mem()
Date: Fri, 27 Jun 2008 13:53:51 +0200 [thread overview]
Message-ID: <20080627120048.059732179@saeurebad.de> (raw)
In-Reply-To: 20080627115349.743368154@saeurebad.de
[-- Attachment #1: 0003-generic-show_mem.patch --]
[-- Type: text/plain, Size: 2232 bytes --]
This implements a platform-independent version of show_mem().
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
---
mm/Kconfig | 3 +++
mm/page_alloc.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+)
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -45,6 +45,7 @@
#include <linux/fault-inject.h>
#include <linux/page-isolation.h>
#include <linux/memcontrol.h>
+#include <linux/nmi.h>
#include <linux/debugobjects.h>
#include <asm/tlbflush.h>
@@ -2042,6 +2043,60 @@ static void zoneref_set_zone(struct zone
zoneref->zone_idx = zone_idx(zone);
}
+#ifdef CONFIG_HAVE_GENERIC_SHOW_MEM
+void show_mem(void)
+{
+ pg_data_t *pgdat;
+ int total = 0, reserved = 0, shared = 0, nonshared = 0, highmem = 0;
+
+ printk(KERN_INFO "Mem-Info:\n");
+ show_free_areas();
+
+ for_each_online_pgdat(pgdat) {
+ unsigned long i, flags;
+
+ pgdat_resize_lock(pgdat, &flags);
+ for (i = 0; i < pgdat->node_spanned_pages; i++) {
+ struct page *page;
+ unsigned long pfn = pgdat->node_start_pfn + i;
+
+ if (unlikely((i % MAX_ORDER_NR_PAGES) == 0))
+ touch_nmi_watchdog();
+
+ if (!pfn_valid(pfn))
+ continue;
+
+ page = pfn_to_page(pfn);
+
+ if (PageHighMem(page))
+ highmem++;
+
+ if (PageReserved(page))
+ reserved++;
+ else if (page_count(page) == 1)
+ nonshared++;
+ else if (page_count(page) > 1)
+ shared += page_count(page) - 1;
+
+ total++;
+ }
+ pgdat_resize_unlock(pgdat, &flags);
+ }
+
+ printk(KERN_INFO "%d pages RAM\n", total);
+#ifdef CONFIG_HIGHMEM
+ printk(KERN_INFO "%d pages HighMem\n", highmem);
+#endif
+ printk(KERN_INFO "%d pages reserved\n", reserved);
+ printk(KERN_INFO "%d pages shared\n", shared);
+ printk(KERN_INFO "%d pages non-shared\n", nonshared);
+#ifdef CONFIG_QUICKLIST
+ printk(KERN_INFO "%d pages in pagetable cache\n",
+ quicklist_total_size());
+#endif
+}
+#endif /* CONFIG_HAVE_GENERIC_SHOW_MEM */
+
/*
* Builds allocation fallback zone lists.
*
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -213,6 +213,9 @@ config VIRT_TO_BUS
config PAGE_WALKER
def_bool n
+config HAVE_GENERIC_SHOW_MEM
+ def_bool n
+
config UNEVICTABLE_LRU
bool "Add LRU list to track non-evictable pages"
default y
--
next prev parent reply other threads:[~2008-06-27 12:05 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-27 11:53 [PATCH 00/20] mm: generic show_mem() v4 Johannes Weiner
2008-06-27 11:53 ` [PATCH 01/20] mm: print swapcache page count in show_swap_cache_info() Johannes Weiner
2008-06-27 11:53 ` Johannes Weiner [this message]
2008-06-27 14:43 ` [PATCH 02/20] mm: generic show_mem() Heiko Carstens
2008-06-27 21:17 ` [PATCH 02/20 fixed] " Johannes Weiner
2008-06-28 4:22 ` [PATCH 02/20] " Paul Mundt
2008-06-28 10:25 ` Johannes Weiner
2008-06-28 17:51 ` Paul Mundt
2008-06-27 11:53 ` [PATCH 03/20] alpha: use " Johannes Weiner
2008-06-27 11:53 ` [PATCH 04/20] avr32: " Johannes Weiner
2008-06-27 11:53 ` [PATCH 05/20] blackfin: " Johannes Weiner
2008-06-27 11:53 ` [PATCH 06/20] cris: " Johannes Weiner
2008-06-27 11:53 ` [PATCH 07/20] frv: " Johannes Weiner
2008-06-27 11:53 ` [PATCH 08/20] m32r: " Johannes Weiner
2008-06-27 11:53 ` [PATCH 09/20] m68k: " Johannes Weiner
2008-06-29 9:17 ` Geert Uytterhoeven
2008-06-27 11:53 ` [PATCH 10/20] m68knommu: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 11/20] mips: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 12/20] h8300: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 13/20] mn10300: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 14/20] powerpc: " Johannes Weiner
2008-07-01 7:27 ` Benjamin Herrenschmidt
2008-06-27 11:54 ` [PATCH 15/20] s390: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 16/20] sh: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 17/20] sparc64: " Johannes Weiner
2008-06-27 22:46 ` David Miller
2008-06-27 11:54 ` [PATCH 18/20] um: " Johannes Weiner
2008-06-27 15:08 ` Jeff Dike
2008-06-27 11:54 ` [PATCH 19/20] x86: " Johannes Weiner
2008-06-27 11:54 ` [PATCH 20/20] xtensa: " Johannes Weiner
2008-07-01 6:55 ` [PATCH 00/20] mm: generic show_mem() v4 Johannes Weiner
2008-07-01 7:25 ` Andrew Morton
2008-07-01 7:54 ` Johannes Weiner
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=20080627120048.059732179@saeurebad.de \
--to=hannes@saeurebad.de \
--cc=akpm@linux-foundation.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox