public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
[parent not found: <997973469.7632.10.camel@pc-16.suse.lists.linux.kernel>]
* [PATCH] processes with shared vm
@ 2001-08-17  7:50 Terje Eggestad
  2001-08-17  7:56 ` Robert Love
  0 siblings, 1 reply; 19+ messages in thread
From: Terje Eggestad @ 2001-08-17  7:50 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1019 bytes --]

I figured out that it's difficult to find out from /proc
which processes that share VM (created with clone(CLONE_VM)). 

made a patch that adds in /proc/<pid>/status a VmClones field that tells
how many proc that uses the same VM (mm_struct).  if there are clones I
add another field VmFirstClone with the pid of 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 SIZE and RSS of threads.

The patch need to be applied to linux/fs/proc/array.c

NB: developed on 2.4.3

TJ

-- 
_________________________________________________________________________

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            
_________________________________________________________________________

[-- Attachment #2: vmclone.patch --]
[-- Type: text/x-patch, Size: 2250 bytes --]

*** array.c	Thu Aug 16 16:33:56 2001
--- array.c.orig	Mon Mar 19 21:34:55 2001
***************
*** 50,61 ****
   * 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>
--- 50,55 ----
***************
*** 184,190 ****
  static inline char * task_mem(struct mm_struct *mm, char *buffer)
  {
  	struct vm_area_struct * vma;
!  	unsigned long data = 0, stack = 0;
  	unsigned long exec = 0, lib = 0;
  
  	down_read(&mm->mmap_sem);
--- 178,184 ----
  static inline char * task_mem(struct mm_struct *mm, char *buffer)
  {
  	struct vm_area_struct * vma;
! 	unsigned long data = 0, stack = 0;
  	unsigned long exec = 0, lib = 0;
  
  	down_read(&mm->mmap_sem);
***************
*** 212,235 ****
  		"VmData:\t%8lu kB\n"
  		"VmStk:\t%8lu kB\n"
  		"VmExe:\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, 
! 		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;
  }
--- 206,217 ----
  		"VmData:\t%8lu kB\n"
  		"VmStk:\t%8lu kB\n"
  		"VmExe:\t%8lu kB\n"
! 		"VmLib:\t%8lu kB\n",
  		mm->total_vm << (PAGE_SHIFT-10),
  		mm->locked_vm << (PAGE_SHIFT-10),
  		mm->rss << (PAGE_SHIFT-10),
  		data - stack, stack,
! 		exec - lib, lib);
  	up_read(&mm->mmap_sem);
  	return buffer;
  }

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2001-08-31 23:53 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <Pine.LNX.4.10.10108171428450.21522-100000@coffee.psychology.mcmaster.ca>
     [not found] ` <Pine.LNX.4.10.10108171428450.21522-100000@coffee.psychology.mcm aster.ca>
2001-08-17 14:39   ` [PATCH] processes with shared vm Dave McCracken
     [not found] <997973469.7632.10.camel@pc-16.suse.lists.linux.kernel>
2001-08-17  8:21 ` Andi Kleen
2001-08-17  8:31   ` Robert Love
2001-08-17  8:46   ` Terje Eggestad
2001-08-17 14:26     ` Dave McCracken
2001-08-17 20:55       ` Andi Kleen
2001-08-17 21:15         ` Dave McCracken
2001-08-18 13:29           ` Terje Eggestad
2001-08-31 23:53           ` Mike Touloumtzis
2001-08-17  7:50 Terje Eggestad
2001-08-17  7:56 ` Robert Love
2001-08-17  8:04   ` Terje Eggestad
2001-08-17  8:08     ` Robert Love
2001-08-17  8:15       ` Terje Eggestad
2001-08-17 12:26         ` michael
2001-08-18 14:15           ` Terje Eggestad
2001-08-19  6:24             ` Albert D. Cahalan
2001-08-19 12:23               ` Terje Eggestad
2001-08-19 23:25                 ` Albert D. Cahalan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox