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 ca123a2e6f5 Fix cg (#1619)
ca123a2e6f5 is described below
commit ca123a2e6f591a1e160c84c80dadfe111befe150
Author: yiguolei <[email protected]>
AuthorDate: Thu Dec 26 08:27:40 2024 +0800
Fix cg (#1619)
## Versions
- [x] dev
- [ ] 3.0
- [ ] 2.1
- [ ] 2.0
## Languages
- [x] Chinese
- [ ] English
## Docs Checklist
- [ ] Checked by AI
- [ ] Test Cases Built
---------
Co-authored-by: yiguolei <[email protected]>
---
.../workload-management/compute-group.md | 7 --
.../admin-manual/workload-management/kill-query.md | 90 ++++++++++---------
.../workload-management/sql-blocking.md | 11 ++-
.../workload-management/workload-group.md | 100 ++++++++++-----------
.../workload-management-summary.md | 4 +-
.../admin-manual/workload-management/kill-query.md | 90 ++++++++++---------
.../workload-management-summary.md | 4 +-
.../workload-management/compute-group.md | 7 --
.../admin-manual/workload-management/kill-query.md | 90 ++++++++++---------
.../workload-management-summary.md | 6 +-
10 files changed, 208 insertions(+), 201 deletions(-)
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md
index f837e3d2f56..0a85fed5a49 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md
@@ -35,13 +35,6 @@ under the License.
- 更灵活,在存算分离架构下,BE 本地的数据都是缓存,所以增加Compute Group 时不需要做笨重的数据迁移过程,新的Compute Group
只需在查询时缓存预热即可;
- 隔离更彻底,数据的多副本存储由共享的存储层解决,所以任何Compute Group内的BE 宕机不会像Resource Group 那样导致导入失败。
-
-本文档介绍如何使用计算组,其中涉及的操作包括:
-
-- 查看所有计算组
-- 计算组授权
-- 在用户级别绑定计算组 (`default_compute_group`) 以达到用户级别的隔离效果
-
:::caution 注意
3.0.2 之前的版本中叫做计算集群(Compute Cluster)。
:::
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md
index 003ad954789..6b433e20dfc 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md
@@ -26,25 +26,27 @@ under the License.
## 获取查询列表
- 语法:
- ```sql
- SHOW PROCESSLIST;
- ```
- 可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如:
-
- ```sql
- SHOW PROCESSLIST;
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- | CurrentConnected | Id | User | Host | LoginTime
| Catalog | Db | Command | Time | State | QueryId
| Info
|
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- | Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29
16:49:47 | internal | test | Query | 0 | OK |
e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST
|
- | | 50 | root | 192.168.xx.xx:52837 | 2023-12-29
16:51:34 | internal | | Sleep | 1837 | EOF |
deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation
|
- | | 51 | root | 192.168.xx.xx:52843 | 2023-12-29
16:51:35 | internal | | Sleep | 907 | EOF |
437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3
- Metadata */ SHOW STATUS |
- | | 55 | root | 192.168.xx.xx:55533 | 2023-12-29
17:09:32 | internal | test | Sleep | 271 | EOF |
f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3
- SQLEditor <Console> */ SELECT DATABASE() |
- | | 47 | root | 10.16.xx.xx:35678 | 2023-12-29
16:21:56 | internal | test | Sleep | 3528 | EOF |
f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test
|
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- 5 rows in set (0.00 sec)
- ```
+语法:
+
+```sql
+SHOW PROCESSLIST;
+```
+
+可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如:
+
+```sql
+SHOW PROCESSLIST;
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+| CurrentConnected | Id | User | Host | LoginTime |
Catalog | Db | Command | Time | State | QueryId
| Info
|
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+| Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 |
internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 |
SHOW PROCESSLIST
|
+| | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 |
internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb |
SELECT @@session.transaction_isolation
|
+| | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 |
internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 |
/* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS
|
+| | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 |
internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c |
/* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT
DATABASE() |
+| | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 |
internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 |
select * from test
|
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+5 rows in set (0.00 sec)
+```
- Id 是连接的唯一标识,也可以称为processlist_id;
@@ -54,30 +56,34 @@ under the License.
## Kill 查询
- 语法:
-
- ```sql
- KILL QUERY query_id | processlist_id
- ```
- 用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如:
-
- ```sql
- kill query 55;
- Query OK, 0 rows affected (0.01 sec)
- ```
- 表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。
-
- ```sql
- kill query 'f02603dc163a4da3-beebbb5d1ced760c';
- Query OK, 0 rows affected (0.01 sec)
- ```
- 表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c
的Query,与之前的processlist_id=55 实际是同一个Query。
+语法:
+
+```sql
+KILL QUERY query_id | processlist_id
+```
+
+用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如:
+
+```sql
+kill query 55;
+Query OK, 0 rows affected (0.01 sec)
+```
+
+表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。
+
+```sql
+kill query 'f02603dc163a4da3-beebbb5d1ced760c';
+Query OK, 0 rows affected (0.01 sec)
+```
+
+表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55
实际是同一个Query。
## Kill 连接
- 语法:
+语法:
+
+```sql
+KILL CONNECTION processlist_id
+```
- ```sql
- KILL CONNECTION processlist_id
- ```
- 表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。
\ No newline at end of file
+表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。
\ No newline at end of file
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
index 7d8fd61983e..9d9cafffa08 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
@@ -214,12 +214,15 @@ A:可以。修改阻止规则,将其属性中的"enable"改为"false"即可
A:阻止规则的正则表达式使用 java 的正则表达式规范。常用表达式可以参考 SQL 语法手册。完整的手册可以参考
https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
## Workload Policy
-Workload Policy主要用于对运行时状态不符合预期的查询进行熔断,避免部分大查询占用过多资源从而影响集群的稳定性,常用的运行时监控指标如下:
-* 查询时间
-* 查询在单BE上的扫描行数/扫描字节数
+
+SQL Block Rule
是一种在规划时进行熔断的配置,但是由于规划中代价的计算可能不准确(尤其是针对一些非常复杂的查询时,更加难以准确估算),所以会导致规则不生效或者误判。Workload
Policy
弥补了这个缺陷,它可以在查询运行时对一些指标进行实时的监测,对运行时状态不符合预期的查询进行熔断,避免不符合预期的大查询占用过多资源从而影响集群的稳定性,常用的运行时监控指标如下:
+
+* 查询执行时间
+* 查询在单BE上的扫描行数
+* 查询在单BE上的扫描行数扫描字节数
* 查询的在单BE上的内存使用
-### 熔断策略范围
+### 版本说明
自 Doris 2.1 版本起,可以通过 Workload Policy 可以实现大查询的熔断。
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 2e3914b64ff..611860526c9 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
@@ -26,56 +26,16 @@ under the License.
## 原理
-Workload
Group的原理如下图所示,通过对BE内的资源(CPU,IO,Memory)进行细粒度的划分或者限制,达到资源隔离的目的。目前支持的能力包括:
+Workload
Group的原理如下图所示,它通过对BE内的资源(CPU,IO,Memory)进行细粒度的划分或者限制,达到资源隔离的目的。目前支持的能力包括:
-* 管理CPU资源,支持CPU硬限和CPU软限
-* 管理内存资源,支持内存硬限和内存软限
-* 管理IO资源,包括读本地文件和远程文件产生的IO
-* 控制集群中的最大查询数量
+* 管理CPU资源,支持CPU硬限和CPU软限;
+* 管理内存资源,支持内存硬限和内存软限;
+* 管理IO资源,包括读本地文件和远程文件产生的IO;
+* 控制集群中的最大查询数量。

-## Workload Group属性
-* cpu_share: 可选,默认值为 -1。有效值的取值范围是正整数。用于设置 workload group 获取 CPU 时间的多少,可以实现 CPU
资源软隔离。cpu_share 是相对值,表示正在运行的 workload group 可获取 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,含义为不限制内存使用。有效值的取值范围 1%~100%,用于设置 workload group 可以使用
be 内存的百分比。Workload Group 可用的最大内存,所有 group 的累加值不可以超过 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%。
-
-* enable_memory_overcommit: 可选,用于开启 workload group 内存软隔离,默认为 true。如果设置为
false,则该 workload group 为内存硬隔离,系统检测到 workload group 内存使用超出限制后将立即 cancel
组内内存占用最大的若干个任务,以释放超出的内存;如果设置为 true,则该 workload group 为内存软隔离,如果系统有空闲内存资源则该
workload group 在超出 memory_limit 的限制后可继续使用系统内存,在系统总内存紧张时会 cancel
组内内存占用最大的若干个任务,释放部分超出的内存以缓解系统内存压力。建议在有 workload group 开启该配置时,所有 workload group
的 memory_limit 总和低于 100%,剩余部分用于 workload group 内存超发。
-
-* cpu_hard_limit:可选,默认值 -1,含义为不限制CPU上限。取值范围 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:可选,最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到该值时,新来的查询会进入排队的逻辑。
-
-* max_queue_size:可选,查询排队队列的长度,当排队队列已满时,新来的查询会被拒绝。默认值为 0,含义是不排队。
-
-* queue_timeout:可选,查询在排队队列中的超时时间,单位为毫秒,如果查询在队列中的排队时间超过这个值,那么就会直接抛出异常给客户端。默认值为
0,含义是不排队。
-
-* scan_thread_num:可选,当前 workload group 用于 scan 的线程个数,默认值为 -1,含义是不生效,此时以 be
配置中的 scan 线程数为准。取值为大于 0 的整数。
-
-*
max_remote_scan_thread_num:可选,读外部数据源的scan线程池的最大线程数,默认值为-1,当该值为-1时,实际的线程数由BE自行决定,通常和核数相关。
-
-*
min_remote_scan_thread_num:可选,读外部数据源的scan线程池的最小线程数,默认值为-1,当该值为-1时,实际的线程数由BE自行决定,通常和核数相关。
-
-* tag:可选,默认为空,为Workload Group指定标签,相同标签的Workload
Group资源累加值不能超过100%,如果期望指定多个值,可以使用英文逗号分隔。
-
-*
read_bytes_per_second:可选,含义为读Doris内表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。需要注意的是这个值并不绑定磁盘,而是绑定文件夹。
-
比如为Doris配置了2个文件夹用于存放内表数据,那么每个文件夹的最大读IO不会超过该值,如果这2个文件夹都配置到同一块盘上,最大吞吐控制就会变成2倍的read_bytes_per_second。落盘的文件目录也受该值的约束。
-
-* remote_read_bytes_per_second:可选,含义为读Doris外表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。
-
-:::tip
-
-1. 目前暂不支持 CPU 的软限和硬限的同时使用,一个集群某一时刻只能是软限或者硬限,下文中会描述切换方法。
-
-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的优先级在该机器上是最低的。
- :::
-
-
## 版本说明
- 自 Doris 2.0 版本开始提供 Workload Group 功能。在 Doris 2.0 版本中,Workload Group 功能不依赖于
CGroup,而 Doris 2.1 版本中需要依赖 CGroup。
@@ -191,6 +151,46 @@ Query OK, 0 rows affected (0.03 sec)
此时配置的 CPU 限制为软限。自 2.1 版本起,系统会自动创建一个名为```normal```的 group,不可删除。
+### Workload Group属性
+
+* cpu_share: 可选,默认值为 -1。有效值的取值范围是正整数。用于设置 workload group 获取 CPU 时间的多少,可以实现 CPU
资源软隔离。cpu_share 是相对值,表示正在运行的 workload group 可获取 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,含义为不限制内存使用。有效值的取值范围 1%~100%,用于设置 workload group 可以使用
be 内存的百分比。Workload Group 可用的最大内存,所有 group 的累加值不可以超过 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%。
+
+* enable_memory_overcommit: 可选,用于开启 workload group 内存软隔离,默认为 true。如果设置为
false,则该 workload group 为内存硬隔离,系统检测到 workload group 内存使用超出限制后将立即 cancel
组内内存占用最大的若干个任务,以释放超出的内存;如果设置为 true,则该 workload group 为内存软隔离,如果系统有空闲内存资源则该
workload group 在超出 memory_limit 的限制后可继续使用系统内存,在系统总内存紧张时会 cancel
组内内存占用最大的若干个任务,释放部分超出的内存以缓解系统内存压力。建议在有 workload group 开启该配置时,所有 workload group
的 memory_limit 总和低于 100%,剩余部分用于 workload group 内存超发。
+
+* cpu_hard_limit:可选,默认值 -1,含义为不限制CPU上限。取值范围 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:可选,最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到该值时,新来的查询会进入排队的逻辑。
+
+* max_queue_size:可选,查询排队队列的长度,当排队队列已满时,新来的查询会被拒绝。默认值为 0,含义是不排队。
+
+* queue_timeout:可选,查询在排队队列中的超时时间,单位为毫秒,如果查询在队列中的排队时间超过这个值,那么就会直接抛出异常给客户端。默认值为
0,含义是不排队。
+
+* scan_thread_num:可选,当前 workload group 用于 scan 的线程个数,默认值为 -1,含义是不生效,此时以 be
配置中的 scan 线程数为准。取值为大于 0 的整数。
+
+*
max_remote_scan_thread_num:可选,读外部数据源的scan线程池的最大线程数,默认值为-1,当该值为-1时,实际的线程数由BE自行决定,通常和核数相关。
+
+*
min_remote_scan_thread_num:可选,读外部数据源的scan线程池的最小线程数,默认值为-1,当该值为-1时,实际的线程数由BE自行决定,通常和核数相关。
+
+* tag:可选,默认为空,为Workload Group指定标签,相同标签的Workload
Group资源累加值不能超过100%,如果期望指定多个值,可以使用英文逗号分隔。
+
+*
read_bytes_per_second:可选,含义为读Doris内表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。需要注意的是这个值并不绑定磁盘,而是绑定文件夹。
+
比如为Doris配置了2个文件夹用于存放内表数据,那么每个文件夹的最大读IO不会超过该值,如果这2个文件夹都配置到同一块盘上,最大吞吐控制就会变成2倍的read_bytes_per_second。落盘的文件目录也受该值的约束。
+
+* remote_read_bytes_per_second:可选,含义为读Doris外表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。
+
+:::tip
+
+1. 目前暂不支持 CPU 的软限和硬限的同时使用,一个集群某一时刻只能是软限或者硬限,下文中会描述切换方法。
+
+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的优先级在该机器上是最低的。
+ :::
+
## 查看Workload Group
1. 通过show语句查看
```
@@ -234,7 +234,7 @@ 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之前,需要先确定该用户是否具有某个 Workload Group 的权限。
可以使用这个用户查看 information_schema.workload_groups 系统表,返回的结果就是当前用户有权限使用的Workload
Group。
下面的查询结果代表当前用户可以使用 g1 与 normal Workload Group:
@@ -317,7 +317,7 @@ set bypass_workload_group = true;
```
## 效果测试
-### 测试内存硬限
+### 内存硬限
Adhoc 类查询通常输入的 SQL 不确定,使用的内存资源也不确定,因此存在少数查询占用很大内存的风险。
可以对这类负载可以划分到独立的分组,通过 Workload Group 对内存的硬限的功能,避免突发性的大查询占满所有内存,导致其他查询没有可用内存或者
OOM。
当这个 Workload Group 的内存使用超过配置的硬限值时,会通过杀死查询的方式释放内存,避免进程内存被打满。
@@ -435,7 +435,7 @@ Adhoc 类查询通常输入的 SQL 不确定,使用的内存资源也不确定
-### CPU 硬限测试
+### CPU 硬限
Doris 的负载大体可以分为三类:
1. 核心报表查询,通常给公司高层查看报表使用,负载不一定很高,但是对可用性要求较高,这类查询可以划分到一个分组,配置较高优先级的软限,保证 CPU
资源不够时可以获得更多的 CPU 资源。
2. Adhoc 类查询,这类查询通常偏探索分析,SQL 比较随机,具体的资源用量也比较未知,优先级通常不高。因此可以使用 CPU
硬限进行管理,并配置较低的值,避免占用过多 CPU 资源降低集群可用性。
@@ -491,7 +491,7 @@ Workload Group 支持 CPU 的软限和硬限,目前比较推荐在线上环境
2. 目前 FE 向 BE 同步 Workload Group 元数据的时间间隔为 30 秒,因此对于 Workload Group 的变更最大需要等待
30 秒才能生效。
-### 测试本地 IO 硬限
+### 本地IO 硬限
OLAP 系统在做 ETL 或者大的 Adhoc 查询时,需要读取大量的数据,Doris
为了加速数据分析过程,内部会使用多线程并行的方式对多个磁盘文件扫描,会产生巨大的磁盘 IO,就会对其他的查询(比如报表分析)产生影响。
可以通过 Workload Group 对离线的 ETL 数据处理和在线的报表查询做分组,限制离线数据处理 IO 带宽的方式,降低它对在线报表分析的影响。
@@ -608,7 +608,7 @@ OLAP 系统在做 ETL 或者大的 Adhoc 查询时,需要读取大量的数据
2. 由于操作系统和 Doris 的 Page Cache 的存在,通过 linux 的 IO 监控脚本看到的 IO 通常要比系统表看到的要小。
-### 测试远程 IO 限制
+### 远程 IO 硬限
BrokerLoad 和 S3Load 是常用的大批量数据导入方式,用户可以把数据先上传到 HDFS 或者 S3,然后通过 Brokerload 和
S3Load 对数据进行并行导入。Doris 为了加快导入速度,会使用多线程并行的方式从 HDFS/S3 拉取数据,此时会对 HDFS/S3
产生巨大的压力,会导致 HDFS/S3 上运行的别的作业不稳定。
可以通过 Workload Group 远程 IO 的限制功能来限制导入过程中对 HDFS/S3 的带宽,降低对其他业务的影响。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md
index 08fab6f15fb..76e90f362da 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md
@@ -24,7 +24,7 @@ specific language governing permissions and limitations
under the License.
-->
-负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。Doris
的负载管理具备以下功能:
+负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。它具备以下功能:
- 负载隔离: 通过划分多个Group,并且为每个Group都设置一定的资源(CPU, Memory,
IO)限制,确保多个用户之间、同一用户不同的任务(读写操作)之间互不干扰;
@@ -52,7 +52,7 @@ Doris 可以通过以下3种方式将资源分组:
## 软限与硬限
--
硬限:硬限是指资源能够使用的绝对上线,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能;
+-
硬限:硬限是指资源能够使用的绝对上限,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能;
-
软限:软限是一个可以被超越的资源限制,通常表示资源推荐使用的上限。在系统不繁忙时,租户申请的资源超过了软限,可以借用其他资源组的资源。在系统繁忙存在资源争用时,租户申请资源超过了软限,将无法继续获得资源。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md
index 003ad954789..6b433e20dfc 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md
@@ -26,25 +26,27 @@ under the License.
## 获取查询列表
- 语法:
- ```sql
- SHOW PROCESSLIST;
- ```
- 可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如:
-
- ```sql
- SHOW PROCESSLIST;
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- | CurrentConnected | Id | User | Host | LoginTime
| Catalog | Db | Command | Time | State | QueryId
| Info
|
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- | Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29
16:49:47 | internal | test | Query | 0 | OK |
e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST
|
- | | 50 | root | 192.168.xx.xx:52837 | 2023-12-29
16:51:34 | internal | | Sleep | 1837 | EOF |
deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation
|
- | | 51 | root | 192.168.xx.xx:52843 | 2023-12-29
16:51:35 | internal | | Sleep | 907 | EOF |
437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3
- Metadata */ SHOW STATUS |
- | | 55 | root | 192.168.xx.xx:55533 | 2023-12-29
17:09:32 | internal | test | Sleep | 271 | EOF |
f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3
- SQLEditor <Console> */ SELECT DATABASE() |
- | | 47 | root | 10.16.xx.xx:35678 | 2023-12-29
16:21:56 | internal | test | Sleep | 3528 | EOF |
f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test
|
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- 5 rows in set (0.00 sec)
- ```
+语法:
+
+```sql
+SHOW PROCESSLIST;
+```
+
+可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如:
+
+```sql
+SHOW PROCESSLIST;
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+| CurrentConnected | Id | User | Host | LoginTime |
Catalog | Db | Command | Time | State | QueryId
| Info
|
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+| Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 |
internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 |
SHOW PROCESSLIST
|
+| | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 |
internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb |
SELECT @@session.transaction_isolation
|
+| | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 |
internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 |
/* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS
|
+| | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 |
internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c |
/* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT
DATABASE() |
+| | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 |
internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 |
select * from test
|
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+5 rows in set (0.00 sec)
+```
- Id 是连接的唯一标识,也可以称为processlist_id;
@@ -54,30 +56,34 @@ under the License.
## Kill 查询
- 语法:
-
- ```sql
- KILL QUERY query_id | processlist_id
- ```
- 用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如:
-
- ```sql
- kill query 55;
- Query OK, 0 rows affected (0.01 sec)
- ```
- 表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。
-
- ```sql
- kill query 'f02603dc163a4da3-beebbb5d1ced760c';
- Query OK, 0 rows affected (0.01 sec)
- ```
- 表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c
的Query,与之前的processlist_id=55 实际是同一个Query。
+语法:
+
+```sql
+KILL QUERY query_id | processlist_id
+```
+
+用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如:
+
+```sql
+kill query 55;
+Query OK, 0 rows affected (0.01 sec)
+```
+
+表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。
+
+```sql
+kill query 'f02603dc163a4da3-beebbb5d1ced760c';
+Query OK, 0 rows affected (0.01 sec)
+```
+
+表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55
实际是同一个Query。
## Kill 连接
- 语法:
+语法:
+
+```sql
+KILL CONNECTION processlist_id
+```
- ```sql
- KILL CONNECTION processlist_id
- ```
- 表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。
\ No newline at end of file
+表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。
\ No newline at end of file
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md
index 19fd9a85b1c..c0a5e0ce15a 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md
@@ -24,7 +24,7 @@ specific language governing permissions and limitations
under the License.
-->
-负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。Doris
的负载管理具备以下功能:
+负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。它具备以下功能:
- 负载隔离: 通过划分多个Group,并且为每个Group都设置一定的资源(CPU, Memory,
IO)限制,确保多个用户之间、同一用户不同的任务(读写操作)之间互不干扰;
@@ -49,7 +49,7 @@ Doris 可以通过以下2种方式将资源分组:
## 软限与硬限
--
硬限:硬限是指资源能够使用的绝对上线,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能;
+-
硬限:硬限是指资源能够使用的绝对上限,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能;
-
软限:软限是一个可以被超越的资源限制,通常表示资源推荐使用的上限。在系统不繁忙时,租户申请的资源超过了软限,可以借用其他资源组的资源。在系统繁忙存在资源争用时,租户申请资源超过了软限,将无法继续获得资源。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md
index f837e3d2f56..0a85fed5a49 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md
@@ -35,13 +35,6 @@ under the License.
- 更灵活,在存算分离架构下,BE 本地的数据都是缓存,所以增加Compute Group 时不需要做笨重的数据迁移过程,新的Compute Group
只需在查询时缓存预热即可;
- 隔离更彻底,数据的多副本存储由共享的存储层解决,所以任何Compute Group内的BE 宕机不会像Resource Group 那样导致导入失败。
-
-本文档介绍如何使用计算组,其中涉及的操作包括:
-
-- 查看所有计算组
-- 计算组授权
-- 在用户级别绑定计算组 (`default_compute_group`) 以达到用户级别的隔离效果
-
:::caution 注意
3.0.2 之前的版本中叫做计算集群(Compute Cluster)。
:::
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md
index 003ad954789..6b433e20dfc 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md
@@ -26,25 +26,27 @@ under the License.
## 获取查询列表
- 语法:
- ```sql
- SHOW PROCESSLIST;
- ```
- 可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如:
-
- ```sql
- SHOW PROCESSLIST;
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- | CurrentConnected | Id | User | Host | LoginTime
| Catalog | Db | Command | Time | State | QueryId
| Info
|
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- | Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29
16:49:47 | internal | test | Query | 0 | OK |
e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST
|
- | | 50 | root | 192.168.xx.xx:52837 | 2023-12-29
16:51:34 | internal | | Sleep | 1837 | EOF |
deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation
|
- | | 51 | root | 192.168.xx.xx:52843 | 2023-12-29
16:51:35 | internal | | Sleep | 907 | EOF |
437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3
- Metadata */ SHOW STATUS |
- | | 55 | root | 192.168.xx.xx:55533 | 2023-12-29
17:09:32 | internal | test | Sleep | 271 | EOF |
f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3
- SQLEditor <Console> */ SELECT DATABASE() |
- | | 47 | root | 10.16.xx.xx:35678 | 2023-12-29
16:21:56 | internal | test | Sleep | 3528 | EOF |
f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test
|
-
+------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
- 5 rows in set (0.00 sec)
- ```
+语法:
+
+```sql
+SHOW PROCESSLIST;
+```
+
+可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如:
+
+```sql
+SHOW PROCESSLIST;
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+| CurrentConnected | Id | User | Host | LoginTime |
Catalog | Db | Command | Time | State | QueryId
| Info
|
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+| Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 |
internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 |
SHOW PROCESSLIST
|
+| | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 |
internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb |
SELECT @@session.transaction_isolation
|
+| | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 |
internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 |
/* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS
|
+| | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 |
internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c |
/* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT
DATABASE() |
+| | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 |
internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 |
select * from test
|
++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+
+5 rows in set (0.00 sec)
+```
- Id 是连接的唯一标识,也可以称为processlist_id;
@@ -54,30 +56,34 @@ under the License.
## Kill 查询
- 语法:
-
- ```sql
- KILL QUERY query_id | processlist_id
- ```
- 用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如:
-
- ```sql
- kill query 55;
- Query OK, 0 rows affected (0.01 sec)
- ```
- 表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。
-
- ```sql
- kill query 'f02603dc163a4da3-beebbb5d1ced760c';
- Query OK, 0 rows affected (0.01 sec)
- ```
- 表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c
的Query,与之前的processlist_id=55 实际是同一个Query。
+语法:
+
+```sql
+KILL QUERY query_id | processlist_id
+```
+
+用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如:
+
+```sql
+kill query 55;
+Query OK, 0 rows affected (0.01 sec)
+```
+
+表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。
+
+```sql
+kill query 'f02603dc163a4da3-beebbb5d1ced760c';
+Query OK, 0 rows affected (0.01 sec)
+```
+
+表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55
实际是同一个Query。
## Kill 连接
- 语法:
+语法:
+
+```sql
+KILL CONNECTION processlist_id
+```
- ```sql
- KILL CONNECTION processlist_id
- ```
- 表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。
\ No newline at end of file
+表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。
\ No newline at end of file
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md
index 983e2c590a7..76e90f362da 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md
@@ -24,7 +24,7 @@ specific language governing permissions and limitations
under the License.
-->
-负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。Doris
的负载管理具备以下功能:
+负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。它具备以下功能:
- 负载隔离: 通过划分多个Group,并且为每个Group都设置一定的资源(CPU, Memory,
IO)限制,确保多个用户之间、同一用户不同的任务(读写操作)之间互不干扰;
@@ -34,7 +34,7 @@ under the License.
## 资源划分方式
-在 Doris
中,用户可以根据具体的业务需求,将系统资源划分为不同的Group,并确保各Group之间的资源相互独立,互不干扰。通过将用户绑定到不同的Group,可以实现对不同用户间的资源精细化管理与控制。在Group划分方面,Doris
提供了三种主要方式:
+Doris 可以通过以下3种方式将资源分组:
- Resource Group: 以 BE 节点为最小粒度,通过设置标签(tag)的方式,划分出多个资源组;
@@ -52,7 +52,7 @@ under the License.
## 软限与硬限
--
硬限:硬限是指资源能够使用的绝对上线,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能;
+-
硬限:硬限是指资源能够使用的绝对上限,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能;
-
软限:软限是一个可以被超越的资源限制,通常表示资源推荐使用的上限。在系统不繁忙时,租户申请的资源超过了软限,可以借用其他资源组的资源。在系统繁忙存在资源争用时,租户申请资源超过了软限,将无法继续获得资源。
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]