* [PATCH 0/4] OOM analysis helper patch series v3
@ 2009-07-13 5:57 KOSAKI Motohiro
2009-07-13 6:00 ` [PATCH 1/4][resend] add per-zone statistics to show_free_areas() KOSAKI Motohiro
` (5 more replies)
0 siblings, 6 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 5:57 UTC (permalink / raw)
To: LKML
Cc: kosaki.motohiro, linux-mm, Andrew Morton, Wu Fengguang,
Christoph Lameter, Rik van Riel
ChangeLog
Since v2
- Dropped "[4/5] add isolate pages vmstat" temporary because it become
slightly big. Then, I plan to submit it as another patchset.
- Rewrote many patch description (Thanks! Christoph)
Since v1
- Dropped "[5/5] add NR_ANON_PAGES to OOM log" patch
- Instead, introduce "[5/5] add shmem vmstat" patch
- Fixed unit bug (Thanks Minchan)
- Separated isolated vmstat to two field (Thanks Minchan and Wu)
- Fixed isolated page and lumpy reclaim issue (Thanks Minchan)
- Rewrote some patch description (Thanks Christoph)
This patch series are tested on 2.6.31-rc2 + mm-show_free_areas-display-slab-pages-in-two-separate-fields.patch
==========================
Current OOM log doesn't provide sufficient memory usage information. it cause
make confusion to lkml MM guys.
this patch series add some memory usage information to OOM log output.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/4][resend] add per-zone statistics to show_free_areas()
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
@ 2009-07-13 6:00 ` KOSAKI Motohiro
2009-07-13 6:01 ` [PATCH 2/4][resend] add buffer cache information " KOSAKI Motohiro
` (4 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 6:00 UTC (permalink / raw)
To: LKML
Cc: kosaki.motohiro, linux-mm, Andrew Morton, Wu Fengguang,
Christoph Lameter, Rik van Riel
Subject: [PATCH] add per-zone statistics to show_free_areas()
show_free_areas() displays only a limited amount of zone counters. This
patch includes additional counters in the display to allow easier
debugging. This may be especially useful if an OOM is due to running out
of DMA memory.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
---
mm/page_alloc.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
Index: b/mm/page_alloc.c
===================================================================
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2151,6 +2151,16 @@ void show_free_areas(void)
" inactive_file:%lukB"
" unevictable:%lukB"
" present:%lukB"
+ " mlocked:%lukB"
+ " dirty:%lukB"
+ " writeback:%lukB"
+ " mapped:%lukB"
+ " slab_reclaimable:%lukB"
+ " slab_unreclaimable:%lukB"
+ " pagetables:%lukB"
+ " unstable:%lukB"
+ " bounce:%lukB"
+ " writeback_tmp:%lukB"
" pages_scanned:%lu"
" all_unreclaimable? %s"
"\n",
@@ -2165,6 +2175,16 @@ void show_free_areas(void)
K(zone_page_state(zone, NR_INACTIVE_FILE)),
K(zone_page_state(zone, NR_UNEVICTABLE)),
K(zone->present_pages),
+ K(zone_page_state(zone, NR_MLOCK)),
+ K(zone_page_state(zone, NR_FILE_DIRTY)),
+ K(zone_page_state(zone, NR_WRITEBACK)),
+ K(zone_page_state(zone, NR_FILE_MAPPED)),
+ K(zone_page_state(zone, NR_SLAB_RECLAIMABLE)),
+ K(zone_page_state(zone, NR_SLAB_UNRECLAIMABLE)),
+ K(zone_page_state(zone, NR_PAGETABLE)),
+ K(zone_page_state(zone, NR_UNSTABLE_NFS)),
+ K(zone_page_state(zone, NR_BOUNCE)),
+ K(zone_page_state(zone, NR_WRITEBACK_TEMP)),
zone->pages_scanned,
(zone_is_all_unreclaimable(zone) ? "yes" : "no")
);
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/4][resend] add buffer cache information to show_free_areas()
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
2009-07-13 6:00 ` [PATCH 1/4][resend] add per-zone statistics to show_free_areas() KOSAKI Motohiro
@ 2009-07-13 6:01 ` KOSAKI Motohiro
2009-07-13 6:02 ` [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output KOSAKI Motohiro
` (3 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 6:01 UTC (permalink / raw)
To: LKML
Cc: kosaki.motohiro, linux-mm, Andrew Morton, Wu Fengguang,
Christoph Lameter, Rik van Riel
ChangeLog
Since v3
- Rewrote the descriptin (Thanks Christoph!)
Since v2
- Changed display order, now, "buffer" field display right after unstable
Since v1
- Fixed showing the number with kilobyte unit issue
================
Subject: [PATCH] add buffer cache information to show_free_areas()
It is often useful to know the statistics for all pages that are handled
like page cache pages when looking at OOM log output.
Therefore show_free_areas() should also display buffer cache statistics.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
---
mm/page_alloc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/mm/page_alloc.c
===================================================================
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2118,7 +2118,7 @@ void show_free_areas(void)
printk("Active_anon:%lu active_file:%lu inactive_anon:%lu\n"
" inactive_file:%lu"
" unevictable:%lu"
- " dirty:%lu writeback:%lu unstable:%lu\n"
+ " dirty:%lu writeback:%lu unstable:%lu buffer:%lu\n"
" free:%lu slab_reclaimable:%lu slab_unreclaimable:%lu\n"
" mapped:%lu pagetables:%lu bounce:%lu\n",
global_page_state(NR_ACTIVE_ANON),
@@ -2129,6 +2129,7 @@ void show_free_areas(void)
global_page_state(NR_FILE_DIRTY),
global_page_state(NR_WRITEBACK),
global_page_state(NR_UNSTABLE_NFS),
+ nr_blockdev_pages(),
global_page_state(NR_FREE_PAGES),
global_page_state(NR_SLAB_RECLAIMABLE),
global_page_state(NR_SLAB_UNRECLAIMABLE),
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
2009-07-13 6:00 ` [PATCH 1/4][resend] add per-zone statistics to show_free_areas() KOSAKI Motohiro
2009-07-13 6:01 ` [PATCH 2/4][resend] add buffer cache information " KOSAKI Motohiro
@ 2009-07-13 6:02 ` KOSAKI Motohiro
2009-07-13 22:29 ` Andrew Morton
2009-07-13 6:05 ` [PATCH 4/4][resend] add shmem vmstat KOSAKI Motohiro
` (2 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 6:02 UTC (permalink / raw)
To: LKML
Cc: kosaki.motohiro, linux-mm, Andrew Morton, Wu Fengguang,
Christoph Lameter, Rik van Riel
ChangeLog
Since v1
- Rewrote the descriptin (Thanks Christoph!)
=====================
Subject: [PATCH] Show kernel stack usage in /proc/meminfo and OOM log output
The amount of memory allocated to kernel stacks can become significant and
cause OOM conditions. However, we do not display the amount of memory
consumed by stacks.
Add code to display the amount of memory used for stacks in /proc/meminfo.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
---
drivers/base/node.c | 3 +++
fs/proc/meminfo.c | 2 ++
include/linux/mmzone.h | 3 ++-
kernel/fork.c | 11 +++++++++++
mm/page_alloc.c | 3 +++
mm/vmstat.c | 1 +
6 files changed, 22 insertions(+), 1 deletion(-)
Index: b/fs/proc/meminfo.c
===================================================================
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -84,6 +84,7 @@ static int meminfo_proc_show(struct seq_
"Slab: %8lu kB\n"
"SReclaimable: %8lu kB\n"
"SUnreclaim: %8lu kB\n"
+ "KernelStack: %8lu kB\n"
"PageTables: %8lu kB\n"
#ifdef CONFIG_QUICKLIST
"Quicklists: %8lu kB\n"
@@ -128,6 +129,7 @@ static int meminfo_proc_show(struct seq_
global_page_state(NR_SLAB_UNRECLAIMABLE)),
K(global_page_state(NR_SLAB_RECLAIMABLE)),
K(global_page_state(NR_SLAB_UNRECLAIMABLE)),
+ global_page_state(NR_KERNEL_STACK) * THREAD_SIZE / 1024,
K(global_page_state(NR_PAGETABLE)),
#ifdef CONFIG_QUICKLIST
K(quicklist_total_size()),
Index: b/include/linux/mmzone.h
===================================================================
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -94,10 +94,11 @@ enum zone_stat_item {
NR_SLAB_RECLAIMABLE,
NR_SLAB_UNRECLAIMABLE,
NR_PAGETABLE, /* used for pagetables */
+ NR_KERNEL_STACK,
+ /* Second 128 byte cacheline */
NR_UNSTABLE_NFS, /* NFS unstable pages */
NR_BOUNCE,
NR_VMSCAN_WRITE,
- /* Second 128 byte cacheline */
NR_WRITEBACK_TEMP, /* Writeback using temporary buffers */
#ifdef CONFIG_NUMA
NUMA_HIT, /* allocated in intended node */
Index: b/kernel/fork.c
===================================================================
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -137,9 +137,17 @@ struct kmem_cache *vm_area_cachep;
/* SLAB cache for mm_struct structures (tsk->mm) */
static struct kmem_cache *mm_cachep;
+static void account_kernel_stack(struct thread_info *ti, int account)
+{
+ struct zone *zone = page_zone(virt_to_page(ti));
+
+ mod_zone_page_state(zone, NR_KERNEL_STACK, account);
+}
+
void free_task(struct task_struct *tsk)
{
prop_local_destroy_single(&tsk->dirties);
+ account_kernel_stack(tsk->stack, -1);
free_thread_info(tsk->stack);
rt_mutex_debug_task_free(tsk);
ftrace_graph_exit_task(tsk);
@@ -255,6 +263,9 @@ static struct task_struct *dup_task_stru
tsk->btrace_seq = 0;
#endif
tsk->splice_pipe = NULL;
+
+ account_kernel_stack(ti, 1);
+
return tsk;
out:
Index: b/mm/page_alloc.c
===================================================================
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2158,6 +2158,7 @@ void show_free_areas(void)
" mapped:%lukB"
" slab_reclaimable:%lukB"
" slab_unreclaimable:%lukB"
+ " kernel_stack:%lukB"
" pagetables:%lukB"
" unstable:%lukB"
" bounce:%lukB"
@@ -2182,6 +2183,8 @@ void show_free_areas(void)
K(zone_page_state(zone, NR_FILE_MAPPED)),
K(zone_page_state(zone, NR_SLAB_RECLAIMABLE)),
K(zone_page_state(zone, NR_SLAB_UNRECLAIMABLE)),
+ zone_page_state(zone, NR_KERNEL_STACK) *
+ THREAD_SIZE / 1024,
K(zone_page_state(zone, NR_PAGETABLE)),
K(zone_page_state(zone, NR_UNSTABLE_NFS)),
K(zone_page_state(zone, NR_BOUNCE)),
Index: b/mm/vmstat.c
===================================================================
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -639,6 +639,7 @@ static const char * const vmstat_text[]
"nr_slab_reclaimable",
"nr_slab_unreclaimable",
"nr_page_table_pages",
+ "nr_kernel_stack",
"nr_unstable",
"nr_bounce",
"nr_vmscan_write",
Index: b/drivers/base/node.c
===================================================================
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -85,6 +85,7 @@ static ssize_t node_read_meminfo(struct
"Node %d FilePages: %8lu kB\n"
"Node %d Mapped: %8lu kB\n"
"Node %d AnonPages: %8lu kB\n"
+ "Node %d KernelStack: %8lu kB\n"
"Node %d PageTables: %8lu kB\n"
"Node %d NFS_Unstable: %8lu kB\n"
"Node %d Bounce: %8lu kB\n"
@@ -116,6 +117,8 @@ static ssize_t node_read_meminfo(struct
nid, K(node_page_state(nid, NR_FILE_PAGES)),
nid, K(node_page_state(nid, NR_FILE_MAPPED)),
nid, K(node_page_state(nid, NR_ANON_PAGES)),
+ nid, node_page_state(nid, NR_KERNEL_STACK) *
+ THREAD_SIZE / 1024,
nid, K(node_page_state(nid, NR_PAGETABLE)),
nid, K(node_page_state(nid, NR_UNSTABLE_NFS)),
nid, K(node_page_state(nid, NR_BOUNCE)),
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/4][resend] add shmem vmstat
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
` (2 preceding siblings ...)
2009-07-13 6:02 ` [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output KOSAKI Motohiro
@ 2009-07-13 6:05 ` KOSAKI Motohiro
2009-07-13 20:47 ` [PATCH 0/4] OOM analysis helper patch series v3 Rik van Riel
2009-07-14 18:47 ` Li, Ming Chun
5 siblings, 0 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 6:05 UTC (permalink / raw)
To: LKML
Cc: kosaki.motohiro, linux-mm, Andrew Morton, Wu Fengguang,
Christoph Lameter, Rik van Riel
ChangeLog
Since v2
- Rewrote the description
Since v1
- Fixed misaccounting bug on page migration
========================
Subject: [PATCH] add shmem vmstat
Recently we encountered OOM problems due to memory use of the GEM cache.
Generally a large amuont of Shmem/Tmpfs pages tend to create a memory
shortage problem.
We often use the following calculation to determine the amount of shmem
pages:
shmem = NR_ACTIVE_ANON + NR_INACTIVE_ANON - NR_ANON_PAGES
however the expression does not consider isoalted and mlocked pages.
This patch adds explicit accounting for pages used by shmem and tmpfs.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: Rik van Riel <riel@redhat.com>
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
---
drivers/base/node.c | 2 ++
fs/proc/meminfo.c | 2 ++
include/linux/mmzone.h | 1 +
mm/filemap.c | 4 ++++
mm/migrate.c | 5 ++++-
mm/page_alloc.c | 5 ++++-
mm/vmstat.c | 2 +-
7 files changed, 18 insertions(+), 3 deletions(-)
Index: b/drivers/base/node.c
===================================================================
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -85,6 +85,7 @@ static ssize_t node_read_meminfo(struct
"Node %d FilePages: %8lu kB\n"
"Node %d Mapped: %8lu kB\n"
"Node %d AnonPages: %8lu kB\n"
+ "Node %d Shmem: %8lu kB\n"
"Node %d KernelStack: %8lu kB\n"
"Node %d PageTables: %8lu kB\n"
"Node %d NFS_Unstable: %8lu kB\n"
@@ -117,6 +118,7 @@ static ssize_t node_read_meminfo(struct
nid, K(node_page_state(nid, NR_FILE_PAGES)),
nid, K(node_page_state(nid, NR_FILE_MAPPED)),
nid, K(node_page_state(nid, NR_ANON_PAGES)),
+ nid, K(node_page_state(nid, NR_SHMEM)),
nid, node_page_state(nid, NR_KERNEL_STACK) *
THREAD_SIZE / 1024,
nid, K(node_page_state(nid, NR_PAGETABLE)),
Index: b/fs/proc/meminfo.c
===================================================================
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -81,6 +81,7 @@ static int meminfo_proc_show(struct seq_
"Writeback: %8lu kB\n"
"AnonPages: %8lu kB\n"
"Mapped: %8lu kB\n"
+ "Shmem: %8lu kB\n"
"Slab: %8lu kB\n"
"SReclaimable: %8lu kB\n"
"SUnreclaim: %8lu kB\n"
@@ -125,6 +126,7 @@ static int meminfo_proc_show(struct seq_
K(global_page_state(NR_WRITEBACK)),
K(global_page_state(NR_ANON_PAGES)),
K(global_page_state(NR_FILE_MAPPED)),
+ K(global_page_state(NR_SHMEM)),
K(global_page_state(NR_SLAB_RECLAIMABLE) +
global_page_state(NR_SLAB_UNRECLAIMABLE)),
K(global_page_state(NR_SLAB_RECLAIMABLE)),
Index: b/include/linux/mmzone.h
===================================================================
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -100,6 +100,7 @@ enum zone_stat_item {
NR_BOUNCE,
NR_VMSCAN_WRITE,
NR_WRITEBACK_TEMP, /* Writeback using temporary buffers */
+ NR_SHMEM, /* shmem pages (included tmpfs/GEM pages) */
#ifdef CONFIG_NUMA
NUMA_HIT, /* allocated in intended node */
NUMA_MISS, /* allocated in non intended node */
Index: b/mm/filemap.c
===================================================================
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -120,6 +120,8 @@ void __remove_from_page_cache(struct pag
page->mapping = NULL;
mapping->nrpages--;
__dec_zone_page_state(page, NR_FILE_PAGES);
+ if (PageSwapBacked(page))
+ __dec_zone_page_state(page, NR_SHMEM);
BUG_ON(page_mapped(page));
/*
@@ -476,6 +478,8 @@ int add_to_page_cache_locked(struct page
if (likely(!error)) {
mapping->nrpages++;
__inc_zone_page_state(page, NR_FILE_PAGES);
+ if (PageSwapBacked(page))
+ __inc_zone_page_state(page, NR_SHMEM);
spin_unlock_irq(&mapping->tree_lock);
} else {
page->mapping = NULL;
Index: b/mm/vmstat.c
===================================================================
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -644,7 +644,7 @@ static const char * const vmstat_text[]
"nr_bounce",
"nr_vmscan_write",
"nr_writeback_temp",
-
+ "nr_shmem",
#ifdef CONFIG_NUMA
"numa_hit",
"numa_miss",
Index: b/mm/page_alloc.c
===================================================================
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2120,7 +2120,7 @@ void show_free_areas(void)
" unevictable:%lu"
" dirty:%lu writeback:%lu unstable:%lu buffer:%lu\n"
" free:%lu slab_reclaimable:%lu slab_unreclaimable:%lu\n"
- " mapped:%lu pagetables:%lu bounce:%lu\n",
+ " mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n",
global_page_state(NR_ACTIVE_ANON),
global_page_state(NR_ACTIVE_FILE),
global_page_state(NR_INACTIVE_ANON),
@@ -2134,6 +2134,7 @@ void show_free_areas(void)
global_page_state(NR_SLAB_RECLAIMABLE),
global_page_state(NR_SLAB_UNRECLAIMABLE),
global_page_state(NR_FILE_MAPPED),
+ global_page_state(NR_SHMEM),
global_page_state(NR_PAGETABLE),
global_page_state(NR_BOUNCE));
@@ -2156,6 +2157,7 @@ void show_free_areas(void)
" dirty:%lukB"
" writeback:%lukB"
" mapped:%lukB"
+ " shmem:%lukB"
" slab_reclaimable:%lukB"
" slab_unreclaimable:%lukB"
" kernel_stack:%lukB"
@@ -2181,6 +2183,7 @@ void show_free_areas(void)
K(zone_page_state(zone, NR_FILE_DIRTY)),
K(zone_page_state(zone, NR_WRITEBACK)),
K(zone_page_state(zone, NR_FILE_MAPPED)),
+ K(zone_page_state(zone, NR_SHMEM)),
K(zone_page_state(zone, NR_SLAB_RECLAIMABLE)),
K(zone_page_state(zone, NR_SLAB_UNRECLAIMABLE)),
zone_page_state(zone, NR_KERNEL_STACK) *
Index: b/mm/migrate.c
===================================================================
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -312,7 +312,10 @@ static int migrate_page_move_mapping(str
*/
__dec_zone_page_state(page, NR_FILE_PAGES);
__inc_zone_page_state(newpage, NR_FILE_PAGES);
-
+ if (PageSwapBacked(page)) {
+ __dec_zone_page_state(page, NR_SHMEM);
+ __inc_zone_page_state(newpage, NR_SHMEM);
+ }
spin_unlock_irq(&mapping->tree_lock);
return 0;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] OOM analysis helper patch series v3
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
` (3 preceding siblings ...)
2009-07-13 6:05 ` [PATCH 4/4][resend] add shmem vmstat KOSAKI Motohiro
@ 2009-07-13 20:47 ` Rik van Riel
2009-07-13 23:38 ` KOSAKI Motohiro
2009-07-14 18:47 ` Li, Ming Chun
5 siblings, 1 reply; 11+ messages in thread
From: Rik van Riel @ 2009-07-13 20:47 UTC (permalink / raw)
To: KOSAKI Motohiro
Cc: LKML, linux-mm, Andrew Morton, Wu Fengguang, Christoph Lameter
KOSAKI Motohiro wrote:
> ChangeLog
> Since v2
> - Dropped "[4/5] add isolate pages vmstat" temporary because it become
> slightly big. Then, I plan to submit it as another patchset.
Shame, I really liked that patch :)
--
All rights reversed.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output
2009-07-13 6:02 ` [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output KOSAKI Motohiro
@ 2009-07-13 22:29 ` Andrew Morton
2009-07-13 23:36 ` KOSAKI Motohiro
0 siblings, 1 reply; 11+ messages in thread
From: Andrew Morton @ 2009-07-13 22:29 UTC (permalink / raw)
To: KOSAKI Motohiro; +Cc: linux-kernel, linux-mm, fengguang.wu, cl, riel
On Mon, 13 Jul 2009 15:02:25 +0900 (JST)
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:
> ChangeLog
> Since v1
> - Rewrote the descriptin (Thanks Christoph!)
>
> =====================
> Subject: [PATCH] Show kernel stack usage in /proc/meminfo and OOM log output
>
> The amount of memory allocated to kernel stacks can become significant and
> cause OOM conditions. However, we do not display the amount of memory
> consumed by stacks.
>
> Add code to display the amount of memory used for stacks in /proc/meminfo.
>
> ...
>
> +static void account_kernel_stack(struct thread_info *ti, int account)
> +{
> + struct zone *zone = page_zone(virt_to_page(ti));
> +
> + mod_zone_page_state(zone, NR_KERNEL_STACK, account);
> +}
> +
> void free_task(struct task_struct *tsk)
> {
> prop_local_destroy_single(&tsk->dirties);
> + account_kernel_stack(tsk->stack, -1);
But surely there are other less expensive ways of calculating this.
The number we want is small-known-constant * number-of-tasks.
number-of-tasks probably isn't tracked, but can be calculated along the
lines of nr_running(), nr_uninterruptible() and nr_iowait().
number-of-tasks is also equal to number-of-task_structs and
number-of_thread_infos which can be obtained from slab (if the arch
implemented these via slab - uglier).
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output
2009-07-13 22:29 ` Andrew Morton
@ 2009-07-13 23:36 ` KOSAKI Motohiro
0 siblings, 0 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 23:36 UTC (permalink / raw)
To: Andrew Morton
Cc: kosaki.motohiro, linux-kernel, linux-mm, fengguang.wu, cl, riel
> On Mon, 13 Jul 2009 15:02:25 +0900 (JST)
> KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:
>
> > ChangeLog
> > Since v1
> > - Rewrote the descriptin (Thanks Christoph!)
> >
> > =====================
> > Subject: [PATCH] Show kernel stack usage in /proc/meminfo and OOM log output
> >
> > The amount of memory allocated to kernel stacks can become significant and
> > cause OOM conditions. However, we do not display the amount of memory
> > consumed by stacks.
> >
> > Add code to display the amount of memory used for stacks in /proc/meminfo.
> >
> > ...
> >
> > +static void account_kernel_stack(struct thread_info *ti, int account)
> > +{
> > + struct zone *zone = page_zone(virt_to_page(ti));
> > +
> > + mod_zone_page_state(zone, NR_KERNEL_STACK, account);
> > +}
> > +
> > void free_task(struct task_struct *tsk)
> > {
> > prop_local_destroy_single(&tsk->dirties);
> > + account_kernel_stack(tsk->stack, -1);
>
> But surely there are other less expensive ways of calculating this.
> The number we want is small-known-constant * number-of-tasks.
>
> number-of-tasks probably isn't tracked, but can be calculated along the
> lines of nr_running(), nr_uninterruptible() and nr_iowait().
But, nr_running() don't know zone information. we really need
per-zone tracking IMHO.
> number-of-tasks is also equal to number-of-task_structs and
> number-of_thread_infos which can be obtained from slab (if the arch
> implemented these via slab - uglier).
You know, Almost architecture doesn't use slab for kernel-stack.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] OOM analysis helper patch series v3
2009-07-13 20:47 ` [PATCH 0/4] OOM analysis helper patch series v3 Rik van Riel
@ 2009-07-13 23:38 ` KOSAKI Motohiro
0 siblings, 0 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-13 23:38 UTC (permalink / raw)
To: Rik van Riel
Cc: kosaki.motohiro, LKML, linux-mm, Andrew Morton, Wu Fengguang,
Christoph Lameter
> KOSAKI Motohiro wrote:
> > ChangeLog
> > Since v2
> > - Dropped "[4/5] add isolate pages vmstat" temporary because it become
> > slightly big. Then, I plan to submit it as another patchset.
>
> Shame, I really liked that patch :)
Sorry, the modification for migration is slightly big. it is still under
testing on my stress workload testing environment.
I expect it come back at 2-3 days after.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] OOM analysis helper patch series v3
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
` (4 preceding siblings ...)
2009-07-13 20:47 ` [PATCH 0/4] OOM analysis helper patch series v3 Rik van Riel
@ 2009-07-14 18:47 ` Li, Ming Chun
2009-07-14 23:38 ` KOSAKI Motohiro
5 siblings, 1 reply; 11+ messages in thread
From: Li, Ming Chun @ 2009-07-14 18:47 UTC (permalink / raw)
To: KOSAKI Motohiro; +Cc: linux-mm
On Mon, 13 Jul 2009, KOSAKI Motohiro wrote:
> ChangeLog
> Since v2
> - Dropped "[4/5] add isolate pages vmstat" temporary because it become
> slightly big. Then, I plan to submit it as another patchset.
> - Rewrote many patch description (Thanks! Christoph)
> Since v1
> - Dropped "[5/5] add NR_ANON_PAGES to OOM log" patch
> - Instead, introduce "[5/5] add shmem vmstat" patch
> - Fixed unit bug (Thanks Minchan)
> - Separated isolated vmstat to two field (Thanks Minchan and Wu)
> - Fixed isolated page and lumpy reclaim issue (Thanks Minchan)
> - Rewrote some patch description (Thanks Christoph)
>
> This patch series are tested on 2.6.31-rc2 + mm-show_free_areas-display-slab-pages-in-two-separate-fields.patch
For your information, I tested the patches on 2.6.31-rc3 +
mm-show_free_areas-display-slab-pages-in-two-separate-fields.patch. It is
fine.
Vincent Li
Biomedical Research Center
University of British Columbia
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] OOM analysis helper patch series v3
2009-07-14 18:47 ` Li, Ming Chun
@ 2009-07-14 23:38 ` KOSAKI Motohiro
0 siblings, 0 replies; 11+ messages in thread
From: KOSAKI Motohiro @ 2009-07-14 23:38 UTC (permalink / raw)
To: Li, Ming Chun; +Cc: kosaki.motohiro, linux-mm
> On Mon, 13 Jul 2009, KOSAKI Motohiro wrote:
>
> > ChangeLog
> > Since v2
> > - Dropped "[4/5] add isolate pages vmstat" temporary because it become
> > slightly big. Then, I plan to submit it as another patchset.
> > - Rewrote many patch description (Thanks! Christoph)
> > Since v1
> > - Dropped "[5/5] add NR_ANON_PAGES to OOM log" patch
> > - Instead, introduce "[5/5] add shmem vmstat" patch
> > - Fixed unit bug (Thanks Minchan)
> > - Separated isolated vmstat to two field (Thanks Minchan and Wu)
> > - Fixed isolated page and lumpy reclaim issue (Thanks Minchan)
> > - Rewrote some patch description (Thanks Christoph)
> >
> > This patch series are tested on 2.6.31-rc2 + mm-show_free_areas-display-slab-pages-in-two-separate-fields.patch
>
> For your information, I tested the patches on 2.6.31-rc3 +
> mm-show_free_areas-display-slab-pages-in-two-separate-fields.patch. It is
> fine.
Cute. thanks!
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-07-14 23:04 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-13 5:57 [PATCH 0/4] OOM analysis helper patch series v3 KOSAKI Motohiro
2009-07-13 6:00 ` [PATCH 1/4][resend] add per-zone statistics to show_free_areas() KOSAKI Motohiro
2009-07-13 6:01 ` [PATCH 2/4][resend] add buffer cache information " KOSAKI Motohiro
2009-07-13 6:02 ` [PATCH 3/4][resend] Show kernel stack usage in /proc/meminfo and OOM log output KOSAKI Motohiro
2009-07-13 22:29 ` Andrew Morton
2009-07-13 23:36 ` KOSAKI Motohiro
2009-07-13 6:05 ` [PATCH 4/4][resend] add shmem vmstat KOSAKI Motohiro
2009-07-13 20:47 ` [PATCH 0/4] OOM analysis helper patch series v3 Rik van Riel
2009-07-13 23:38 ` KOSAKI Motohiro
2009-07-14 18:47 ` Li, Ming Chun
2009-07-14 23:38 ` KOSAKI Motohiro
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox