apache Spark中executorRunTime和executorCpuTime之间的主要区别是什么?executorRunTime 也包括 executorCpuTime 吗?
小智 2
差异似乎可以归结为用于测量任务开始和结束时间的计时器实现(这是整个作业的执行程序或 CPU 运行时指标的总和),并且它们的计算方式看起来非常一致,请参见下文。
在更高的层面上,CPU Time 更直接地衡量任务实际执行所花费的时间,因为它不包括在其他线程中花费的时间,而执行程序时间只会计算任务计算时经过的所有时间,包括花费的时间在其他线程中。因此,CPU 运行时间可能会减少。
查看executor.scala中如何设置和使用完成时间(开始时间的设置类似):
val taskFinishNs = System.nanoTime()
val taskFinishCpu = if (threadMXBean.isCurrentThreadCpuTimeSupported) {
threadMXBean.getCurrentThreadCpuTime
} else 0L
// ... other code omitted for brevity ...
task.metrics.setExecutorRunTime(
(taskFinish - taskStart) - task.executorDeserializeTime
)
task.metrics.setExecutorCpuTime(
(taskFinishCpu - taskStartCpu) - task.executorDeserializeCpuTime
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |