From: William Lee Irwin III <wli@holomorphy.com>
To: Roger Luethi <rl@hellgate.ch>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org,
Albert Cahalan <albert@users.sf.net>, Paul Jackson <pj@sgi.com>
Subject: Re: [1/1][PATCH] nproc v2: netlink access to /proc information
Date: Thu, 9 Sep 2004 12:00:24 -0700 [thread overview]
Message-ID: <20040909190024.GH3106@holomorphy.com> (raw)
In-Reply-To: <20040909184933.GG3106@holomorphy.com>
On Thu, Sep 09, 2004 at 11:49:33AM -0700, William Lee Irwin III wrote:
> I'll follow up shortly with a task_mem()/task_mem_cheap() consolidation
> patch atop the others I sent.
Consolidate __task_mem() and __task_mem_cheap() now that both have been
made cheap, and also combine struct task_mem with struct task_mem_cheap.
Also adjust various users of *_cheap to the new terminology so no trace
of the *_cheap bits remains. Compiletested on ia64.
Index: mm4-2.6.9-rc1/kernel/nproc.c
===================================================================
--- mm4-2.6.9-rc1.orig/kernel/nproc.c 2004-09-08 18:11:24.826811093 -0700
+++ mm4-2.6.9-rc1/kernel/nproc.c 2004-09-09 12:00:44.649267323 -0700
@@ -32,17 +32,14 @@
u32 vmstack;
u32 vmexe;
u32 vmlib;
-};
-
-struct task_mem_cheap {
u32 vmsize;
u32 vmlock;
u32 vmrss;
};
/*
- * __task_mem/__task_mem_cheap basically duplicate the MMU version of
- * task_mem, but they are split by cost and work on structs.
+ * __task_mem() basically duplicates() the MMU and nommu versions of
+ * task_mem() from fs/proc/task_mmu.c and fs/proc/task_nommu.c
*/
#ifdef CONFIG_MMU
static void __task_mem(struct task_struct *tsk, struct task_mem *res)
@@ -57,22 +54,10 @@
res->vmstack = mm->stack_vm << (PAGE_SHIFT - 10);
res->vmexe = PAGE_ALIGN(mm->end_code - mm->start_code) >> 10;
res->vmlib = (mm->exec_vm << (PAGE_SHIFT - 10)) - res->vmexe;
- mmput(mm);
- }
-}
-
-static void __task_mem_cheap(struct task_struct *tsk, struct task_mem_cheap *res)
-{
- struct mm_struct *mm = get_task_mm(tsk);
- if (mm) {
res->vmsize = mm->total_vm << (PAGE_SHIFT-10);
res->vmlock = mm->locked_vm << (PAGE_SHIFT-10);
res->vmrss = mm->rss << (PAGE_SHIFT-10);
mmput(mm);
- } else {
- res->vmsize = 0;
- res->vmlock = 0;
- res->vmrss = 0;
}
}
#else /* !CONFIG_MMU */
@@ -86,9 +71,16 @@
unsigned long bytes = 0, sbytes = 0, slack = 0;
struct mm_tblk_struct *tblk;
+ stats->vmrss += kobjsize(mm);
down_read(&mm->mmap_sem);
for (tblk = &mm->context.tblk; tblk; tblk = tblk->next) {
- if (!tblk->rblock)
+ if (tblk->next)
+ stats->vmrss += kobjsize(tblk->next);
+ if (tblk->rblock) {
+ stats->vmsize += kobjsize(tblk->rblock);
+ stats->vmrss += kobjsize(tblk->rblock);
+ stats->vmrss += kobjsize(tblk->rblock->kblock);
+ } else
continue;
bytes += kobjsize(tblk);
if (atomic_read(&mm->mm_count) > 1) ||
@@ -120,34 +112,12 @@
stats->vmdata = bytes;
stats->vmstack = sbytes;
stats->vmexe = stats->vmlib = 0;
+ stats->vmrss += mm->end_code - mm->start_code;
+ stats->vmrss += mm->start_stack - mm->start_data;
+ stats->vmrss >>= 10;
+ stats->vmsize >>= 10;
}
}
-
-static void __task_mem_cheap(task_t *task, struct task_mem_cheap *stats)
-{
- struct mm_struct *mm = get_task_mm(task);
- struct mm_tblock_struct *tblk;
- int size;
-
- memset(stats, 0, sizeof(struct task_mem_cheap));
- stats->vmrss += kobjsize(mm);
- down_read(&mm->mmap_sem);
- for (tblk = &mm->context.block; tblk; tblk = tblk->next) {
- if (tblk->next)
- stats->vmrss += kobjsize(tblk->next);
- if (tblk->rblock) {
- stats->vmsize += kobjsize(tblk->rblock);
- stats->vmrss += kobjsize(tblk->rblock);
- stats->vmrss += kobjsize(tblk->rblock->kblock);
- }
- }
- stats->vmrss += mm->end_code - mm->start_code;
- stats->vmrss += mm->start_stack - mm->start_data;
- up_read(&mm->mmap_sem);
- mmput(mm);
- stats->vmrss >>= 10;
- stats->vmsize >>= 10;
-}
#endif /* !CONFIG_MMU */
/*
@@ -223,10 +193,9 @@
static char *nproc_ps_field(u32 id, char *buf, task_t *tsk)
{
struct task_mem tsk_mem;
- struct task_mem_cheap tsk_mem_cheap;
tsk_mem.vmdata = (~0);
- tsk_mem_cheap.vmsize = (~0);
+ tsk_mem.vmsize = (~0);
switch (id) {
case NPROC_PID:
@@ -238,20 +207,20 @@
case NPROC_VMSIZE:
case NPROC_VMLOCK:
case NPROC_VMRSS:
- if (tsk_mem_cheap.vmsize == (~0))
- __task_mem_cheap(tsk, &tsk_mem_cheap);
+ if (tsk_mem.vmsize == (~0))
+ __task_mem(tsk, &tsk_mem);
switch (id) {
case NPROC_VMSIZE:
- mstore(tsk_mem_cheap.vmsize,
+ mstore(tsk_mem.vmsize,
NPROC_VMSIZE, buf);
break;
case NPROC_VMLOCK:
- mstore(tsk_mem_cheap.vmlock,
+ mstore(tsk_mem.vmlock,
NPROC_VMLOCK, buf);
break;
case NPROC_VMRSS:
- mstore(tsk_mem_cheap.vmrss,
+ mstore(tsk_mem.vmrss,
NPROC_VMRSS, buf);
break;
}
next prev parent reply other threads:[~2004-09-09 19:07 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-08 18:40 [0/1][ANNOUNCE] nproc v2: netlink access to /proc information Roger Luethi
2004-09-08 18:41 ` [1/1][PATCH] " Roger Luethi
2004-09-09 0:35 ` William Lee Irwin III
2004-09-09 0:43 ` William Lee Irwin III
2004-09-09 1:15 ` William Lee Irwin III
2004-09-09 1:17 ` [1/2] rediff nproc v2 vs. 2.6.9-rc1-mm4 William Lee Irwin III
2004-09-09 1:21 ` [2/2] handle CONFIG_MMU=n and use new vm stats for CONFIG_MMU=y William Lee Irwin III
2004-09-09 1:22 ` William Lee Irwin III
2004-09-09 1:26 ` [3/2] round up text memory to the nearest page in fs/proc/task_mmu.c William Lee Irwin III
2004-09-09 18:43 ` [1/1][PATCH] nproc v2: netlink access to /proc information Roger Luethi
2004-09-09 18:49 ` William Lee Irwin III
2004-09-09 19:00 ` William Lee Irwin III [this message]
2004-09-09 19:02 ` [4/2] consolidate __task_mem() and __task_mem_cheap() William Lee Irwin III
2004-09-09 19:07 ` Roger Luethi
2004-09-09 19:15 ` [5/2] fix nommu VSZ reporting in consolidated task_mem() William Lee Irwin III
2004-09-09 19:11 ` [1/1][PATCH] nproc v2: netlink access to /proc information Roger Luethi
2004-09-09 19:23 ` William Lee Irwin III
2004-09-09 21:19 ` Roger Luethi
2004-09-10 15:30 ` Roger Luethi
2004-09-11 22:25 ` Albert Cahalan
2004-09-12 4:58 ` William Lee Irwin III
2004-09-14 5:59 ` Roger Luethi
2004-09-14 6:18 ` William Lee Irwin III
2004-09-14 6:23 ` William Lee Irwin III
2004-09-14 7:47 ` Greg Ungerer
2004-09-14 8:27 ` Roger Luethi
2004-09-09 11:53 ` Stephen Smalley
2004-09-09 17:22 ` William Lee Irwin III
2004-09-09 17:53 ` Roger Luethi
2004-09-09 20:01 ` Stephen Smalley
2004-09-09 20:48 ` Chris Wright
2004-09-10 12:11 ` Stephen Smalley
2004-09-09 20:55 ` Roger Luethi
2004-09-09 21:05 ` Chris Wright
2004-09-09 21:25 ` Roger Luethi
2004-09-11 22:36 ` Albert Cahalan
2004-09-12 5:00 ` William Lee Irwin III
2004-09-14 6:44 ` Roger Luethi
2004-09-14 7:10 ` William Lee Irwin III
2004-09-14 7:55 ` Roger Luethi
2004-09-14 8:01 ` William Lee Irwin III
2004-09-14 9:27 ` Roger Luethi
2004-09-14 15:37 ` William Lee Irwin III
2004-09-14 16:01 ` Roger Luethi
2004-09-14 16:37 ` William Lee Irwin III
2004-09-14 17:15 ` Roger Luethi
2004-09-14 17:43 ` William Lee Irwin III
2004-09-14 18:45 ` Roger Luethi
2004-09-14 19:07 ` William Lee Irwin III
2004-09-14 19:31 ` Roger Luethi
2004-09-14 19:36 ` William Lee Irwin III
2004-09-14 19:50 ` Roger Luethi
2004-09-15 11:44 ` Roger Luethi
2004-09-15 20:02 ` Roger Luethi
2004-09-15 20:20 ` William Lee Irwin III
2004-09-15 20:33 ` Roger Luethi
2004-09-15 20:44 ` Roger Luethi
2004-09-14 18:37 ` Chris Wright
2004-09-14 18:55 ` Roger Luethi
2004-09-14 19:05 ` Chris Wright
2004-09-14 21:12 ` Roger Luethi
2004-09-09 20:44 ` Chris Wright
2004-09-16 21:43 ` nproc: So? Roger Luethi
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=20040909190024.GH3106@holomorphy.com \
--to=wli@holomorphy.com \
--cc=akpm@osdl.org \
--cc=albert@users.sf.net \
--cc=linux-kernel@vger.kernel.org \
--cc=pj@sgi.com \
--cc=rl@hellgate.ch \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.