ツールのoffcputime BCC-ツール

まず、CPUがオフになっているかを理解

  • オンCPU:どこのスレッドが上-CPUで実行時間を費やしています。
  • オフCPU:時間は待って費やされているI / O、ロック、タイマー、ページング/スワッピングなどでブロックしながら、

プロセスは、一定の期間を測定するためにブロックされている:上記の手段から、基本的にoffcputimeが何を意味するか理解しています。

古い方法、または最初から助けを借りて起動します。

用法:offcputime [-h] [PID -p | -t TID | -u | -k] [-U | -K] [-d] [ - F]
                  [ --stack-storage- サイズSTACK_STORAGE_SIZE]
                  [ -m MIN_BLOCK_TIME] [-M MAX_BLOCK_TIME] [ - 状態state]
                  [期間]

オフ要約 -CPUの時間をスタックトレースで

位置引数:
  トレースの持続期間、

オプションの引数:
  -h、 - ヘルプ出口ショーこのメッセージとヘルプ
   -p PID、 - PID PID番号のみトレースのみ、このPIDは時間をブロックするためのプロセスを追跡し
  、TID -t - TID TID TIDのみトレースこのトラックはちょうどスレッド#です閉塞時間
   -u、--user-threads- のみ
                        ユーザスレッドのみ(カーネルスレッド)は#だけではなく、時間を遮断するカーネルモードのスレッドよりも、ユーザーモードを追跡します
  -k、--kernel-threads- のみ
                        ちょうど時間を遮断するカーネルモードのスレッドを追跡するカーネルスレッドは、のみ(ユーザー・スレッド)#
  -U、--user-stacks- のみ
                        唯一のユーザ空間からスタックを表示(ないカーネル空間の#は、ユーザーモードのコールスタックの関係を示していません
                        スタック)
  -Kは、--kernel-stacks- のみ#は、カーネルモードコールスタックの関係を示し、
                        カーネル空間のみ(ユーザ空間からスタックを示し、
                        スタック)
  -d、カーネルBETWEEN INSERTデリミタ--delimited / へのユーザースタック#カーネルモードとユーザモードコールスタックを分離
   -fを、 - フォーマットモード出力D折りたたみつ折り出力位つ折り
   --stack-Storage- サイズSTACK_STORAGE_SIZE提供#プロセスのスタックトレース収納スペース
                        保存することができるユニークなスタックトレースの数
                        表示され、(デフォルト1024  -m MIN_BLOCK_TIME、--min-ブロック- タイムMIN_BLOCK_TIME番号の印刷のみ遮断する時間である以上XXXたちを例プロセスの       、時間 にわたりマイクロどの我々は保存  
                        トレース(デフォルト1  -M MAX_BLOCK_TIME、--max-ブロック- タイムMAX_BLOCK_TIME番号の印刷のみ遮断する時間である以上、xxxは私たちを例プロセスのの時間 下マイクロたち
                        店舗トレース(U64_MAXデフォルト)
  状態フィルタONこのスレッド--state状態ビットマスク(例えば、2例えば停電などの特定の状態の閉塞に==#トラック進捗、
                        TASK_UNINTERRUPTIBLE)を含む参照 /linux/sched.hを

./offcputime -K

表示カーネルモードスタックは、すべてのプロセスを呼び出します

スケジュール
    schedule_timeout
    io_schedule_timeout
    bit_wait_io
    __wait_on_bit
    wait_on_page_bit_killable
    __lock_page_or_retry
    filemap_fault
    __do_fault
    handle_mm_fault
    __do_page_fault
    do_page_fault
    page_fault
    chmodの
        13ブロックの時間を表し13usであります

    スケジュール
    rcu_nocb_kthread
    kthread
    ret_from_fork
    ddebug_tables
    rcuos / 0 
        22が遮断時間22usとして表現されます

./offcputime -K -f 5

スタック表示されたコールフローを折りたたみ

bashの; entry_SYSCALL_64_fastpath; SYS_READ; vfs_read; __ vfs_read; tty_read; n_tty_read; call_rwsem_down_read_failed; rwsem_down_read_failed、スケジュール8 
はい、entry_SYSCALL_64_fastpath; SYS_WRITE; vfs_write; __ vfs_write; tty_write; n_tty_write; call_rwsem_down_read_failed; rwsem_down_read_failed、スケジュール14 
の実行; page_fault; do_page_fault; __ do_page_fault; handle_mm_fault。 __do_fault; filemap_fault; __ lock_page_or_retry; wait_on_page_bit_killable; __ wait_on_bit; bit_wait_io; io_schedule_timeout; schedule_timeout、スケジュール33 
rcuos / 4 ; ret_from_fork; kthread; rcu_nocb_kthread、スケジュール45 
のbash; entry_SYSCALL_64_fastpath; SYS_READ; vfs_read; __ vfs_read; pipe_read; pipe_wait、スケジュール88
ラン; page_fault; do_page_fault; __ do_page_fault; handle_mm_fault; __ do_fault; filemap_fault; __ lock_page_or_retry; wait_on_page_bit_killable; __ wait_on_bit; bit_wait_io; io_schedule_timeout; schedule_timeout、スケジュール108 
jbd2 / xvda1- 8 ; mb_cache_list; ret_from_fork; kthread; kjournald2; jbd2_journal_commit_transaction; __ wait_on_buffer; out_of_line_wait_on_bit; __ wait_on_bit。 bit_wait_io; io_schedule_timeout; schedule_timeout、スケジュール828 
jbd2 / xvda1- 8 ; mb_cache_list; ret_from_fork; kthread; kjournald2; jbd2_journal_commit_transaction; __ wait_on_buffer; out_of_line_wait_on_bit; __ wait_on_bit; bit_wait_io; io_schedule_timeout; schedule_timeout、スケジュール6201
監督; entry_SYSCALL_64_fastpath; SYS_RENAME; dput; __ dentry_kill; iput;追い出し; ext4_evict_inode; truncate_inode_pages_final; truncate_inode_pages_range; wait_on_page_bit; __ wait_on_bit; bit_wait_io; io_schedule_timeout; schedule_timeout;スケジュール41049 
の実行; entry_SYSCALL_64_fastpath; sys_wait4; do_wait;スケジュール120709 
bashの、entry_SYSCALL_64_fastpath; sys_wait4; do_wait。スケジュール699320たち

より多くの例

例:/ offcputimeの#トレースオフCPUスタック までのCtrl- C/ offcputime 5            #トレースのための 5 秒だけ/ offcputime -f 55秒間、および出力折りたたまれた形式/ offcputime -m 1000年      #というイベントのみをトレースし、最後 以上よりマイクロ秒/ offcputime -M 10000     #というイベントのみをトレースし、最後の 少ないより10000 マイクロ秒/ offcputime -p 185       #のみトレーススレッドのための PID 185 / offcputime -t 188       #のみトレーススレッド188 / offcputime - U#のみユーザスレッド(なしカーネル)をトレースします/ offcputime - K#のみカーネルスレッド(ユーザー)をトレースします/ offcputime - U#は唯一のユーザ空間スタックを示し、(なしカーネル)/ offcputime -K#のみカーネルスペーススタック(ユーザー)を表示

 

おすすめ

転載: www.cnblogs.com/haoxing990/p/12203997.html
おすすめ