GBase南大通用-GBase 8a资源管理功能试用

环境:centos7.9;GBase 8a V9.5.3.27

  1. 资源管理功能简介

GBase南大通用的GBase 8a MPP Cluster 资源管理功能可以对 SELECT 和 DML 等受控 SQL 在运 行过程中使用的 CPU、内存、I/O 和磁盘空间等资源进行合理管控,以达到资 源合理利用,系统稳定性运行的要求 。

GBase 8a MPP Cluster 资源管理由 Consumer Group(资源消费组)、Resource Pool (资源池)、Resource Plan(资源计划)、Resource Directive(资源指令)、User (资源消费用户)组成 。

资源消费组用于关联数据库用户,一个用户只能属于一个资源消费组,一个资源消费组可以有多个用户。存在默认消费组(default_consumer_group )的概念,所有未被分配指定消费组的用户都属于默认消费组。

资源池分为静态资源池和动态资源池,负责对资源进行划分。

资源计划则是一组或多组资源池与资源消费组对应关系的集合。

资源池、资源消费组、资源计划通过资源指令结合起来。

  1. 配置资源管理环境

GBase 8a资源管理功能依赖于操作系统的cgroup组件,需要执行

yum install libcgroup*

安装所需依赖,然后对cgroup的配置文件进行修改。

vi /etc/cgconfig.conf

在配置文件中追加以下内容(若集群安装时,运行SetSysEnv.py指定了-cgroup参数,则无需手动配置该文件):

mount {cpu = /cgroup/cpu;cpuacct = /cgroup/cpuacct;blkio = /cgroup/blkio;
}
group gbase {perm{task{uid = gbase;gid = gbase;}admin{uid = gbase;gid = gbase;}}cpu{}cpuacct{}blkio{}
}

之后创建文件夹并进行挂载

mkdir /cgroup
mkdir /cgroup/cpu /cgroup/cpuacct /cgroup/blkio
mount -t cgroup -o cpu cpu /cgroup/cpu
mount -t cgroup -o cpuacct cpuacct /cgroup/cpuacct
mount -t cgroup -o blkio blkio /cgroup/blkio

生效配置

cgclear
cgconfigparser -l /etc/cgconfig.conf

  1. 创建基本对象

连接数据库,使用如下SQL语句创建基本对象。

#三个group对应三个user
create user user1;
create user user2;
create user user3;
create consumer group group1;
create consumer group group2;
create consumer group group3;
ALTER CONSUMER GROUP group1 ADD USER user1;
ALTER CONSUMER GROUP group2 ADD USER user2;
ALTER CONSUMER GROUP group3 ADD USER user3;#创建三个plan
create resource plan plan1;
create resource plan plan2;
create resource plan plan3;#创建三个静态资源池
create resource pool static_pool1(cpu_percent=80,max_memory=1000,max_temp_diskspace=2000,max_disk_space=2000,max_disk_writeio=1000,max_disk_readio=1000) type static;
create resource pool static_pool2(cpu_percent=80,max_memory=1000,max_temp_diskspace=2000,max_disk_space=2000,max_disk_writeio=1000,max_disk_readio=1000) type static;
create resource pool static_pool3(cpu_percent=80,max_memory=1000,max_temp_diskspace=2000,max_disk_space=2000,max_disk_writeio=1000,max_disk_readio=1000) type static;

  1. 测试逻辑

4.1 测试各参数声明逻辑

#为pool1创建动态资源池1,cpu超过了静态资源池,其他均为原来的一半
create resource pool dynamic_pool1_1(priority=1,cpu_percent=100,max_memory=500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500,max_activetask=2,task_max_parallel_degree=100,task_waiting_timeout=100000,task_running_timeout=100000)TYPE dynamic BASE ON static_pool1;
#虽然cpu超过了静态池,但是没有报错(因为动态池的cpu设置为权重设置)#之后将1_1挂载到plan1上
CREATE RESOURCE DIRECTIVE dir1 ( PLAN_NAME = 'plan1', GROUP_NAME ='group1', POOL_NAME = 'dynamic_pool1_1');#再创建一个1_2,没有报错,虽然其和1_1的cpu加起来已经110了,但是没有挂载,就无所谓,接下来将其和默认group挂载到plan1上试一下
create resource pool dynamic_pool1_2(priority=1,cpu_percent=10,max_memory=500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500,max_activetask=2,task_max_parallel_degree=100,task_waiting_timeout=100000,task_running_timeout=100000)TYPE dynamic BASE ON static_pool1;
#执行下列语句,报错了,因为1_1和1_2的CPU总权重超过了100%,
CREATE RESOURCE DIRECTIVE dir2 ( PLAN_NAME = 'plan1', GROUP_NAME ='default_consumer_group', POOL_NAME = 'dynamic_pool1_2');
#此时总结规律如下,动态资源池的cpu值,在创建时只要不超过100即可,但是挂载时,总和不能大于100,那要是两个动态资源池属于两个静态资源池呢?#此时,pool1为80,再创建一个pool4为2,并为其创建一个pool4_1为100,看看挂载到plan1上会不会报错。
create resource pool static_pool4(cpu_percent=2,max_memory=1000,max_temp_diskspace=2000,max_disk_space=2000,max_disk_writeio=1000,max_disk_readio=1000) type static;
create resource pool dynamic_pool4_1(priority=1,cpu_percent=100,max_memory=500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500,max_activetask=2,task_max_parallel_degree=100,task_waiting_timeout=100000,task_running_timeout=100000)TYPE dynamic BASE ON static_pool4;
CREATE RESOURCE DIRECTIVE dir2 ( PLAN_NAME = 'plan1', GROUP_NAME ='default_consumer_group', POOL_NAME = 'dynamic_pool4_1');
#没有报错,即挂载的动态资源池的占比*对应静态资源池,不超过100即可。#cpu的逻辑已经理清了,此时在测试一下内存和磁盘的逻辑:可以看到此时pool4的内存为1000,pool4_1的内存为500,那么再创建一个pool4_2的内存为600,会不会报错呢,应该不会,因为此时并没有触发挂载。
create resource pool dynamic_pool4_2(priority=1,cpu_percent=100,max_memory=600,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500,max_activetask=2,task_max_parallel_degree=100,task_waiting_timeout=100000,task_running_timeout=100000)TYPE dynamic BASE ON static_pool4;
#没有报错,要是创建一个pool4_3内存为1500呢?
create resource pool dynamic_pool4_3(priority=1,cpu_percent=100,max_memory=1500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500,max_activetask=2,task_max_parallel_degree=100,task_waiting_timeout=100000,task_running_timeout=100000)TYPE dynamic BASE ON static_pool4;
#报错了,因为其值已经超过了静态池的该值。#此时再尝试将内存为600的pool4_2挂载到plan1上,应该会报错,因为内存总和大于了1000
CREATE RESOURCE DIRECTIVE dir3 ( PLAN_NAME = 'plan1', GROUP_NAME ='group2', POOL_NAME = 'dynamic_pool4_2');
#报错了,符合预期#按照验证内存的逻辑,再简单验证一下磁盘是不是同理。经验证,同理。即,另外五个必选参数,在创建时,不能超过原静态池,在挂载时,总和不能超过原静态池的值。#此外还测试到如下逻辑:
#激活一个计划时,当前所有的用户必须被全部分配
#存在激活计划时,创建删除资源指令均不可以。create resource pool dynamic_pool4_5(priority=1,cpu_percent=100,max_memory=500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500)TYPE dynamic BASE ON static_pool4;
CREATE RESOURCE DIRECTIVE dir5 ( PLAN_NAME = 'plan2', GROUP_NAME ='group3', POOL_NAME = 'dynamic_pool4_3');
DROP RESOURCE DIRECTIVE dir5;
create resource pool dynamic_pool4_7(priority=1,cpu_percent=80,max_memory=500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500,max_activetask=9999999999989999999999)TYPE dynamic BASE ON static_pool4;
ALTER resource pool dynamic_pool4_3 SET(priority=1,cpu_percent=100,max_memory=500,max_temp_diskspace=1000,max_disk_space=1000,max_disk_writeio=500,max_disk_readio=500)TYPE dynamic BASE ON static_pool4;
#非必选参数经测试,确实可以任意设置

4.2 测试内存检测功能

  • 创建资源管理相关对象

如上图,先创建一个最大内存为1M的静态资源池,再在其基础上创建一个同样最大内存为1M的动态资源池

CREATE RESOURCE DIRECTIVE dir1 (  PLAN_NAME = 'plan1', GROUP_NAME='default_consumer_group', POOL_NAME = 'dpool1');

之后将这个动态资源池与默认资源组挂载到plan1

  • 激活资源计划

  • 创建测试用表并插入数据

创建测试表t1和t2,插入部分数据

  • 进行测试

执行一个复杂SQL

可以看到报错如下:

ERROR 1708 (HY000): [192.168.161.128:5050](GBA-02AD-0005)Failed to query in gnode:
DETAIL: (GBA-01EX-700) Gbase general error: Exceed max Large Buffer Usage
SQL: SELECT /*192.168.161.128_34_36_2023-02-10_10:52:54*/ /*+ TID('242') */ `vcname000001.test.t1`.`a` AS `a`, `_tmp_2158078144_34_t1_1_1675996745_s`.`c1` AS `c1` FROM `gctmpdb`._tmp_2158078144_34_t1_1_1675996745_s INNER JOIN `test`.`t1_n1` `vcname000001.test.t1` ON (`vcname000001.test.t1`.`a` = `_tmp_2158078144_34_t1_1_1675996745_s`.`c1`)

关闭计划

  • 再次执行对应SQL

再次执行同样SQL,没有报错,可见资源管理功能内存管理有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/225146.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【toolschain algorithm cpp ros】cpp工厂模式实现--后续填充具体规划算法,控制器版的已填充了算法接入了仿真器

写在前面 现在局势危机,于是想复习一下之前写的设计模式,之前提到,做过一个闭环仿真器(借用ros),见https://blog.csdn.net/weixin_46479223/article/details/134864123我的控制器的建立遵循了工厂模式&…

【低照度图像增强系列(2)】Retinex(SSR/MSR/MSRCR)算法详解与代码实现

前言 ☀️ 在低照度场景下进行目标检测任务,常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题,给检测带来一定的难度。 🌻使用图像增强模块对原始图像进行画质提升,恢复各类图像信息,再使用目标检…

C#与php自定义数据流传输

C#与php自定义数据流传输 介绍一、客户端与服务器数据传输流程图客户端发送数据给服务器:服务器返回数据给客户端: 二、自定义数据流C#版本数据流PHP版本数据流 三、数据传输测试1.在Unity中创建一个C#脚本NetWorkManager.cs2.服务器www目录创建StreamTe…

【Linux驱动】驱动框架的进化 | 总线设备驱动模型

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🥩驱动框架的进化🥠分层🥠面向对象🥠编程&am…

使用 Jekyll 构建你的网站 - 初入门

文章目录 一、Jekyll介绍二、Jekyll安装和启动2.1 配置Ruby环境1)Windows2)macOS 2.2 安装 Jekyll2.3 构建Jekyll项目2.4 启动 Jekyll 服务 三、Jekyll常用命令四、目录结构4.1 主要目录4.2 其他的约定目录 五、使用GitLink构建Jekyll博客5.1 生成Jekyll…

同义词替换器降低论文重复率的最新技术解析

大家好,今天来聊聊同义词替换器降低论文重复率的最新技术解析,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:同义词替换器降低论文重复率的最…

跟着LearnOpenGL学习11--材质

文章目录 一、材质二、设置材质三、光的属性四、不同的光源颜色 一、材质 在现实世界里,每个物体会对光产生不同的反应。 比如,钢制物体看起来通常会比陶土花瓶更闪闪发光,一个木头箱子也不会与一个钢制箱子反射同样程度的光。 有些物体反…

使用Clion配置Qt开发过程中的很多坑

如果你想使用Clion开发Qt软件 如果你想在Windows上使用Clion开发Qt 如果你还想使用MSVC编译器开发Qt 但是却遇到了各种各种编译报错,那么恭喜你这些坑都有人帮你踩过了 报错一 CMake Error at CMakeLists.txt:25 (find_package):Could not find a package config…

冒泡排序(C语言)

void BubbleSort(int arr[], int len) {int i, j, temp;for (i 0; i < len; i){for (j len - 1; j > i; j--){if (arr[j] > arr[j 1]){temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}} } 优化&#xff1a; 设置标志位flag&#xff0c;如果发生了交换flag设置…

西南科技大学计算机网络实验二 (IP协议分析与以太网协议分析)

一、实验目的 通过分析由跟踪执行traceroute程序发送和接收捕获得到的IP 数据报,深入研究在IP 数据报中的各种字段,理解IP协议。基于ARP命令和Ethereal进行以太网帧捕获与分析,理解和熟悉ARP协议原理以及以太网帧格式。 二、实验环境 与因特网连接的计算机网络系统;主机操…

ES-mapping

类似数据库中的表结构定义&#xff0c;主要作用如下 定义Index下的字段名( Field Name) 定义字段的类型&#xff0c;比如数值型、字符串型、布尔型等定义倒排索引相关的配置&#xff0c;比如是否索引、记录 position 等 index_options 用于控制倒排索记录的内容&#xff0c;有如…

敏捷开发 - 知识普及

敏捷开发- Scrum 前言 知乎有一篇文章描写Scrum,我觉得比较好:https://zhuanlan.zhihu.com/p/631459977 简单科普下PM和PMO 原文来源:https://zhuanlan.zhihu.com/p/546820914 PM - 项目经理(Project Manager) ​ 需要具备以下能力 ​ 1.号召力 2.影响力 3.交流能力 4.应…

MySQL 导入数据报错MySQL server has gone away

SQL语句太大了 稍微难以测试和验证&#xff0c;但是MySQL使用最大数据包站站点进行服务器和客户端之间的通信。如果语句包含大字段&#xff0c;则可能由于SQL语句的大小&#xff0c;而被中止。 我们可以通过语句查看一下允许的最大包大小&#xff1a;show global variables lik…

k8s---kubernets

目录 一、Kurbernetes 1.2、K8S的特性&#xff1a; 1.3、docker和K8S&#xff1a; 1.4、K8S的作用&#xff1a; 1.5、K8S的特性&#xff1a; 二、K8S集群架构与组件&#xff1a; 三、K8S的核心组件&#xff1a; 一、master组件&#xff1a; 1、kube-apiserver&#xff1…

蓝桥杯的学习规划

c语言基础&#xff1a; Python语言基础 学习路径&#xff1a;画框的要着重学习

音频修复增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac软件特点 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

网络安全保障领域

计算机与信息系统安全---最主要领域 云计算安全 IaaS、PasS、SaaS(裸机&#xff0c;装好软件的电脑&#xff0c;装好应用的电脑) 存在风险&#xff1a;开源工具、优先访问权、管理权限、数据处、数据隔离、数据恢复、调查支持、长期发展风险 云计算安全关键技术&#xff1a;可信…

【C++逆向 - 1】C++函数新特性

内联函数 本质&#xff1a;用函数代码替换函数调用 使用方式&#xff1a;在函数声明和函数定义前加上 inline 关键字 笔者感觉跟C语言中的宏定义差不多&#xff0c;但是内联函数更加“智能”&#xff08;应该是编译器更加智能&#xff09;。即使程序员将函数作为内联函数&am…

华为数通方向HCIP-DataCom H12-831题库(多选题:221-240)

第221题 在割接项目的项目调研阶段需要对现网硬件环境进行观察,主要包括以下哪些内容? A、设备的位置 B、ODF位置 C、接口标识 D、光纤接口对应关系 答案:ABCD 解析: 在项目割接前提的项目调研阶段,需要记录下尽可能详细的信息。 第222题 以下哪些项能被正则表达式10*成…

Python 新规范 pyproject.toml 完全解析

多谢&#xff1a;thank Python从PEP 518开始引入的使用pyproject.toml管理项目元数据的方案。 该规范目前已经在很多开源项目中得以支持&#xff1a; Django 这个 Python 生态的顶级项目在 5 个月之前开始使用 pyproject.tomlPytest 这个 Python 生态测试框架的领头羊在 4 个…