On 1/10/06, Joe Van D. [email protected] wrote:
program starts a couple threads (or forks a child process), I then
have to figure out the cpu percentage of each of the child threads
(and their childs and their child’s childs, and so on) and add them
together to get a total for the process.
I’m struggling to come up with an elegant way to solve this problem. Any ideas?
I can’t make heads or tails out of this behavior. 5463 is a thread,
btw. Linux 2.4.21, Ruby 1.8.4. When I do a directory glob of /proc/,
5463 isn’t coming up.
irb(main):002:0> File.directory? “/proc/5463”
=> true
irb(main):003:0> Dir[“/proc/5*”].sort
=> [“/proc/5”, “/proc/5111”, “/proc/5113”, “/proc/5459”, “/proc/5470”,
“/proc/5477”, “/proc/5486”, “/proc/5487”, “/proc/5653”, “/proc/5654”,
“/proc/5800”, “/proc/5810”, “/proc/5811”]
irb(main):004:0> Dir[“/proc/5*”].include?(“/proc/5463”)
=> false
irb(main):005:0> # WTF
irb(main):006:0* exit
% ls -ld /proc/5463
dr-xr-xr-x 3 root games 0 Jan 10 15:26 /proc/5463/
% ls -l /proc/5463
ls: cannot read symbolic link /proc/5463/cwd: Permission denied
ls: cannot read symbolic link /proc/5463/root: Permission denied
ls: cannot read symbolic link /proc/5463/exe: Permission denied
total 0
-r–r–r-- 1 root games 0 Jan 10 15:26 cmdline
-r–r–r-- 1 root games 0 Jan 10 15:26 cpu
lrwxrwxrwx 1 root games 0 Jan 10 15:26 cwd
-r-------- 1 root games 0 Jan 10 15:26 environ
lrwxrwxrwx 1 root games 0 Jan 10 15:26 exe
dr-x------ 2 root games 0 Jan 10 15:26 fd/
-r-------- 1 root games 0 Jan 10 15:26 maps
-rw------- 1 root games 0 Jan 10 15:26 mem
-r–r–r-- 1 root games 0 Jan 10 15:26 mounts
lrwxrwxrwx 1 root games 0 Jan 10 15:26 root
-r–r–r-- 1 root games 0 Jan 10 15:26 stat
-r–r–r-- 1 root games 0 Jan 10 15:26 statm
-r–r–r-- 1 root games 0 Jan 10 15:26 status
% cat /proc/5463/status
Name: sccng.x
State: S (sleeping)
Tgid: 5459
Pid: 5463
PPid: 5459
TracerPid: 0
Uid: 0 0 0 0
Gid: 20 20 20 20
FDSize: 256
Groups: 0 1 2 3 4 6 10 1 2 3 4
VmSize: 147612 kB
VmLck: 147612 kB
VmRSS: 146648 kB
VmData: 58268 kB
VmStk: 776 kB
VmExe: 468 kB
VmLib: 11512 kB
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000080002e47
CapInh: 00000000ffffffff
CapPrm: 00000000ffffffff
CapEff: 00000000ffffffff