From: Frank van Maarseveen <frankvm@frankvm.com>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 2.6.14-rc2] fix incorrect mm->hiwater_vm and mm->hiwater_rss
Date: Wed, 21 Sep 2005 14:19:15 +0200 [thread overview]
Message-ID: <20050921121915.GA14645@janus> (raw)
This fixes a post 2.6.11 regression in maintaining the mm->hiwater_* counters.
Signed-off-by: Frank van Maarseveen <frankvm@frankvm.com>
diff -ru a/arch/ppc64/kernel/vdso.c b/arch/ppc64/kernel/vdso.c
--- a/arch/ppc64/kernel/vdso.c 2005-09-21 11:05:11.000000000 +0200
+++ b/arch/ppc64/kernel/vdso.c 2005-09-21 11:17:06.053426000 +0200
@@ -272,6 +272,7 @@
}
mm->total_vm += (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
up_write(&mm->mmap_sem);
+ update_mem_hiwater(mm);
return 0;
}
diff -ru a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c
--- a/arch/x86_64/ia32/syscall32.c 2005-09-21 11:05:24.000000000 +0200
+++ b/arch/x86_64/ia32/syscall32.c 2005-09-21 11:17:06.130574000 +0200
@@ -72,6 +72,7 @@
}
mm->total_vm += npages;
up_write(&mm->mmap_sem);
+ update_mem_hiwater(mm);
return 0;
}
diff -ru a/fs/exec.c b/fs/exec.c
--- a/fs/exec.c 2005-09-21 11:06:43.000000000 +0200
+++ b/fs/exec.c 2005-09-21 11:17:06.218465000 +0200
@@ -1207,7 +1207,7 @@
/* execve success */
security_bprm_free(bprm);
acct_update_integrals(current);
- update_mem_hiwater(current);
+ update_mem_hiwater(current->mm);
kfree(bprm);
return retval;
}
diff -ru a/include/linux/mm.h b/include/linux/mm.h
--- a/include/linux/mm.h 2005-09-14 14:27:39.000000000 +0200
+++ b/include/linux/mm.h 2005-09-21 11:17:06.327839000 +0200
@@ -949,7 +949,7 @@
}
/* update per process rss and vm hiwater data */
-extern void update_mem_hiwater(struct task_struct *tsk);
+extern void update_mem_hiwater(struct mm_struct *mm);
#ifndef CONFIG_DEBUG_PAGEALLOC
static inline void
diff -ru a/kernel/exit.c b/kernel/exit.c
--- a/kernel/exit.c 2005-09-21 11:07:38.000000000 +0200
+++ b/kernel/exit.c 2005-09-21 11:17:06.395222000 +0200
@@ -839,7 +839,7 @@
preempt_count());
acct_update_integrals(tsk);
- update_mem_hiwater(tsk);
+ update_mem_hiwater(tsk->mm);
group_dead = atomic_dec_and_test(&tsk->signal->live);
if (group_dead) {
del_timer_sync(&tsk->signal->real_timer);
diff -ru a/kernel/sched.c b/kernel/sched.c
--- a/kernel/sched.c 2005-09-21 11:07:39.000000000 +0200
+++ b/kernel/sched.c 2005-09-21 11:17:06.462605000 +0200
@@ -2512,7 +2512,7 @@
/* Account for system time used */
acct_update_integrals(p);
/* Update rss highwater mark */
- update_mem_hiwater(p);
+ update_mem_hiwater(p->mm);
}
/*
diff -ru a/mm/memory.c b/mm/memory.c
--- a/mm/memory.c 2005-09-21 11:07:40.000000000 +0200
+++ b/mm/memory.c 2005-09-21 11:17:06.602253000 +0200
@@ -2210,15 +2210,16 @@
* update_mem_hiwater
* - update per process rss and vm high water data
*/
-void update_mem_hiwater(struct task_struct *tsk)
+void update_mem_hiwater(struct mm_struct *mm)
{
- if (tsk->mm) {
- unsigned long rss = get_mm_counter(tsk->mm, rss);
+ unsigned long rss;
- if (tsk->mm->hiwater_rss < rss)
- tsk->mm->hiwater_rss = rss;
- if (tsk->mm->hiwater_vm < tsk->mm->total_vm)
- tsk->mm->hiwater_vm = tsk->mm->total_vm;
+ if (likely(mm)) {
+ rss = get_mm_counter(mm, rss);
+ if (mm->hiwater_rss < rss)
+ mm->hiwater_rss = rss;
+ if (mm->hiwater_vm < mm->total_vm)
+ mm->hiwater_vm = mm->total_vm;
}
}
diff -ru a/mm/mmap.c b/mm/mmap.c
--- a/mm/mmap.c 2005-09-21 11:07:40.000000000 +0200
+++ b/mm/mmap.c 2005-09-21 11:17:06.755572000 +0200
@@ -854,6 +854,7 @@
mm->stack_vm += pages;
if (flags & (VM_RESERVED|VM_IO))
mm->reserved_vm += pages;
+ update_mem_hiwater(mm);
}
#endif /* CONFIG_PROC_FS */
@@ -1915,6 +1916,7 @@
vma_link(mm, vma, prev, rb_link, rb_parent);
out:
mm->total_vm += len >> PAGE_SHIFT;
+ update_mem_hiwater(mm);
if (flags & VM_LOCKED) {
mm->locked_vm += len >> PAGE_SHIFT;
make_pages_present(addr, addr + len);
diff -ru a/mm/nommu.c b/mm/nommu.c
--- a/mm/nommu.c 2005-09-21 11:07:40.000000000 +0200
+++ b/mm/nommu.c 2005-09-21 12:26:02.166764000 +0200
@@ -839,6 +839,7 @@
show_process_blocks();
#endif
+ update_mem_hiwater(mm);
return (unsigned long) result;
error:
@@ -1079,16 +1080,16 @@
{
}
-void update_mem_hiwater(struct task_struct *tsk)
+void update_mem_hiwater(struct mm_struct *mm)
{
unsigned long rss;
- if (likely(tsk->mm)) {
- rss = get_mm_counter(tsk->mm, rss);
- if (tsk->mm->hiwater_rss < rss)
- tsk->mm->hiwater_rss = rss;
- if (tsk->mm->hiwater_vm < tsk->mm->total_vm)
- tsk->mm->hiwater_vm = tsk->mm->total_vm;
+ if (likely(mm)) {
+ rss = get_mm_counter(mm, rss);
+ if (mm->hiwater_rss < rss)
+ mm->hiwater_rss = rss;
+ if (mm->hiwater_vm < mm->total_vm)
+ mm->hiwater_vm = mm->total_vm;
}
}
--
Frank
next reply other threads:[~2005-09-21 12:19 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-21 12:19 Frank van Maarseveen [this message]
2005-09-21 14:38 ` [PATCH 2.6.14-rc2] fix incorrect mm->hiwater_vm and mm->hiwater_rss Hugh Dickins
2005-09-21 14:58 ` Frank van Maarseveen
2005-09-21 15:35 ` Hugh Dickins
2005-09-21 18:42 ` Frank van Maarseveen
2005-09-21 18:57 ` Hugh Dickins
2005-09-21 15:26 ` Christoph Lameter
2005-09-21 15:50 ` Frank van Maarseveen
2005-09-21 16:57 ` Jay Lan
2005-09-21 17:05 ` Christoph Lameter
2005-09-21 17:39 ` Jay Lan
2005-09-21 18:06 ` Frank van Maarseveen
2005-09-21 18:38 ` Jay Lan
2005-09-21 17:12 ` Hugh Dickins
2005-09-21 17:31 ` Jay Lan
2005-09-21 17:45 ` Christoph Lameter
2005-09-21 17:46 ` Hugh Dickins
2005-09-21 18:05 ` Jay Lan
2005-09-21 18:26 ` Frank van Maarseveen
2005-09-21 19:19 ` Hugh Dickins
2005-09-21 19:28 ` Frank van Maarseveen
2005-09-21 19:38 ` Jay Lan
2005-09-21 19:47 ` Hugh Dickins
2005-09-21 19:48 ` Frank van Maarseveen
2005-09-21 19:52 ` Hugh Dickins
2005-09-21 19:48 ` Christoph Lameter
2005-09-21 20:06 ` Hugh Dickins
2005-09-21 20:13 ` Christoph Lameter
2005-09-27 20:43 ` Jay Lan
2005-09-27 21:47 ` Jay Lan
2005-09-27 21:50 ` Christoph Lameter
2005-09-27 22:43 ` Jay Lan
2005-09-28 13:18 ` Hugh Dickins
2005-09-28 17:31 ` Jay Lan
2005-10-03 19:53 ` Hugh Dickins
2005-10-04 8:59 ` Frank van Maarseveen
2005-10-04 21:48 ` Jay Lan
2005-10-07 2:09 ` Jay Lan
2005-10-07 3:03 ` Hugh Dickins
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=20050921121915.GA14645@janus \
--to=frankvm@frankvm.com \
--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