問題タブ [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.
linux-kernel - Linux systemtap 登録エラー
systematap を使用して、スラブ メモリ割り当てアクティビティを調べます。
ただし、stap は次のエラーを生成します。
プローブカーネルモジュールは登録されるべきではないと思うので、効果はありません。
私のOS:
カーネル:
それで、警告の意味は何ですか?それを修正する方法?
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 のパスです。問題を解決する方法がわかりませんか?
linux - スワップアウトされているページの pid を取得する
私の目標は、スワップアウトされているページのプロセス ID を見つけることです。Linux カーネル関数swap_writepage()
は、バッキング ストアでページをスワップする際に、構造体ページへのポインターを仮引数の一部として受け取ります。すべてのスワップアウト操作は、「kswapd」プロセスによって行われます。関数の引数としてページが渡されるプロセスのpidを見つける必要がありswap_writepage()
ます。それを取得するために、 rmap構造を使用して、そのページに関連付けられているすべてのページ テーブル エントリを見つけることができました。
pteまたはstruct pageからpidを取得するにはどうすればよいですか? sytemtap を使用して、関数で引数として受け取った構造体ページ ポインターの値を取得しました。また、関数は、そのページが属するプロセスの pid ではなく、現在実行中のプロセスの pid を出力し、常にkswapdプロセスを出力します。swap_writepage()
pid()
linux - systemtap グローバル変数の割り当てに失敗しました
Linux 本番サーバーの詳細を抽出するために systemtap を使用したいと考えています。私のsystemtapスクリプトは
コマンドでこのスクリプトを実行し始めると
失敗し、次のエラーが出力されます。
私の本番サーバーのメモリ情報は
私のテストサーバーには2Gメモリしかなく、systemtapスクリプトは別のサーバーでうまく動作するため、それで十分だと思います
linux - Systemtap がカーネル関数のすべてのローカル変数を表示しない
systemtap を使用してカーネル内のコードをデバッグしようとしています。その関数のローカル変数の値を出力する必要がありますが、systemtap は関数の引数しか認識できず、その関数で定義されたローカル変数は認識できないようです。これが私のプローブスクリプトです。
これを実行すると、次のエラーが表示されます
ただし、関数tcp_write_xmit
には明らかにskb
使用-L
可能な変数を出力するオプションを使用すると、関数の引数である 5 つの変数が表示されますが、ローカル変数は表示されません。
これが私が実行しているカーネルとsystemtapのバージョンです
何か案は?
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:
だからここに私の完全なスクリプトがあります: