Web lists-archives.com

Re: long I/O delays when strace is running




On 04/21/2017 04:38 AM, Mark Geisert wrote:

I can reproduce your issue on a real Win7.64 machine so that removes any possible virtual machine root cause. I was running 'top -s1' in one window while running your testcase in another window. Yes, top froze for many seconds at a time, then caught its display up, only to freeze again repeatedly. It was still frozen for a while after your testcase had ended (!), then caught up. Your mention of pinfo::init and 'ps' along with my usage of 'top' leads me to think this may be somehow related to the /proc filesystem.

Here's my humble contribution to the discussion:

~ time w
 02:15:52 up 3 days, 20:34,  0 users,  load average: 0.99, 0.62, 0.31
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT

real    0m0.203s    <-- OK, nice and fast
user    0m0.077s
sys     0m0.139s

~ time strace -o w.out w
 02:16:23 up 3 days, 20:34,  0 users,  load average: 0.54, 0.55, 0.29
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT

real    0m28.487s   <-- but stracing it is much, much slower
user    0m0.015s
sys     0m0.000s

The 'w' command is normally pretty fast. Running it under strace makes it take an unreasonably long time. Something seems busted somewhere. The strace output for this example has many occurrences of ~3.1-second delays that seem to occur as w is accumulating process time information for all processes.

..mark

Thanks for the help Mark. My current suspicion is that the _pinfo isn't getting initialized when the process is exec-ed by strace, but I haven't proved that. I added a dump() member function to _pinfo, but it crashes and I can't seem to debug that in gdb (it makes a stacktrace file instead of letting me debug). So the cygpid.<n> shared object is there, but I'm suspecting that it's either all zeros or just not fully initialized -- and this is for the pid of the strace process. So for each strace process, there's a 2-3 second delay when trying to read the process list.

Daniel


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple