This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push: new f76dda09197 [docs]update workload group (#1639) f76dda09197 is described below commit f76dda09197b87b4a82475ea1e1cbf62a7352f3a Author: wangbo <wan...@apache.org> AuthorDate: Fri Dec 27 15:30:58 2024 +0800 [docs]update workload group (#1639) ## Versions - [x] dev - [ ] 3.0 - [ ] 2.1 - [ ] 2.0 ## Languages - [x] Chinese - [ ] English ## Docs Checklist - [ ] Checked by AI - [ ] Test Cases Built --- .../workload-management/workload-group.md | 87 ++++++++++------------ 1 file changed, 39 insertions(+), 48 deletions(-) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md index ee4422d29af..8164181c886 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md @@ -46,16 +46,7 @@ Workload Group 是一种进程内实现的对负载进行逻辑隔离的机制 ## 配置workload group ### 配置 CGroup 环境 - -在使用2.1版本的Workload Group功能之前,需要 BE 所在的节点上已经安装好 CGroup 的环境。 - -用户如果在 2.0 版本使用了 Workload Group 的软限并升级到了 2.1 版本,那么也需要配置 CGroup,否则可能导致CPU软限失效。 - -目前支持的 CGroup 版本为 CGroup v1 和 CGroup v2。 - -如果是在容器内使用 CGroup,需要容器具备操作宿主机的权限。 - -在不配置 CGroup 的情况下,用户可以使用 Workload Group 除 CPU 限制外的所有功能。 +Workload Group 支持对于 CPU , 内存, IO 资源的管理,其中对于 CPU 的管理依赖 CGroup 组件;如果期望使用 Workload Group 管理CPU资源,那么首先需要进行 CGroup 环境的配置。 以下为CGroup环境配置流程: @@ -155,7 +146,7 @@ Query OK, 0 rows affected (0.03 sec) | 属性名称 | 数据类型 | 默认值 | 取值范围 | 说明 | |------------------------------|---------|-----|-----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | cpu_share | 整型 | -1 | [1, 10000] | 可选,CPU软限模式下生效,取值范围和使用的CGroup版本有关,下文有详细描述。cpu_share 代表了 Workload Group 可获得CPU时间的权重,值越大,可获得的CPU时间越多。例如,用户创建了 3 个 Workload Group g-a、g-b 和 g-c,cpu_share 分别为 10、30、40,某一时刻 g-a 和 g-b 正在跑任务,而 g-c 没有任务,此时 g-a 可获得 25% (10 / (10 + 30)) 的 CPU 资源,而 g-b 可获得 75% 的 CPU 资源。如果系统只有一个 Workload Group 正在运行,则不管其 cpu_share 的值为多少,它都可获取全部的 CPU 资源 。 | -| memory_limit | 浮点 | -1 | (0%, 100%] | 可选,开启内存硬限时代表当前 Workload Group 最大可用内存,默认值代表不限制内存。所有 Workload Group 的 memory_limit 累加值不可以超过 100%,通常与 enable_memory_overcommit 配合使用。如果一个机器的内存为 64G,mem_limit=50%,那么该 group 的实际物理内存=64G * 90%(be conf mem_limit) * 50%= 28.8G,这里的 90% 是 BE 进程级别的 mem_limit 参数,限制整个 BE 进程的内存用量。一个集群中所有 Workload Group 的 memory_limit 的累加值不能超过 100%。 | +| memory_limit | 浮点 | -1 | (0%, 100%] | 可选,开启内存硬限时代表当前 Workload Group 最大可用内存百分比,默认值代表不限制内存。所有 Workload Group 的 memory_limit 累加值不可以超过 100%,通常与 enable_memory_overcommit 属性配合使用。如果一个机器的内存为 64G,Workload Group 的 memory_limit配置为50%,那么该 group 的实际物理内存=64G * 90% * 50%= 28.8G,这里的90%是 BE 进程可用内存配置的默认值。一个集群中所有 Workload Group 的 memory_limit 的累加值不能超过 100%。 | | enable_memory_overcommit | 布尔 | true | true, false | 可选,用于控制当前 Workload Group 的内存限制是硬限还是软限,默认为 true。如果设置为 false,则该 workload group 为内存硬隔离,系统检测到 workload group 内存使用超出限制后将立即 cancel 组内内存占用最大的若干个任务,以释放超出的内存;如果设置为 true,则该 Workload Group 为内存软隔离,如果系统有空闲内存资源则该 Workload Group 在超出 memory_limit 的限制后可继续使用系统内存,在系统总内存紧张时会 cancel 组内内存占用最大的若干个任务,释放部分超出的内存以缓解系统内存压力。建议所有 workload group 的 memory_limit 总和低于 100%,为BE进程中的其他组件保留一些内存。 | | cpu_hard_limit | 整型 | -1 | [1%, 100%] | 可选,CPU 硬限制模式下生效,Workload Group 最大可用 CPU 百分比,不管当前机器的 CPU 资源是否被用满,Workload Group 的最大 CPU 用量都不能超过 cpu_hard_limit,所有 Workload Group 的 cpu_hard_limit 累加值不能超过 100%。2.1 版本新增属性,2.0版本不支持该功能。 | | max_concurrency | 整型 | 2147483647 | [0, 2147483647] | 可选,最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到最大并发时,新来的查询会进入排队的逻辑。 | @@ -175,9 +166,45 @@ Query OK, 0 rows affected (0.03 sec) 2. 所有属性均为可选,但是在创建 Workload Group 时需要指定至少一个属性。 3. 需要注意 CGroup v1 CGroup v2 版本 CPU 软限默认值是有区别的, CGroup v1 的 CPU 软限默认值为1024,取值范围为2到262144。而 CGroup v2 的 CPU 软限默认值为100,取值范围是1到10000。 - 如果软限填了一个超出范围的值,这会导致 CPU 软限在BE修改失败。是在CGroup v1的环境上如果按照CGroup v2的默认值100设置,这可能导致这个workload group的优先级在该机器上是最低的。 + 如果软限填了一个超出范围的值,这会导致 CPU 软限在BE修改失败。如果在 CGroup v1 的环境上如果按照CGroup v2的默认值100设置,这可能导致这个workload group的优先级在该机器上是最低的。 ::: +## 为用户设置Workload Group +在把用户绑定到某个Workload Group之前,需要先确定该用户是否具有某个 Workload Group 的权限。 +可以使用这个用户查看 information_schema.workload_groups 系统表,返回的结果就是当前用户有权限使用的Workload Group。 +下面的查询结果代表当前用户可以使用 g1 与 normal Workload Group: + +```sql +SELECT name FROM information_schema.workload_groups; ++--------+ +| name | ++--------+ +| normal | +| g1 | ++--------+ +``` + +如果无法看到 g1 Workload Group,可以使用ADMIN账户执行 GRANT 语句为用户授权。例如: +``` +"GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO 'user_1'@'%';" +``` +这个语句的含义是把名为 g1 的 Workload Group的使用权限授予给名为 user_1 的账户。 +更多授权操作可以参考[grant 语句](../../sql-manual/sql-statements/Account-Management-Statements/GRANT)。 + +**两种绑定方式** +1. 通过设置 user property 将 user 默认绑定到 workload group,默认为`normal`,需要注意的这里的value不能填空,否则语句会执行失败,如果不知道要设置哪些group,可以设置为`normal`,`normal`为全局默认的group。 +``` +set property 'default_workload_group' = 'g1'; +``` +执行完该语句后,当前用户的查询将默认使用'g1'。 + + +2. 通过 session 变量指定 workload group, 默认为空: +``` +set workload_group = 'g1'; +``` +当同时使用了两种方式时为用户指定了Workload Group,session 变量的优先级要高于 user property 。 + ## 查看Workload Group 1. 通过show语句查看 ``` @@ -221,42 +248,6 @@ Query OK, 0 rows affected (0.01 sec) 可以参考:[DROP-WORKLOAD-GROUP](../../sql-manual/sql-statements/Data-Definition-Statements/Drop/DROP-WORKLOAD-GROUP)。 -## 为用户设置Workload Group -在把用户绑定到某个Workload Group之前,需要先确定该用户是否具有某个 Workload Group 的权限。 -可以使用这个用户查看 information_schema.workload_groups 系统表,返回的结果就是当前用户有权限使用的Workload Group。 -下面的查询结果代表当前用户可以使用 g1 与 normal Workload Group: - -```sql -SELECT name FROM information_schema.workload_groups; -+--------+ -| name | -+--------+ -| normal | -| g1 | -+--------+ -``` - -如果无法看到 g1 Workload Group,可以使用ADMIN账户执行 GRANT 语句为用户授权。例如: -``` -"GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO 'user_1'@'%';" -``` -这个语句的含义是把名为 g1 的 Workload Group的使用权限授予给名为 user_1 的账户。 -更多授权操作可以参考[grant 语句](../../sql-manual/sql-statements/Account-Management-Statements/GRANT)。 - -**两种绑定方式** -1. 通过设置 user property 将 user 默认绑定到 workload group,默认为`normal`,需要注意的这里的value不能填空,否则语句会执行失败,如果不知道要设置哪些group,可以设置为`normal`,`normal`为全局默认的group。 -``` -set property 'default_workload_group' = 'g1'; -``` -执行完该语句后,当前用户的查询将默认使用'g1'。 - - -2. 通过 session 变量指定 workload group, 默认为空: -``` -set workload_group = 'g1'; -``` -当同时使用了两种方式时为用户指定了Workload Group,session 变量的优先级要高于 user property 。 - ## CPU 软硬限模式切换的说明 目前 Doris 暂不支持同时运行 CPU 的软限和硬限,一个 Doris 集群在任意时刻只能是 CPU 软限或者 CPU 硬限。 用户可以在两种模式之间进行切换,切换方法如下: --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org