Kernel 本机在内核中编写msr做什么?

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

我有一个python脚本,它在开始时有时很慢。前几天我在上面运行了
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