Presto 之Blocked Time

一. 前言

        在Presto的UI中,可以看到每一个查询的每一个算子的各种汇总的统计信息,比如输入输出数据量,端到端时间,阻塞时间等,如下所示:

                        

     本文主要介绍在Presto中,Blocked Time的含义以及在Presto中Block Time是怎么实现的。

二. Blocked Time

  1. Blocked Time顾名思义为算子计算过程中的阻塞时间,此时间是从Operator的isBlocked接口返回的ListenableFuture开始计算,直到ListenableFuture done的时间差值。

  2. Blocked Time的时间是系统时间,也就是System.nanoTime的人为感知的时间。

  3. Presto UI上汇总的Blocked Time是该pipeline中所有该Operator的时间总值。比如假如有10个TableScan Operator,那Blocked Time为10个TableScan Operator的阻塞时间的总和,因此该时间可能会比整个查询端到端的时间还会大。

 

三. Presto 中Blocked Time的计算

  1. 算子如果处于阻塞状态,Operator的isBlocked接口返回后台进程的ListenableFuture句柄,如下为其中一个Operator的样例:

 

      2. Driver的Operator管理进程如果发现Operator处于阻塞状态,将启动一个BlockedMonitor后台 进程,BlockedMonitor会记录此Operator阻塞的开始时间。

 

       3. Driver的Operator管理进程将BlockedMonitor注册到1中的ListenableFuture,等到1中的ListenableFuture完成后(也即阻塞解除),调用2中的run方法,记录Blocked的结束时间与开始时间的时间差,求取时间差,也即2图示中的blockedWallNanos变量,此变量就是operator的阻塞时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值