What's the difference between the two? In the man pages it says:   -r          Print a relative timestamp upon entry to each system call.  This records the time difference between  the  beginning  of               successive system calls.   -T          Show the time spent in system calls.  This records the time difference between the beginning and the end of each  system               call.My only interpretation is that -T shows the time taken just for each call, whereas -r also takes into account any time spent waiting after each syscall.This seems to be supported by the fact that when looking at corresponding snippets of an strace on the uptime command, the -r command is showing longer times per call than -T below. See below:0.000039 uname({sysname=Linux, nodename=ip-172-31-55-20, ...}) = 00.000043 open(/sys/devices/system/cpu/online, O_RDONLY|O_CLOEXEC) = 30.000045 read(3, 0\n, 8192)      = 20.000035 close(3)                  = 0&uname({sysname=Linux, nodename=ip-172-31-55-20, ...}) = 0 <0.000010>open(/sys/devices/system/cpu/online, O_RDONLY|O_CLOEXEC) = 3 <0.000018>read(3, 0\n, 8192)                    = 2 <0.000014>close(3)                                = 0 <0.000023>Is this right?
Difference between `strace -r` and `strace -T` options?
linux;system calls;strace;statistics
That's pretty much right, yes.The extra time shown by -r isn't time spent waiting, it's time doing other things which don't involve syscalls (calculations, memory manipulations...).