`strace -r`と`strace -T`オプションの違いは何ですか?

`strace -r`と`strace -T`オプションの違いは何ですか?

2つの違いは何ですか?マニュアルページには次のように記載されています。

   -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.

私の唯一の説明は、-T各呼び出しに費やされた時間を示していますが、-r各システム呼び出しの後に待機するのにかかる時間も考慮することです。

straceこれは、コマンドでそのスニペットを表示すると、コマンドuptimeが各呼び出しに以下より長くかかることを示すという-r事実に裏付けられているようです。-T以下を参照してください。

0.000039 uname({sysname="Linux", nodename="ip-172-31-55-20", ...}) = 0
0.000043 open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
0.000045 read(3, "0\n", 8192)      = 2
0.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>

これは正しいですか?

答え1

本当にそうです。はい。

表示された追加時間-rは、待機に費やされた時間ではなく、システムコール(計算、メモリ操作...)に関連付けられていない他のタスクを実行するのに費やされた時間です。

答え2

これを考慮して回答、計算のようなもの以外は間違いなく時間がかかると思います。ストレスそれ自体。

方法ストレス操作により、カーネルは各システムコールの開始と終了でトレーサを停止します。ストレスこれを確認したら、実行を再開できます。

したがって、連続したシステムコールの開始間の時間差には、システムコールに費やされた時間の一部を含める必要があります。ストレスそれ自体。

関連情報