我正在分析Java(OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
)应用程序,该应用程序主要由I/O
文件到套接字组成。数据是从文件中读取的,即时压缩后发送到套接字。
我用perf进行了一些cpu周期采样,并得到了以下图片:
我注意到的是sys_futex
消耗了大部分CPU(精确地_raw_spin_unlock_irqrestore
-11.44%),并且我从其名称中猜测的所谓_ZN12GCTaskThread3runEnv
符号与{{ 1}}。
问题:
如何找出此符号GC
的作用?
为什么_ZN12GCTaskThread3runEnv
es(futex
,futex_wait
)的CPU使用时间最多?我期望由于futex_wake
活跃度高而导致的copy_user_enhanced_fast_string
会高居榜首,但在所示示例中仅需要I/O
。
AFAIK 0.56%
代表等待I / O事件,但是为什么它消耗的CPU比I / O本身更多?