Spark Executor仪表盘GC时间统计规则及ParallelGC STW时长计算咨询
Spark Executor 仪表盘GC时间统计逻辑解答
首先明确核心结论:
Spark Executor页面展示的GC时间不是各线程GC耗时的累加值,不需要除以核数折算,你看到的41min就是该Executor实际发生Stop-The-World(STW)的总墙钟时长。
相关统计逻辑细节如下:
- 你对Task Time的统计逻辑认知是正确的:该指标是Executor上所有运行Task的耗时总和,没有按核数做加权,8核Executor的总Task Time除以8,结果和Executor实际运行的墙钟时长一致。
- GC时间的统计逻辑和Task Time完全不同:Spark的GC指标采集自JVM内置的
GarbageCollectorMXBean接口,该接口返回的GC时长是单次GC事件从STW启动到STW结束的真实经过时间累加值,和GC阶段启用的并行线程数没有关系。 - 针对你使用的ParallelGC回收器:哪怕单次GC过程中启用了和核数相等的8个GC线程并行执行标记、清理操作,JVM统计的本次GC时长也只是STW的实际暂停时长,不会把每个GC线程的运行时间做累加。举个例子:一次GC触发STW暂停了10秒,即使8个GC线程全程并行工作,接口返回的本次GC时长就是10秒,不会统计为80秒。
不需要对页面展示的GC时间做除以核数的折算,页面显示的41min就是该Executor所有GC事件导致业务线程暂停的总时长,不存在折算后5min的情况。
内容的提问来源于stack exchange,提问作者ffff
相关产品推荐
相关产品推荐

