Linux 如何找出哪个内核自旋锁占用了大部分CPU?

Linux 如何找出哪个内核自旋锁占用了大部分CPU?,linux,performance,linux-kernel,kernel,spinlock,Linux,Performance,Linux Kernel,Kernel,Spinlock,我正在对一个加密软件进行性能调整,该软件在Linux上运行,并利用硬件加密加速设备 当负载超过某个阈值时,内核\u spn\u lock开始占用CPU的大部分时间。下面的perf top屏幕截图显示,约30%的CPU被\u spin\u lock占用,但如果负载增加,总体性能下降,CPU占用率将上升50%以上 我无法在不找出导致这种情况的自旋锁的情况下调整软件的性能 我检查了stackoverflow上的类似问题,但我找不到关于如何发现哪个自旋锁自旋的答案。 有没有办法找到旋转锁的位置?任何提示

我正在对一个加密软件进行性能调整,该软件在Linux上运行,并利用硬件加密加速设备

当负载超过某个阈值时,内核
\u spn\u lock
开始占用CPU的大部分时间。下面的
perf top
屏幕截图显示,约30%的CPU被
\u spin\u lock
占用,但如果负载增加,总体性能下降,CPU占用率将上升50%以上

我无法在不找出导致这种情况的自旋锁的情况下调整软件的性能

我检查了stackoverflow上的类似问题,但我找不到关于如何发现哪个自旋锁自旋的答案。 有没有办法找到旋转锁的位置?任何提示或建议都将不胜感激

   PerfTop:      81 irqs/sec  kernel:45.7%  exact:  0.0% [1000Hz cycles],  (all, CPU: 53)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

             samples  pcnt function                DSO
             _______ _____ _______________________ __________________________

               44.00 27.2% _spin_lock              [kernel.kallsyms]
               30.00 18.5% sha512_block_data_order /usr/local/bin/cryptod
                6.00  3.7% _int_malloc             /lib64/libc-2.12.so
                5.00  3.1% __GI___libc_malloc      /lib64/libc-2.12.so



[root@qat ~]# uname -a
Linux qat 2.6.32-220.el6.tsx.65.x86_64 #68 SMP Fri Jan 26 17:45:32 KST 2018 x86_64 x86_64 x86_64 GNU/Linux

我应该帮你。您可以使用它捕获一些每个锁的统计信息。

您想找到“旋转锁”的调用位置吗

试试它ftrace

#cd /sys/kernel/debug/tracing
#echo function_graph > current_tracer
#cat trace | grep -B 5 _spin_lock

有关ftrace的更多信息,请参见此处

请将结果发回!对我现在正与
[root@qat~]#perf lock record==>无效或不受支持的事件:“lock:lock\u acquire:r”