lkml.org 
[lkml]   [2001]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
SubjectRe: [PATCH] processes with shared vm
From
Date
Man......

Is there any other way I can do this wrong!?!?, guess I need to write
more patches :-)

--- array.c.orig Mon Mar 19 21:34:55 2001
+++ array.c Thu Aug 16 16:33:56 2001
@@ -50,6 +50,12 @@
* Al Viro & Jeff Garzik : moved most of the thing into base.c and
* : proc_misc.c. The rest may eventually go into
* : base.c too.
+ *
+ * Terje Eggestad : added in /proc/<pid>/status a VmClones: n
+ * : that tells how many proc that uses the same VM (mm_struct).
+ * : if there are clones add another field VmFirstClone with the
+ * : clone with the lowest pid. Needed for things like gtop that adds
+ * : mem usage of groups of proc, or else they add up the usage of threads.
*/

#include <linux/config.h>
@@ -178,7 +184,7 @@
static inline char * task_mem(struct mm_struct *mm, char *buffer)
{
struct vm_area_struct * vma;
- unsigned long data = 0, stack = 0;
+ unsigned long data = 0, stack = 0;
unsigned long exec = 0, lib = 0;

down_read(&mm->mmap_sem);
@@ -206,12 +212,24 @@
"VmData:\t%8lu kB\n"
"VmStk:\t%8lu kB\n"
"VmExe:\t%8lu kB\n"
- "VmLib:\t%8lu kB\n",
+ "VmLib:\t%8lu kB\n"
+ "VmClones:\t%d\n",
mm->total_vm << (PAGE_SHIFT-10),
mm->locked_vm << (PAGE_SHIFT-10),
mm->rss << (PAGE_SHIFT-10),
data - stack, stack,
- exec - lib, lib);
+ exec - lib, lib,
+ mm->mm_users.counter-2);
+ /* if we've vm clones, find the lowest/first pid of the clones */
+ if (mm->mm_users.counter > 2) {
+ struct task_struct *p;
+ read_lock(&tasklist_lock);
+ for_each_task(p) {
+ if (p->mm == mm) break;
+ };
+ buffer += sprintf(buffer, "VmFirstClone:\t%d\n", p->pid);
+ read_unlock(&tasklist_lock);
+ };
up_read(&mm->mmap_sem);
return buffer;
}
Den 17 Aug 2001 04:08:53 -0400, skrev Robert Love:
> On 17 Aug 2001 10:04:04 +0200, Terje Eggestad wrote:
> > OK
> the patch is backwards :) i think your original one was too
>
> diff -u <old> <new>
>
> --
> Robert M. Love
> rml at ufl.edu
> rml at tech9.net
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
_________________________________________________________________________
Terje Eggestad terje.eggestad@scali.no
Scali Scalable Linux Systems http://www.scali.com

Olaf Helsets Vei 6 tel: +47 22 62 89 61 (OFFICE)
P.O.Box 70 Bogerud +47 975 31 574 (MOBILE)
N-0621 Oslo fax: +47 22 62 89 51
NORWAY
_________________________________________________________________________--- array.c.orig Mon Mar 19 21:34:55 2001
+++ array.c Thu Aug 16 16:33:56 2001
@@ -50,6 +50,12 @@
* Al Viro & Jeff Garzik : moved most of the thing into base.c and
* : proc_misc.c. The rest may eventually go into
* : base.c too.
+ *
+ * Terje Eggestad : added in /proc/<pid>/status a VmClones: n
+ * : that tells how many proc that uses the same VM (mm_struct).
+ * : if there are clones add another field VmFirstClone with the
+ * : clone with the lowest pid. Needed for things like gtop that adds
+ * : mem usage of groups of proc, or else they add up the usage of threads.
*/

#include <linux/config.h>
@@ -178,7 +184,7 @@
static inline char * task_mem(struct mm_struct *mm, char *buffer)
{
struct vm_area_struct * vma;
- unsigned long data = 0, stack = 0;
+ unsigned long data = 0, stack = 0;
unsigned long exec = 0, lib = 0;

down_read(&mm->mmap_sem);
@@ -206,12 +212,24 @@
"VmData:\t%8lu kB\n"
"VmStk:\t%8lu kB\n"
"VmExe:\t%8lu kB\n"
- "VmLib:\t%8lu kB\n",
+ "VmLib:\t%8lu kB\n"
+ "VmClones:\t%d\n",
mm->total_vm << (PAGE_SHIFT-10),
mm->locked_vm << (PAGE_SHIFT-10),
mm->rss << (PAGE_SHIFT-10),
data - stack, stack,
- exec - lib, lib);
+ exec - lib, lib,
+ mm->mm_users.counter-2);
+ /* if we've vm clones, find the lowest/first pid of the clones */
+ if (mm->mm_users.counter > 2) {
+ struct task_struct *p;
+ read_lock(&tasklist_lock);
+ for_each_task(p) {
+ if (p->mm == mm) break;
+ };
+ buffer += sprintf(buffer, "VmFirstClone:\t%d\n", p->pid);
+ read_unlock(&tasklist_lock);
+ };
up_read(&mm->mmap_sem);
return buffer;
}
\
 
 \ /
  Last update: 2005-03-22 12:57    [W:0.079 / U:0.468 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site