Hello, Our system is sunfire v890 running solaris 10 08/07 release. The problem we are experiencing is cpu hog process. I find the pattern using ''truss -f -p pid'' is as following: lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF] 27082: pollsys(0xFFBFD560, 17, 0xFFBFF5C8, 0x00000000) = 1 27082: lwp_sigmask(SIG_SETMASK, 0xFFBFFAFF, 0x0000FFF7) = 0xFFBFFEFF [0x0000FFFF] 27082: sigaction(SIGPIPE, 0xFFBFF388, 0xFFBFF428) = 0 27082: pollsys(0xFFBFD3F8, 1, 0xFFBFF460, 0x00000000) = 1 27082: sigaction(SIGPIPE, 0xFFBFF388, 0xFFBFF428) = 0 27082: recvfrom(386, "\r\n\r\n", 8, 2, 0xFFBFF4B4, 0xFFBFF4C4) = 4 27082: time() = 1245355435 27082: time() = 1245355435 27082: time() = 1245355435 On dev server, which doe NOT have the problem, the truss output is as following: 9050: lwp_sigmask(SIG_SETMASK, 0xFFBFFEFF, 0x0000FFF7) = 0xFFBFFEFF [0x0000FFFF] 19050: lwp_sigmask(SIG_SETMASK, 0xFFBFFAFF, 0x0000FFF7) = 0xFFBFFEFF [0x0000FFFF] 19050: pollsys(0xFFBFEC10, 7, 0xFFBFF048, 0x00000000) = 0 19050: lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF] 19050: pollsys(0xFFBFD308, 13, 0xFFBFF370, 0x00000000) = 1 19050: lwp_sigmask(SIG_SETMASK, 0xFFBFFAFF, 0x0000FFF7) = 0xFFBFFEFF [0x0000FFFF] 19050: sigaction(SIGPIPE, 0xFFBFEF98, 0xFFBFF038) = 0 19050: write(115, " 0 0 7 5 1 - 1 2 0 ".., 79) = 79 19050: sigaction(SIGPIPE, 0xFFBFEF98, 0xFFBFF038) = 0 19050: time() = 1245355630 19050: time() = 1245355630 19050: time() = 1245355630 Looks like the difference is after sigaction, the problematic process is in dead loop while the normal one is taking write action. I tried dtrace to capture the difference as following: #!/usr/sbin/dtrace -qs proc:::signal-send /args[2] == SIGPIPE/ { ??????? printf ( "SIGPIPE was sent by %s pid = %d \n", args[1]->pr_fname,args[1]->pr_pid); } This doesn''t work as SIGPIPE is not a signal. Could anyone suggest the right approach? Thanks in advance, zhu __________________________________________________________________ Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now http://ca.toolbar.yahoo.com. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090618/34f3fec3/attachment.html>
Hello,> > Our system is sunfire v890 running solaris 10 08/07 release. The problem we > are experiencing is one process is taking too much cpu resource. > > I find the pattern using ''truss -f -p pid'' is as following: > > lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF] > 27082: pollsys(0xFFBFD560, 17, 0xFFBFF5C8, 0x00000000) = 1 > 27082: lwp_sigmask(SIG_SETMASK, 0xFFBFFAFF, 0x0000FFF7) = 0xFFBFFEFF > [0x0000FFFF] > 27082: sigaction(SIGPIPE, 0xFFBFF388, 0xFFBFF428) = 0 > 27082: pollsys(0xFFBFD3F8, 1, 0xFFBFF460, 0x00000000) = 1 > 27082: sigaction(SIGPIPE, 0xFFBFF388, 0xFFBFF428) = 0 > 27082: recvfrom(386, "\r\n\r\n", 8, 2, 0xFFBFF4B4, 0xFFBFF4C4) = 4 > 27082: time() = 1245355435 > 27082: time() = 1245355435 > 27082: time() = 1245355435 > > On dev server, which doe NOT have the problem, the truss output is as > following: > 9050: lwp_sigmask(SIG_SETMASK, 0xFFBFFEFF, 0x0000FFF7) = 0xFFBFFEFF > [0x0000FFFF] > 19050: lwp_sigmask(SIG_SETMASK, 0xFFBFFAFF, 0x0000FFF7) = 0xFFBFFEFF > [0x0000FFFF] > 19050: pollsys(0xFFBFEC10, 7, 0xFFBFF048, 0x00000000) = 0 > 19050: lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF > [0x0000FFFF] > 19050: pollsys(0xFFBFD308, 13, 0xFFBFF370, 0x00000000) = 1 > 19050: lwp_sigmask(SIG_SETMASK, 0xFFBFFAFF, 0x0000FFF7) = 0xFFBFFEFF > [0x0000FFFF] > 19050: sigaction(SIGPIPE, 0xFFBFEF98, 0xFFBFF038) = 0 > 19050: write(115, " 0 0 7 5 1 - 1 2 0 ".., 79) = 79 > 19050: sigaction(SIGPIPE, 0xFFBFEF98, 0xFFBFF038) = 0 > 19050: time() = 1245355630 > 19050: time() = 1245355630 > 19050: time() = 1245355630 > > Looks like the difference is after sigaction, the problematic process is in > dead loop while the normal one is taking write action. > > I tried dtrace to capture the difference as following: > #!/usr/sbin/dtrace -qs > proc:::signal-send > /args[2] == SIGPIPE/ > { > printf ( "SIGPIPE was sent by %s pid = %d \n", > args[1]->pr_fname,args[1]->pr_pid); > } > > This doesn''t work as SIGPIPE is not a signal. Could anyone suggest the right > approach? > > Thanks in advance, > > zhu > > > > > Looking for the perfect gift? Give the gift of Flickr! > <http://www.flickr.com/gift/> > > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090712/90076e05/attachment.html>
> > I tried dtrace to capture the difference as following: > > #!/usr/sbin/dtrace -qs > > proc:::signal-send > > /args[2] == SIGPIPE/ > > { > > printf ( "SIGPIPE was sent by %s pid = %d \n", > > args[1]->pr_fname,args[1]->pr_pid); > > } > > > > This doesn''t work as SIGPIPE is not a signal. Could anyone suggest the right > > approach? > > > > Thanks in advance, > >Not sure what you mean by "SIGPIPE is not a signal", but you might want to investigate "proc::psig:signal-handle". Rennie