【发布时间】:2018-07-13 07:00:26
【问题描述】:
我使用 perf top 来分析一个在 arm-linux 上运行的进程,结果如下所示:
4.27% [vectors] [.] 0x00000fc4
3.84% [kernel] [k] _raw_spin_unlock_irqrestore
2.30% [kernel] [k] _raw_spin_unlock_irq
1.94% libc-2.20.so [.] 0x0007c35c
1.91% [vectors] [.] 0x00000fd8
1.56% libGLESv2.so.1.9.6.0 [.] 0x0003a5e0
1.34% libGLESv2.so.1.9.6.0 [.] 0x0003a5cc
0.91% [omapdrm_pvr] [k] _SegmentListInsert
0.87% libpthread-2.20.so [.] 0x0000aee4
0.82% libc-2.20.so [.] 0x00075464
0.76% libc-2.20.so [.] 0x0007767c
0.48% libpthread-2.20.so [.] 0x000094dc
0.46% libv8.so.4 [.] 0x0017a058
0.46% libGLESv2.so.1.9.6.0 [.] 0x0003a420
0.43% [kernel] [k] do_nanosleep
0.41% [kernel] [k] __copy_from_user
0.40% libc-2.20.so [.] 0x0007d8a4
0.40% libpthread-2.20.so [.] 0x00009480
0.39% [kernel] [k] do_vfp
0.39% librender_engine.so [.] 0x004d3ff8
我想知道 [vectros] 可能代表什么?据我所知,它不是内核模块,但是,0x00000fc4 是一个永远不应该使用的低端地址,除此之外,0x00000fc4 似乎是arm异常向量的地址。
欢迎任何评论。
【问题讨论】:
-
中断处理程序似乎是合理的,甚至可能。尤其是如果您的工作量中断繁重,我认为这是基于
_raw_spin_unlock_irq有大量时间的情况。