我发现进程执行的上下文切换次数可以在 中找到/proc/$$/status
。我一直在尝试查找自启动以来执行的上下文切换的总数。
我尝试执行grep context * | grep switch
while in /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
...
打印的此类行数显然取决于计算机上逻辑核心的数量。