프로세스가 수행한 컨텍스트 전환 횟수는 /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
...
인쇄되는 줄 수는 분명히 컴퓨터의 논리 코어 수에 따라 달라집니다.