1

フレームグラフ データを生成する目的で stap を実行すると、out.stap-stacks にプロセス データがないのはなぜですか?

  • OS:RHEL5.10.0.2
  • カーネル: 2.6.18-371.11.1.el5
  • システムタップ: 1.8-6.el5

インストールされたパッケージ:

systemtap-sdt-devel-1.8-6.el5

systemtap-devel-1.8-6.el5

systemtap-devel-1.8-6.el5

systemtap-runtime-1.8-6.el5

systemtap-sdt-devel-1.8-6.el5

systemtap-1.8-6.el5

systemtap-initscript-1.8-6.el5

systemtap-client-1.8-6.el5

systemtap-server-1.8-6.el5

systemtap-testsuite-1.8-6.el5

カーネル-devel-2.6.18-371.11.1.el5

カーネル-デバッグ-devel-2.6.18-371.11.1.el5

使用したコマンド:

stap -s 32 -D MAXBACKTRACE=100 -D MAXSTRINGLEN=4096 -D MAXMAPENTRIES=10240 \
    -D MAXACTION=10000 -D STP_OVERLOAD_THRESHOLD=5000000000 --all-modules \
    -ve 'global s; probe timer.profile { s[backtrace()] <<< 1; } 
    probe end { foreach (i in s+) { print_stack(i);
    printf("\t%d\n", @count(s[i])); } } probe timer.s(60) { exit(); }' \
    > out.stap-stacks

out.stap-stacks ファイルのサンプル:

0xffffffff8000e81a 0x0 1 0xffffffff8004ab87 0x0 1 0xffffffff8025d15d 0x0 1 0xffffffff80239356 0x0 1 0xffffffff8004219a 0x0 1 0xffffffff8000ca32 0x0 1 0xffffffff8003214e 0x0 1 0xffffffff80013bc8 0x0 1 0xffffffff80232d41 0x0 1 0xffffffff8001a4ca 0x0 1 0xffffffff80011db5 0x0 1 0xffffffff8004aad2 0x0 1 0xffffffff800ec8bb 0x0 1 0xffffffff8003ead5 0x0 1 0xffffffff80234c43 0x0

4

1 に答える 1

1

このbacktrace()関数はカーネル空間のバックトレースに限定され、カーネルprint_stack()空間のアドレスのみをシンボルにマップします。(0xffffffff8* アドレスがシンボルに変換されなかった理由を説明できません。古いシステムタップと古いカーネルの組み合わせでしょうか?)

ユーザー空間のバックトレース データも出力したい場合は、一連u*のバックトレース関連関数を使用する必要があります。

ユーザー空間の作業を含む同様のスクリプトについては、https://sourceware.org/systemtap/examples/#profiling/pf4.stpも参照してください。

于 2015-09-05T19:57:12.820 に答える