Linux 如何找出哪个内核自旋锁占用了大部分CPU?
我正在对一个加密软件进行性能调整,该软件在Linux上运行,并利用硬件加密加速设备 当负载超过某个阈值时,内核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上的类似问题,但我找不到关于如何发现哪个自旋锁自旋的答案。 有没有办法找到旋转锁的位置?任何提示
\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”