プロセスが実行したコンテキスト切り替え回数は/proc/$$/status
。私は起動後に行われたコンテキスト遷移の合計回数を見つけようとしました。
grep context * | grep switch
私は実行してみて、/proc
次のような結果を得ました。
...
kallsyms:0000000000000000 t xen_end_context_switch
kallsyms:0000000000000000 T paravirt_start_context_switch
kallsyms:0000000000000000 T paravirt_end_context_switch
kallsyms:0000000000000000 T nr_context_switches
kallsyms:0000000000000000 T rcu_note_context_switch
kallsyms:0000000000000000 r __ksymtab_rcu_note_context_switch
kallsyms:0000000000000000 r __kstrtab_rcu_note_context_switch
kallsyms:0000000000000000 D event_context_switch
kallsyms:0000000000000000 D event_class_ftrace_context_switch
kallsyms:0000000000000000 t ftrace_define_fields_context_switch
kallsyms:0000000000000000 T __event_context_switch
...
ファイルを開くと、ファイルを理解できません。私もやってみましgrep -s -r context | grep switch
たが、時間が長すぎるようです。man
アイテムが見つかりませんkallsyms
。
それでは、起動後に発生したコンテキストコンバージョンの総数はどこで確認できます。
答え1
各プロセッサが実行するスイッチの数はで確認できますproc/sched_debug
。
の出力はgrep nr_switches *
次のとおりです。
...
sched_debug: .nr_switches : 2652089
sched_debug: .nr_switches : 2677660
sched_debug: .nr_switches : 2778421
sched_debug: .nr_switches : 2467321
sched_debug: .nr_switches : 2527589
sched_debug: .nr_switches : 2511760
sched_debug: .nr_switches : 2528093
sched_debug: .nr_switches : 2584352
sched_debug: .nr_switches : 2570571
sched_debug: .nr_switches : 2678180
sched_debug: .nr_switches : 2381052
sched_debug: .nr_switches : 2535081
...
印刷される行数は、明らかにコンピュータの論理コアの数によって異なります。