Skip to main content
Post Undeleted by Andy Dalton
Post Deleted by Andy Dalton
added 107 characters in body
Source Link
Andy Dalton
  • 14.7k
  • 1
  • 29
  • 50

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.

Given you still see that behavior when usingThe tasksetfutex system call that you observe unusually long times in is a blocking call, I'm curiousso it doesn't actively take CPU time -- you can have multiple threads blocked that call at the same time, even if it's pinningthey're all the threads or justpinned to the initial threadsame CPU.

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.

Given you still see that behavior when using taskset, I'm curious if it's pinning all the threads or just the initial thread.

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.

The futex system call that you observe unusually long times in is a blocking call, so it doesn't actively take CPU time -- you can have multiple threads blocked that call at the same time, even if they're all pinned to the same CPU.

Post Undeleted by Andy Dalton
Post Deleted by Andy Dalton
added 131 characters in body
Source Link
Andy Dalton
  • 14.7k
  • 1
  • 29
  • 50

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.

Given you still see that behavior when using taskset, I'm curious if it's pinning all the threads or just the initial thread.

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.

Given you still see that behavior when using taskset, I'm curious if it's pinning all the threads or just the initial thread.

Source Link
Andy Dalton
  • 14.7k
  • 1
  • 29
  • 50

Looking at man strace I see:

-c --summary-only ... If -c is used with -f, only aggregate totals for all traced processes are kept. -f --follow-forks Trace child processes as they are created by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. ... 

Here, you're specifying both -c and -f. If your process forks or is multi-threaded, then the results are aggregated across the processes. If, for example, you had multiple threads all blocked in futex(), you could see the behavior that you're seeing.