GoGPT Best VPN GoSearch

OnWorksファビコン

トレース-cmd-レコード - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks 無料ホスティング プロバイダーで trace-cmd-record を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド trace-cmd-record です。

プログラム:

NAME


trace-cmd-record - Ftrace Linux 内部トレーサからのトレースを記録します

SYNOPSIS


トレース コマンド 記録 [OPTIONS] [ command]

DESCRIPTION


当学校区の トレース コマンド(1) Record コマンドは、Ftrace Linux カーネル トレーサをセットアップして、
指定されたプラグインまたは実行中に発生するイベント command 実行します。 コマンドがない場合は、
指定すると、ユーザーが Ctrl-C を押すまで記録されます。

Trace-cmd の Record コマンドは、さまざまなトレースを開始するように Ftrace トレーサーをセットアップします。
コマンドラインで指定されたイベントまたはプラグイン。 それから、いくつかの
カーネル リング バッファから記録を開始するトレース プロセス (CPU ごとに XNUMX つ)
一時ファイルに直接保存します。 コマンドが完了すると (または Ctrl-C を押すと)、
ファイルは後で読み取ることができるtrace.datファイルに結合されます(「
トレース コマンド レポート(1))。

OPTIONS


-p プラグイン
トレースプラグインを指定します。 プラグインは特別な Ftrace トレーサーであり、通常は以上のことを行います。
イベントを追跡するだけです。 一般的なプラグインは、 function, 関数_グラフ, プリエンプタークオフ,
イルクソフ, 先制攻撃, 目を覚ます。 プラグインは、実行中のカーネルでサポートされている必要があります。 に
利用可能なプラグインのリストを参照してください。 トレース コマンド リストとします。

-e イベント
トレースするイベントを指定します。 さまざまな静的トレース ポイントが Linux に追加されました。
カーネル。 これらはサブシステムごとにグループ化されており、特定のイベントのすべてを有効にすることができます。
サブシステムを使用するか、有効にする特定のイベントを指定します。 の イベント 形式は
"サブシステム:イベント名"。 サブシステムのみを指定することもできます。
:イベント名 または「subsystem:」を除いたイベント名。 「-e sched_switch」を使用すると、
「sched_switch」イベントを有効にします。「-e sched」は、その下のすべてのイベントを有効にします。
「sched」サブシステム。

「イベント」にはグロブ式を含めることもできます。 つまり、「*stat*」は
「stat」という文字を含むすべてのイベント (またはサブシステム) を選択します。
名前。

キーワード「all」を使用すると、すべてのイベントを有効にすることができます。

-a
記録されているすべてのイベントの出力形式ファイルが出力ファイルに保存されます。
後で表示できるようにします。 ただし、トレース内で他のイベントが有効になっている場合は、
trace-cmd の知識によれば、これらのイベントの形式は記録されず、trace-cmd
レポートではそれらを表示できません。 この場合は、 -a
オプションを選択すると、システム内のすべてのイベントの形式が保存されます。

-T
イベントごとにスタックトレースを有効にします。 例えば:

-0 [003] 58549.289091: sched_switch: kworker/0:1:0 [120] R ==> トレースcmd:2603 [120]
-0 [003] 58549.289092: カーネルスタック:
=> スケジュール (ffffffff814b260e)
=> cpu_idle (ffffffff8100a38c)
=> 開始_二次 (ffffffff814ab828)

--func-スタック
すべての関数でスタック トレースを有効にします。 これは「関数」にのみ適用されることに注意してください。
プラグイン トレーサーであり、-l オプションが使用されて成功した場合にのみ有効になります。
機能を制限すること。 関数トレーサがフィルタリングされておらず、スタック トレースが
有効にすると、マシンをライブロックできます。

-f filter
前のイベントのフィルターを指定します。 これは次の後に来る必要があります -e。 これでフィルタリングされます
イベントの内容に基づいてどのようなイベントが記録されるか。 フィルタリングは
カーネルに直接アクセスするため、どのようなフィルタリングが許可されるかはカーネルのバージョンによって異なる場合があります。
あなたが持っている。 基本的に、C 表記法を使用して、イベントを次のようにする必要があるかどうかを確認できるようになります。
加工されているかどうか。

==、>=、<=、>、<、&、|、&&、||

通常、上記はフィールドの比較に安全に使用できます。

-R トリガー
前のイベントのトリガーを指定します。 これは次の後に来る必要があります -e。 これにより、
指定されたイベントに対する指定されたトリガー。 イベント自体ではなくトリガーのみを有効にするには、
イベントをその後に配置します -v オプションを選択します。

詳細については、Linux カーネル ソースの Documentation/trace/events.txt を参照してください。
トリガーに関する情報。

-v
これにより、コマンド ラインでその後に指定されたすべてのイベントがトレースされなくなります。
これは、トレースするサブシステムを選択するが、さまざまなイベントを除外する場合に便利です。
例: 「-e sched -v -e "*stat\*"」は、sched サブシステム内のすべてのイベントを有効にします。
名前に「stat」が含まれるものを除きます。

注: *-v* オプションは途中から取られたものです grep(1) 以下を反転します
一致します。

-F
これにより、コマンドラインで指定された実行可能ファイルのみがフィルターされます。 コマンドがない場合
が与えられると、それ自体がフィルタリングされます(かなり無意味です)。 使用する -F 追跡させていただきます
指定されたコマンドによって引き起こされるイベントのみ。

-P ピッド
そして -F ただし、トレースするプロセス ID を指定できます。

-c
どちらかと一緒に使用されます -F プロセスの子も追跡します。

-C クロック
トレースクロックを「クロック」に設定します。

  トレース コマンド(1) list -C を実行して、使用可能なクロックを確認します。

-o 出力ファイル
デフォルトでは、trace-cmd レポートは トレース.dat ファイル。 別の値を指定することもできます
で書き込むファイル -o オプションを選択します。

-l 関数名
これにより、 function   関数_グラフ 指定されたものだけを追跡するトレーサ
関数名。 複数の -l より詳細にトレースするためにコマンドラインで指定できます。
XNUMX つの機能よりも。 glob 式の限定的な使用も許可されます。 これらは
マッチ* で始まる関数のみをフィルタリングするには match . *マッチ フィルタリングのみ
で終わる関数 match . *マッチ\* を含む関数のみをフィルタリングするには
match .

-g 関数名
このオプションは function_graph プラグイン用です。 指定された関数をグラフ化します。 それ
つまり、関数とその関数が呼び出すすべての関数のみをトレースします。 もっと食べてもいいよ
XNUMXつより -g コマンドラインで。

-n 関数名
これは逆の効果をもたらします -l。 で与えられた関数は、 -n オプションはありません
追跡した。 これは、両方に同じ関数を含めた場合に優先されます。 -n
  -l、追跡されません。

-d
一部のトレーサ プラグインでは、デフォルトで関数トレーサが有効になります。 レイテンシートレーサーのようなものです。
このオプションは、起動時に関数トレーサが有効にならないようにします。

-D
オプション -d function-trace オプションを使用して関数トレーサを無効にしようとします
(利用可能な場合)、そうでない場合は、デフォルトで proc ファイルが使用されます。
/proc/sys/kernel/ftrace_enabledただし、function-trace オプションがオンの場合は触れません。
利用可能です。 ザ・ -D オプションは、ftrace_enabled proc ファイルと
function-trace オプションが存在する場合。

これにより、ユーザーを含むすべてのユーザーの関数トレースが無効になることに注意してください。
ftrace トレーサ (stack_tracer、perf など) の外側。

-O オプション
Ftrace には、有効または無効にできるさまざまなオプションがあります。 これにより、次の設定が可能になります
彼ら。 テキストを追加する いいえ オプションにすると無効になります。 例: 「-O nograph-time」
「グラフ時間」Ftrace オプションを無効にします。

-s インターバル
リングバッファから記録するためにtrace-cmdが作成するプロセスは、次のように起動する必要があります。
録音をします。 の設定 インターバル ゼロにするとプロセスがウェイクアップします
新しいデータがバッファに書き込まれるたびに。 ただし、Ftrace はカーネルを記録しているため、
アクティビティ、このプロセスがスリープに戻る行為により、新しいイベントが発生する可能性があります。
プロセスをウェイクアップしてバックアップするリング バッファ。 これにより、余分なデータが不必要に追加されます
リングバッファに入れます。

「間隔」の単位はマイクロ秒です。 デフォルトは 1000 (1 ミリ秒) に設定されています。
これは、各記録プロセスが起動する前にスリープする時間です。
リング バッファに書き込まれた新しいデータを記録します。

-r 優先順位
キャプチャ スレッドを実行する優先度。 ビジーなシステムでは、トレースのキャプチャ
スレッドが停滞し、イベントが失われる可能性があります。 これにより、それらの優先度が上がります
スレッドをリアルタイム (FIFO) 優先に設定します。 ただし、このオプションは注意して使用してください。
トレース対象のシステムの動作を変更します。

-b サイズ
これにより、リング バッファ サイズが次のように設定されます。 サイズ キロバイト。 Ftrace リング バッファは
CPU ごとのこのサイズは、カーネル内の CPU ごとの各リング バッファのサイズです。 使用する
10000 CPU を搭載したマシンで「-b 4」を指定すると、Ftrace の合計バッファ サイズは 40 になります。
メグス。

-B バッファ名
カーネルが複数のバッファをサポートしている場合、指定された名前のバッファが追加されます。
バッファ名がすでに存在する場合、そのバッファはリセットされるだけで削除されません。
レコード実行の終了時。 バッファが作成された場合、バッファは次の時点で削除されます。
実行の終了 ( -k が設定されている、または start コマンドが使用されました)。

バッファ名を指定すると、それ以降に追加されるすべてのイベントが
そのバッファに関連付けられています。 バッファが指定されていない場合、またはイベントが発生した場合
バッファ名の前に指定すると、バッファ名に関連付けられます。
メイン(トップレベル)バッファ。

トレース-cmd レコード -e sched -B ブロック -e ブロック -B 時間 -e タイマー スリープ 1

上記により、メイン バッファ内のすべてのスケジュールされたイベントが有効になります。 それは
次に、「ブロック」バッファインスタンスを作成し、その中のすべてのブロックイベントを有効にします。
そのバッファ。 「time」バッファインスタンスが作成され、すべてのタイマーイベントが
そのイベントに対して有効になります。

-m サイズ
CPU ごとのバッファーの最大サイズ (キロバイト単位)。 四捨五入のため注意してください。
ページ サイズ、数値が完全に正しくない可能性があります。 また、これはスイッチングによって実行されます。
XNUMX つのバッファ間には指定されたサイズの半分があるため、出力は次のとおりではない可能性があります。
たとえそれ以上の内容が書き込まれていたとしても、指定されたサイズです。

これを使用して、長時間実行によるディスク容量の不足を防ぎます。

-M CPUマスク
トレースする cpumask を設定します。 指定された最後のバッファ インスタンスにのみ影響します。 もし
バッファ インスタンスの前に指定すると、メイン バッファに影響します。 値
指定するのは XNUMX 進数でなければなりません。

トレース-cmd レコード -p 機能 -M c -B events13 -e all -M 5

-M を省略した場合、マスクは同じままになります。 すべてを有効にするには
CPU は、「-1」の値を渡します。

-k
デフォルトでは、trace-cmd がトレースを終了すると、バッファがリセットされ、無効になります。
それによって有効になったすべてのトレース。 このオプションにより、trace-cmd がトレーサーを無効にしないようにします。
そしてバッファをリセットします。 このオプションは、trace-cmd のデバッグに役立ちます。

注: 通常、trace-cmd は「tracing_on」ファイルをその設定に戻します。
呼ばれる前でした。 このオプションでは、そのファイルはゼロに設定されたままになります。

-i
デフォルトでは、trace-cmd が検出できないイベントがリストされている場合、イベントは次のメッセージを表示して終了します。
エラー。 このオプションは、コマンドラインにリストされているイベントを無視しますが、
システム上に見つかりません。

-N ホスト:ポート
別のマシンが「trace-cmd listen」を実行している場合、このオプションはデータを取得するために使用されます。
UDP パケットでそのマシンに送信されます。 出力ファイルに書き込む代わりに、データ
リモートボックスに送信されます。 これは、ストレージがほとんどない組み込みマシンに最適です。
または、すべてのデータを単一のリポジトリに保存する単一のマシンを使用します。

注: このオプションは、レイテンシー トレーサー プラグインではサポートされていません。
wakeup、wakeup_rt、irqsoff、preemptoff、preemptirqsoff

-t
このオプションは -N、TCP を使用してライブ データを送信する必要がある場合
UDP の代わりにパケットを使用します。 TCP は UDP パケットの送信ほど高速ではありませんが、
ただし、ネットワークの信頼性が低く、データ量が十分ではない場合には、必要になる場合があります。
これは集中的であり、追跡されたすべての情報が転送されるという保証が必要です
成功しました。

- 日にち
- 日にち オプション「trace-cmd」は、タイムスタンプをトレースバッファに書き込みます。
録音が終了しました。 次に、タイムスタンプを gettimeofday にマップします。
作成されたタイムスタンプを読み取るタイムスタンプからのウォールタイム出力を許可します。 トレース.dat ファイルにソフトウェアを指定する必要があります。

- プロフィール
- プロフィール オプション「trace-cmd」は、次のオプションで使用できるトレースを有効にします。
トレース コマンド レポート(1) --profile オプション。 トレーサーなら -p が設定されていない場合、関数グラフ
深さがカーネルによってサポートされている場合、function_graph トレーサは次のコマンドで有効になります。
深さは XNUMX (ユーザー空間がカーネルに入る場所のみを表示)。 また、それは可能になります
タスクがどこにあるかをレポートに表示できるように、スタック トレースを使用したさまざまなトレースポイント
長い間ブロックされていました。

詳細はこちら: trace-cmd-プロファイル(1) 詳細と例については。

-H イベントフック
カスタム イベント マッチングを追加して、任意の XNUMX つのイベントを結び付けます。 一緒に使用しない場合
- プロフィール、パラメータが保存され、これはtrace-cmdレポートによって使用されます。
--プロフィールも。 あれは:

トレースコマンド レコード -H hrtimer_expire_entry,hrtimer/hrtimer_expire_exit,hrtimer,sp
trace-cmd レポート --profile

hrtimer_expire_entry 時間と hrtimer_expire_ext 時間をプロファイリングします。

詳細はこちら: trace-cmd-プロファイル(1) フォーマットの場合。

--stderr
出力は stdout ではなく stderr に送られますが、コマンドの出力は実行されます。
変更されません。 これは、コマンドの出力を監視する場合に便利です。
実行されていますが、trace-cmd からの出力は表示されません。


すべてのイベントを追跡する基本的な方法は次のとおりです。

# トレース-cmd レコード -e all ls > /dev/null
# トレース-cmd レポート
トレースcmd-13541 [003] 106260.693809: filemap_fault: アドレス=0x128122 オフセット=0xce
トレースcmd-13543 [001] 106260.693809: kmalloc: call_site=81128dd4 ptr=0xffff88003dd83800 bytes_req=768 bytes_alloc=1024 gfp_flags=GFP_KERNEL|GFP_ZERO
ls-13545 [002] 106260.693809: kfree: call_site=810a7abb ptr=0x0
ls-13545 [002] 106260.693818: sys_exit_write: 0x1

関数トレーサをスケジュールスイッチトレースで使用するには、次の手順を実行します。

# トレース-cmd レコード -p 関数 -e sched_switch ls > /dev/null
# トレース-cmd レポート
ls-13587 [002] 106467.860310: 関数: ultick_start_fair <-- pick_next_task_fair
ls-13587 [002] 106467.860313: sched_switch: prev_comm=trace-cmd prev_pid=13587 prev_prio=120 prev_state=R ==> next_comm=trace-cmd next_pid=13583 next_prio=120
トレースcmd-13585 [001] 106467.860314: 関数:native_set_pte_at <-- __do_fault
トレースcmd-13586 [003] 106467.860314: 関数: up_read <-- do_page_fault
ls-13587 [002] 106467.860317: 関数: __phys_addr <-- スケジュール
トレースcmd-13585 [001] 106467.860318: 関数: _raw_spin_unlock <-- __do_fault
ls-13587 [002] 106467.860320: 関数:native_load_sp0 <-- __switch_to
トレースcmd-13586 [003] 106467.860322: 関数: down_read_trylock <-- do_page_fault

どの割り込みのレイテンシが最も高いかを見つける良い方法は次のとおりです。

# トレース-cmd レコード -p function_graph -e irq_handler_entry -l do_IRQ sleep 10
# トレース-cmd レポート
-0 [000] 157412.933969: funcgraph_entry: | do_IRQ() {
-0 [000] 157412.933974: irq_handler_entry: irq=48 名前=eth0
-0 [000] 157412.934004: funcgraph_exit: + 36.358 us | }
-0 [000] 157413.895004: funcgraph_entry: | do_IRQ() {
-0 [000] 157413.895011: irq_handler_entry: irq=48 名前=eth0
-0 [000] 157413.895026: funcgraph_exit: + 24.014 us | }
-0 [000] 157415.891762: funcgraph_entry: | do_IRQ() {
-0 [000] 157415.891769: irq_handler_entry: irq=48 名前=eth0
-0 [000] 157415.891784: funcgraph_exit: + 22.928 us | }
-0 [000] 157415.934869: funcgraph_entry: | do_IRQ() {
-0 [000] 157415.934874: irq_handler_entry: irq=48 名前=eth0
-0 [000] 157415.934906: funcgraph_exit: + 37.512 us | }
-0 [000] 157417.888373: funcgraph_entry: | do_IRQ() {
-0 [000] 157417.888381: irq_handler_entry: irq=48 名前=eth0
-0 [000] 157417.888398: funcgraph_exit: + 25.943 us | }

プロファイルの例:

# トレース-cmd レコード --profile sleep 1
# トレース-cmd レポート --profile --comm sleep
タスク: 睡眠-21611
イベント: sched_switch:R (1) 合計: 99442 平均: 99442 最大: 99442 最小:99442
1 合計:99442 最小:99442 最大:99442 平均=99442
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __スケジュール (0xffffffff8150810a)
=> preempt_schedule (0xffffffff8150842e)
=> ___preempt_schedule (0xffffffff81273354)
=> cpu_stop_queue_work (0xffffffff810b03c5)
=> stop_one_cpu (0xffffffff810b063b)
=> sched_exec (0xffffffff8106136d)
=> do_execve_common.isra.27 (0xffffffff81148c89)
=> do_execve (0xffffffff811490b0)
=> SyS_execve (0xffffffff811492c4)
=> return_to_handler (0xffffffff8150e3c8)
=> スタブ_execve (0xffffffff8150c699)
イベント: sched_switch:S (1) 合計: 1000506680 平均: 1000506680 最大: 1000506680 最小: 1000506680
1 合計:1000506680 最小:1000506680 最大:1000506680 平均=1000506680
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __スケジュール (0xffffffff8150810a)
=> スケジュール (0xffffffff815084b8)
=> do_nanosleep (0xffffffff8150b22c)
=> hrtimer_nanosleep (0xffffffff8108d647)
=> SyS_nanosleep (0xffffffff8108d72c)
=> return_to_handler (0xffffffff8150e3c8)
=>tracesys_phase2 (0xffffffff8150c304)
イベント: sched_wakeup:21611 (1) 合計: 30326 平均: 30326 最大: 30326 最小:30326
1 合計:30326 最小:30326 最大:30326 平均=30326
=> ftrace_raw_event_sched_wakeup_template (0xffffffff8105f653)
=> ttwu_do_wakeup (0xffffffff810606eb)
=> ttwu_do_activate.constprop.124 (0xffffffff810607c8)
=> try_to_wake_up (0xffffffff8106340a)

onworks.netサービスを使用してオンラインでtrace-cmd-recordを使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。