首页 > 其他分享 >dremio CommandPool简单说明

dremio CommandPool简单说明

时间:2022-12-14 19:45:09浏览次数:38  
标签:dremio return poolSize CommandPool 简单 config final pool

CommandPool 实际上是一个线程池的处理,官方实现了好几种线程池

主要作用

  • 限制并行请求以以及job 的运行
  • 定义优先级任务

特点

  • 任务基于优先级以及提交时间进行自然排序
  • 当线程空闲的是否任务会尽快的执行
  • 在其他任务需要运行的是否,比较忙碌的线程必须先完成
  • CommandPool 的注册是由CommandPoolFactory处理的

实现类

 

 


实际具体实现可以参考不同实现的源码

创建

上边也说了,是由CommandPoolFactory 创建的,参加处理
参考代码

 
public CommandPool newPool(final DremioConfig config, final Tracer tracer) {
    if (config.getBoolean(RELEASABLE_COMMAND_POOL_ENABLED)) {
      final int poolSize = getPoolSize(config);
      logger.info("Starting releasable bound command pool of size {}", poolSize);
      return new ReleasableBoundCommandPool(poolSize, tracer);
    }
 
    if (config.getBoolean(COMMAND_POOL_ENABLED)) {
      final int poolSize = getPoolSize(config);
      logger.info("Starting bound command pool of size {}", poolSize);
      return new BoundCommandPool(poolSize, tracer);
    }
 
    logger.info("Starting unbound command pool");
    // We don't bother decorating the same thread pool.
    // The tracing context doesn't have to move.
    return new SameThreadCommandPool();
  }
 // 实际的cpu 处理器个数
  private int getPoolSize(final DremioConfig config) {
    int poolSize = config.getInt(POOL_SIZE);
    poolSize = poolSize > 0 ? poolSize : VM.availableProcessors() - 1; // make sure we don't use all cores by default
    return Math.max(1, poolSize); // in the unlikely case where the cpu has a single core
  }

说明

CommandPool 在好多任务执行的地方都是需要依赖的,但是主要是AttemptManager 进行操作,由源头ForemenWorkManager 依赖,并传递到依赖的服务中

参考资料

services/command-pool/src/main/java/com/dremio/service/commandpool/CommandPool.java

标签:dremio,return,poolSize,CommandPool,简单,config,final,pool
From: https://www.cnblogs.com/rongfengliang/p/16983356.html

相关文章

  • spring boot+ nginx 搭建简单的文件服务器,实现上传下载
    项目中用的文件服务的上传和下载访问的问题,由于疫情没有办法接入大的分布式是文件服务器中,自己就动手搭建一个文件服务器来nginx+springboot。实现的主要思路如下:springb......
  • omitjs简单使用
    欢迎关注前端早茶,与广东靓仔携手共同进阶​前端早茶专注前端,一起结伴同行,紧跟业界发展步伐~1、omitjs干什么用的返回一个没有列入排除key属性的对象。其中,参数object为JSON......
  • vuex的使用-简单存储
    在写新项目的时候,用input写了个搜索框,搜索之后获取到点击的数据,要将数据在tab中渲染出来,我思前想后,还是觉得vuex是最好的解决办法,记录一下vuex的基本用法首先是在store文......
  • 简单端口映射、转发、重定向工具之Rinetd
    ◆一、概述Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。将TCP连接从一个IP地址和端口重定向到另一个。它处理文件中/etc/rinetd......
  • 06-Go日志库Zap简单二次封装
    Go日志库Zap简单二次封装1.在项目根目录或者项目其他目录下创建二次封装代码存放目录zaplog,其他目录名称也可以2.新建config.go文件和zaplog文件,文件内容如下:config.g......
  • 正排索引和倒排索引简单介绍
    在搜索引擎中,数据被爬取后,就会建立index,方便检索。  在工作中经常会听到有人问,你这个index是正排的还是倒排的?那么什么是正排呢?什么又是倒排呢?下面是一些简单的介绍。 ......
  • stm32定时器引脚分布,定时器2~7、9~14基本配置,PWM波电机调速简单代码
    使用STM32MIN开发板操作,对电机进行PWM简单调速,使用通用定时器TIM3上,下图为MIN板定时器引脚分布图mian.c#include"delay.h"#include"usart.h"#include"motor.h"intmai......
  • python对m3u8文件的简单处理(一)
    前言:最近一直在看python方面的知识,突然对python对视频如何处理非常感兴趣,于是百度一下,看看网上的方法,根据兴趣,试着从网上下载一个m3u8的实例看看。本实例为个人学习使用,试着......
  • DoWhy - 因果推断 建模入门 简单样例学习与解读
    因为工作原因,需要进行因果推断的分析,在这里进行一个DoWhy工具的简单入门。分析入口:https://github.com/py-why/dowhy/blob/main/docs/source/example_notebooks/dowhy_exa......
  • 最简单的BFS走迷宫问题
    原题目链接:https://www.luogu.com.cn/problem/T279759?contestId=88579  题目背景人生辗转几十年,今天学长终于遇到了他的喜欢的女孩...题目描述在一个阴雨连绵的夜......