問題タブ [systemtap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
426 参照

linux-kernel - Linux systemtap 登録エラー

systematap を使用して、スラブ メモリ割り当てアクティビティを調べます。

ただし、stap は次のエラーを生成します。

プローブカーネルモジュールは登録されるべきではないと思うので、効果はありません。

私のOS:

カーネル:

それで、警告の意味は何ですか?それを修正する方法?

0 投票する
0 に答える
64 参照

nginx - systemtap: "sudo stap -L 'process("/data1/nginx/sbin/nginx").function("*")' には何もありません

Docker イメージに nginx と lua をインストールしましたが、物理的な CentOS システムにはインストールしませんでした。物理 CentOS システムと Docker イメージの両方に nginx-debuginfo をインストールしました。docker run して nginx を起動します。

次に、物理 CentOS システムで「stap -L」を実行して nginx の機能を確認しましたが、何も返されません。

/data1/nginx/sbin/nginx は、docker イメージ上の nginx のパスです。問題を解決する方法がわかりませんか?

0 投票する
1 に答える
389 参照

linux - スワップアウトされているページの pid を取得する

私の目標は、スワップアウトされているページのプロセス ID を見つけることです。Linux カーネル関数swap_writepage()は、バッキング ストアでページをスワップする際に、構造体ページへのポインターを仮引数の一部として受け取ります。すべてのスワップアウト操作は、「kswapd」プロセスによって行われます。関数の引数としてページが渡されるプロセスのpidを見つける必要がありswap_writepage()ます。それを取得するために、 rmap構造を使用して、そのページに関連付けられているすべてのページ テーブル エントリを見つけることができました。

pteまたはstruct pageからpidを取得するにはどうすればよいですか? sytemtap を使用して、関数で引数として受け取った構造体ページ ポインターの値を取得しました。また、関数は、そのページが属するプロセスの pid ではなく、現在実行中のプロセスの pid を出力し、常にkswapdプロセスを出力します。swap_writepage()pid()

0 投票する
1 に答える
641 参照

linux - systemtap グローバル変数の割り当てに失敗しました

Linux 本番サーバーの詳細を抽出するために systemtap を使用したいと考えています。私のsystemtapスクリプトは

コマンドでこのスクリプトを実行し始めると

失敗し、次のエラーが出力されます。

私の本番サーバーのメモリ情報は

私のテストサーバーには2Gメモリしかなく、systemtapスクリプトは別のサーバーでうまく動作するため、それで十分だと思います

0 投票する
3 に答える
2325 参照

linux - Systemtap がカーネル関数のすべてのローカル変数を表示しない

systemtap を使用してカーネル内のコードをデバッグしようとしています。その関数のローカル変数の値を出力する必要がありますが、systemtap は関数の引数しか認識できず、その関数で定義されたローカル変数は認識できないようです。これが私のプローブスクリプトです。

これを実行すると、次のエラーが表示されます

ただし、関数tcp_write_xmitには明らかにskb

使用-L可能な変数を出力するオプションを使用すると、関数の引数である 5 つの変数が表示されますが、ローカル変数は表示されません。

これが私が実行しているカーネルとsystemtapのバージョンです

何か案は?

0 投票する
1 に答える
461 参照

linux - 関数のキャッシュ動作を分析するための SystemTap スクリプト

SystemTap を使用してカーネル モジュールのキャッシュ動作をプロファイリングしたいと考えています (#cache 参照、#cache ミスなど)。SystemTap を使用してパフォーマンス イベントとカウンター (キャッシュ関連のものを含む) を読み取る方法を示すサンプル スクリプトがオンラインにあります: https://sourceware.org/systemtap/examples/profiling/perf.stp

このサンプル スクリプトは、プロセスに対してデフォルトで機能します。

processキーワードを次のように置き換え、module実行可能ファイルへのパスをカーネル モジュールの名前に置き換えました。

私のモジュールにはデバッグ情報があると確信していますが、取得したスクリプトを実行すると:

セマンティック エラー: プローブ ポイントの解決中: perf.stp:14:7 の識別子 'perf' ソース: プローブ perf.hw.instructions.module(MODULE_NAME).counter("find_insns") {}

何が間違っているのでしょうか?

編集:

さて、パフォーマンス カウンターはモジュールではなくプロセスにのみバインドできることに気付きました (ここで説明: https://sourceware.org/systemtap/man/stapprobes.3stap.html )。したがって、次のように変更しました。

サンプル スクリプトが示すように、次のようになります。

しかし、今それを実行すると、次のようになります。

セマンティック エラー: perf カウンター 'find_insns' が定義されていません

編集2:

だからここに私の完全なスクリプトがあります: