一. 查询端到端相关的时间
图中①所示的时间是execution time,是查询从开始调度(planning)到查询执行结束的端到端时间,包括planning,scheduling,running和下游将数据拉走的时间。如果客户端不及时拉走数据,该时间也会增加。
图中②所示的时间是Elapsed Time,是coordinator接收到查询到查询完全结束的端到端时间。相比于①,此时间还包括了在resource group中的等待时间。
图③ 为CPU时间,CPU时间为所有CPU核加起来所耗费的时间,因此可能此时间比查询时间还大。CPU时间的计算通过THREAD_MX_BEAN.getCurrentThreadCpuTime进行计算,仅进程被调度运行的时候才算,如果线程被CPU切换进行休眠的时间不算入CPU时间。
二. Task级别的时间统计
Scheduled Time:Stage处于调度状态的时间,用调度结束后的System.nanoTime减去调度开始的System.nanoTime时间进行计算。
Blocked Time:Stage处于调度状态的时间,用调度结束后的System.nanoTime减去调度开始的System.nanoTime时间进行计算。
CPU Time:stage花费的所有核的CPU时间的总和。
Elapsed Time:Elapsed 时间为stage执行的端到端时间。
Wall Time:Wall Time和Scheduled Time的计算方式一样,只是stage端到端的时间。