什么是 __kernel_vsyscall?
我得到了一个看起来与我通常得到的非常不同的内核 - 大多数线程都在 __kernel_vsyscall() 中:
I got a core that looks very different from the ones I usually get - most of the threads are in __kernel_vsyscall() :
9 process 11334 0xffffe410 in __kernel_vsyscall ()
8 process 11453 0xffffe410 in __kernel_vsyscall ()
7 process 11454 0xffffe410 in __kernel_vsyscall ()
6 process 11455 0xffffe410 in __kernel_vsyscall ()
5 process 11474 0xffffe410 in __kernel_vsyscall ()
4 process 11475 0xffffe410 in __kernel_vsyscall ()
3 process 11476 0xffffe410 in __kernel_vsyscall ()
2 process 11477 0xffffe410 in __kernel_vsyscall ()
1 process 11323 0x08220782 in MyClass::myfunc ()
这是什么意思?
特别是,我通常会在pthread_cond_wait"和___newselect_nocancel"中看到很多线程,而现在它们位于每个线程的第二帧 - 为什么这个核心不同?
In particular, I usually see a lot of threads in "pthread_cond_wait" and "___newselect_nocancel" and now those are on the second frame in each thread - why is this core different?
推荐答案
__kernel_vsyscal
是 linux-gate.so(Linux 内核的一部分)使用最快的可用方法,最好是 sysenter
指令.Johan Petersson 正确解释了这件事.
__kernel_vsyscal
is the method used by linux-gate.so (a part of the Linux kernel) to make a system call using the fastest available method, preferably the sysenter
instruction. The thing is properly explained by Johan Petersson.
相关文章