public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Terje Eggestad <terje.eggestad@scali.no>
To: linux-kernel@vger.kernel.org
Subject: [PATCH] processes with shared vm
Date: 17 Aug 2001 09:50:06 +0200	[thread overview]
Message-ID: <997973469.7632.10.camel@pc-16> (raw)

[-- 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;
  }

             reply	other threads:[~2001-08-17  7:50 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-17  7:50 Terje Eggestad [this message]
2001-08-17  7:56 ` [PATCH] processes with shared vm 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
     [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
     [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   ` Dave McCracken

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=997973469.7632.10.camel@pc-16 \
    --to=terje.eggestad@scali.no \
    --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