public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Detecting threads vs processes with ps or /proc
@ 2002-12-06 15:24 Nick LeRoy
  2002-12-06 19:48 ` Robert Love
  2002-12-08 12:24 ` Gilad Ben-Yossef
  0 siblings, 2 replies; 9+ messages in thread
From: Nick LeRoy @ 2002-12-06 15:24 UTC (permalink / raw)
  To: linux-kernel

Hello, all.

>From searching through mail archives, etc., I'm pretty sure I know the answer 
already, but I'm going to post it anyway.

Our software (Condor) and some related software (Globus) is running on a 
number of systems around the world.  Condor attempts to monitor the RAM usage 
of it's "user" (maybe "client" is a better word here) processes.  If the 
client forks, we need to monitor the client and all of it's children, which 
really isn't difficult.  The _problem_ is that if the client creates threads, 
it's impossible, from what we can tell, to tell the difference between 
separate threads and processes.

So my question, I guess, is this.  How can you tell, from user space, whether 
a group of processes are related as threads or through a "normal" child / 
parent relationship?  The systems that we're running on currently are 2.2.19 
and 2.4.18/19.

>From what else I've read, it seems that the new threading model in 2.5/2.6 is 
changing to a more POSIX friendly model, which will effect this answer, but 
we're not running 2.5 and really can't force such an upgrade -- hell, right 
now we're having problems getting a switch from 2.2 pushed through.

Thanks _very_ much in advance.  I'd be tickled pink if the answer is something 
like "just look at the foo flag in ps", or "upgrade to version 1.2.3.4 of 
procps and do xyzzy", but my intuition tells me otherwise.

Thanks,

-Nick



^ permalink raw reply	[flat|nested] 9+ messages in thread
* Re: Detecting threads vs processes with ps or /proc
@ 2002-12-09  0:24 Albert D. Cahalan
  2002-12-09  3:18 ` Nick LeRoy
  0 siblings, 1 reply; 9+ messages in thread
From: Albert D. Cahalan @ 2002-12-09  0:24 UTC (permalink / raw)
  To: linux-kernel; +Cc: nleroy, acahalan


Robert Love writes:
> On Fri, 2002-12-06 at 14:56, Nick LeRoy wrote:
>
>> I was considerring doing something like this as well.  From your
>> experience,  does it work reliably?
>
> It never fails to detect threads (no false negatives).

Testing the algorithm on idle test processes won't show
this damn-obvious race condition:

1. you read the first thread's info
2. the second thread calls mmap() and/or takes a page fault
3. you read the second thread's info

> It does sometimes detect child processes that forked but did not exec as
> threads (false positives).  The failure case is when a program forks,
> does not call exec, and the children go on to execute the exact same
> code (so they look and act just like threads, but they have unique
> addresses spaces).
>
> One thing to note: if you can modify the kernel and procps, you can just
> export the value of task->mm out of /proc.  It is a gross hack, and
> perhaps a security issue, but that will work 100%.  Same ->mm implies
> thread.

This forces sorting, which is slow and eats memory.
It's better to list the ->mm peers in a proc file.
For example, a /proc/42/mm-peers file containing
a simple list of the peers.

There's still a race condition, but at least it only
involves threads that get created during the /proc scan.

There's also the problem with new-style threads simply not
being listed anywhere. Crackers are going to love it if
the Linux 2.6 kernel has a built-in way to hide things.

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

end of thread, other threads:[~2002-12-09 16:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-12-06 15:24 Detecting threads vs processes with ps or /proc Nick LeRoy
2002-12-06 19:48 ` Robert Love
2002-12-06 19:56   ` Nick LeRoy
2002-12-06 20:09     ` Robert Love
2002-12-09 16:27       ` Jeremy Fitzhardinge
2002-12-08 12:24 ` Gilad Ben-Yossef
  -- strict thread matches above, loose matches on Subject: below --
2002-12-09  0:24 Albert D. Cahalan
2002-12-09  3:18 ` Nick LeRoy
2002-12-09  3:47   ` Robert Love

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