Kernel 本机在内核中编写msr做什么?
我有一个python脚本,它在开始时有时很慢。前几天我在上面运行了Kernel 本机在内核中编写msr做什么?,kernel,perf,Kernel,Perf,我有一个python脚本,它在开始时有时很慢。前几天我在上面运行了perf top,我看到的只是: PerfTop: 2 irqs/sec kernel:100.0% exact: 0.0% [4000Hz cycles], (target_pid: 1234) ------------------------------------------------------------------------------------------------- 100
perf top
,我看到的只是:
PerfTop: 2 irqs/sec kernel:100.0% exact: 0.0% [4000Hz cycles], (target_pid: 1234)
-------------------------------------------------------------------------------------------------
100.00% [kernel] [k] native_write_msr
用谷歌搜索函数名对我帮助不大。
本机编写的msr
是x86/x86\u 64特定的内核函数,它允许内核代码执行msr编写:
perf report
将显示统计信息,但它将丢失一些仅显示十六进制地址的符号
$ perf report # interactive TUI
$ perf report|head -n 20|tail
#
9.75% python3 python3.6 [.] _PyEval_EvalFrameDefault
2.77% python3 python3.6 [.] 0x000000000049b284
1.95% python3 libc-2.27.so [.] __strlen_avx2
1.86% python3 python3.6 [.] PyObject_GetAttr
1.80% python3 python3.6 [.] PyDict_SetDefault
1.61% python3 python3.6 [.] PyUnicode_New
1.55% python3 libc-2.27.so [.] _int_malloc
1.52% python3 python3.6 [.] _PyDict_LoadGlobal
1.41% python3 python3.6 [.] _PyObject_GenericSetAttrWithDict
perf脚本
将为您提供执行代码的时间线,列出perf记录
中的每个样本(其中-F 20000
样本在20 kHz左右采集)。MSR写入是内核程序HW perf计数器的方式。这似乎很奇怪;我想知道/proc/sys/kernel/perf_event_paranoid
的限制性设置是否可以解释这一点。(0
允许在开发机器上使用最有用的东西。)kernel.yama.ptrace_scope=0
也可能相关吗?您键入的确切命令是什么?您使用的是哪种系统?perf stat
是否正常工作,显示指令和周期的计数?
echo 2 | sudo tee /proc/sys/kernel/perf_event_paranoid
$ perf record -e cycles:u -F 20000 python3 -c 'print(1)'
1
[ perf record: Woken up 1 times to write data ]
$ perf report # interactive TUI
$ perf report|head -n 20|tail
#
9.75% python3 python3.6 [.] _PyEval_EvalFrameDefault
2.77% python3 python3.6 [.] 0x000000000049b284
1.95% python3 libc-2.27.so [.] __strlen_avx2
1.86% python3 python3.6 [.] PyObject_GetAttr
1.80% python3 python3.6 [.] PyDict_SetDefault
1.61% python3 python3.6 [.] PyUnicode_New
1.55% python3 libc-2.27.so [.] _int_malloc
1.52% python3 python3.6 [.] _PyDict_LoadGlobal
1.41% python3 python3.6 [.] _PyObject_GenericSetAttrWithDict