We are looking at the performance of futexes and require a bit more
information when tracing them.

The two patches here extend the system call reading of user space to
create specific handling of the futex system call. It now reads the
user space relevant data (the addr, utime and addr2), as well as
parses the flags. This adds a little smarts to the trace event as
it only shows the parameters that are relevant, as well as parses
utime as either a timespec or as val2 depending on the futex_op.

Here's an example of the new output:

   futex_requeue-1431    [004] .....   154.082233: sys_futex(uaddr: 
0x7ffcadad2ff8 (0), FUTEX_WAIT, val: 0, timespec: 0x7f0785f83e90 (0.030000000))
   futex_requeue-1421    [002] .....   154.092286: sys_futex(uaddr: 
0x7ffcadad2ff8 (0), FUTEX_CMP_REQUEUE, val: 3, val2: 0x7, uaddr2: 
0x7ffcadad2ffc (0), val3: 0)
   futex_requeue-1421    [002] .....   154.092321: sys_futex(uaddr: 
0x7ffcadad2ffc (0), FUTEX_WAKE, val: 2147483647)
     futex_waitv-1433    [006] .....   154.111394: sys_futex(uaddr: 
0x55ed4a768554 (0), FUTEX_WAKE|FUTEX_PRIVATE_FLAG, val: 1)
     futex_waitv-1435    [002] .....   154.128186: sys_futex(uaddr: 
0x7f035fa40000 (0), FUTEX_WAKE, val: 1)


Steven Rostedt (2):
      tracing: Have futex syscall trace event show specific user data
      tracing: Update futex syscall trace event to show more commands

----
 kernel/trace/trace_syscalls.c | 370 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 367 insertions(+), 3 deletions(-)

Reply via email to