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

dremio CommandPool简单说明

时间:2022-12-17 18:37:42浏览次数:37  
标签:dremio poolSize 线程 CommandPool 简单 config final pool

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

主要作用

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

特点

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

实现类

dremio CommandPool简单说明_线程池

 

 

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

创建

上边也说了,是由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,poolSize,线程,CommandPool,简单,config,final,pool
From: https://blog.51cto.com/rongfengliang/5949954

相关文章

  • redis底层数据结构之简单动态字符串(SDS)
    简单动态字符串(simpledynamicstring,SDS)redis使用C语言编写的,但是redis的字符串却不是C语言中的字符串(以空字符'\0'结尾的字符数组),redis定义了一种简单动态字符串(s......
  • WebService简单教学
    目录##springboot整合CXF的快速入门##一,服务端提供webservice服务1,实体类User2,webservice接口3,webservice接口的实现类4,CXF配置类5,pom依赖配置6,页面访问服务二,客户端访问we......
  • GP之gpfdist简单使用操作
    我的GP集群只有4台,一台mdw,一台备的sdw,两台segment节点,没有创建etl节点,生产中受网络,磁盘等影响,建议使用etl节点操作。mdw:一、在gpadmin家目录随便创建一个demo.txt[gpa......
  • flutter 对dio进行简单的二次封装
    前言:在项目中,我们往往要对第三方框架进行二次封装,目的在于减小项目对第三方框架的依赖下载所需要的依赖,文件pubspec.yamldependencies:dio:^4.0.6//http请求依赖......
  • PHP 之简单在线更新
    一、效果图   二、示例代码1、客户端common.php<?php/***CreatedbyPhpStorm.*User:Mr.Yang*Date:2022/5/11*Time:15:24*QQ:2575404985......
  • 关于2023届互联网秋招,我想简单说两句
    我是一名2023届双非毕业生(软件工程专业,无实习经历),大概从7月开始吧,打磨简历、刷笔试题、看面经、找公司、投简历、做性格测试、做笔试、面试、总结面试,之后再次打磨简历。。......
  • 【转载】安装Axure RP Extension for Chrome插件的简单方法
    在使用Chrome浏览器查看Axure的原型HTML文件时,会提示下载AxureRPExtensionforChrome插件!而插件在Google的服务器上根本下载不了。下面的网文可以让你只需三步,不用下载A......
  • 二叉树前中后序递归遍历完整代码【超简单易懂】
    //二叉树的前中后序遍历【递归法】#include<iostream>usingnamespacestd;//结点结构体typedefstructBTnode{ chardata;//自己的数据 BTnode*lch......
  • fastposter v2.10.0 简单易用的海报生成器
    fastposterv2.10.0简单易用的海报生成器......
  • ConcurrentLinkedQueue和ConcurrentHashMap简单介绍
    ConcurrentLinkedQueue是一个单向的链表 入队列     每次在队尾追加两个节点,才移动一次tail节点添加节点1和节点2  在添加一个节点3  step4中q为......