tuhaihe commented on code in PR #299:
URL: https://github.com/apache/cloudberry-site/pull/299#discussion_r2207113761


##########
docs/performance/manage-resources-using-resource-queues.md:
##########
@@ -0,0 +1,448 @@
+---
+title: Resource Queues
+---
+
+# Resource Queues
+
+Use Apache Cloudberry resource queues to prioritize and allocate resources to 
queries according to business requirements and to prevent queries from starting 
when resources are unavailable.
+
+Resource queues are one tool to manage the degree of concurrency in a Apache 
Cloudberry system. Resource queues are database objects that you create with 
the `CREATE RESOURCE QUEUE` SQL statement. You can use them to manage the 
number of active queries that may run concurrently, the amount of memory each 
type of query is allocated, and the relative priority of queries. Resource 
queues can also guard against queries that would consume too many resources and 
degrade overall system performance.
+
+Each database role is associated with a single resource queue; multiple roles 
can share the same resource queue. Roles are assigned to resource queues using 
the `RESOURCE QUEUE` phrase of the `CREATE ROLE` or `ALTER ROLE` statements. If 
a resource queue is not specified, the role is associated with the default 
resource queue, `pg_default`.
+
+When the user submits a query for execution, the query is evaluated against 
the resource queue's limits. If the query does not cause the queue to exceed 
its resource limits, then that query will run immediately. If the query causes 
the queue to exceed its limits (for example, if the maximum number of active 
statement slots are currently in use), then the query must wait until queue 
resources are free before it can run. Queries are evaluated on a first in, 
first out basis. If query prioritization is enabled, the active workload on the 
system is periodically assessed and processing resources are reallocated 
according to query priority (see [How Priorities Work](#how-priorities-work)). 
Roles with the `SUPERUSER` attribute are exempt from resource queue limits. 
Superuser queries always run immediately regardless of limits imposed by their 
assigned resource queue.
+
+![Resource Queue Process](../media/resource-queues-1.png)
+
+Resource queues define classes of queries with similar resource requirements. 
Administrators should create resource queues for the various types of workloads 
in their organization. For example, you could create resource queues for the 
following classes of queries, corresponding to different service level 
agreements:
+
+- ETL queries
+- Reporting queries
+- Executive queries
+
+A resource queue has the following characteristics:
+
+`MEMORY_LIMIT`: The amount of memory used by all the queries in the queue (per 
segment). For example, setting `MEMORY_LIMIT` to 2GB on the ETL queue allows 
ETL queries to use up to 2GB of memory in each segment.
+
+`ACTIVE_STATEMENTS`: The number of *slots* for a queue; the maximum 
concurrency level for a queue. When all slots are used, new queries must wait. 
Each query uses an equal amount of memory by default.
+
+For example, the `pg_default` resource queue has `ACTIVE_STATEMENTS` = 20.
+
+`PRIORITY`: The relative CPU usage for queries. This may be one of the 
following levels: `LOW`, `MEDIUM`, `HIGH`, `MAX`. The default level is 
`MEDIUM`. The query prioritization mechanism monitors the CPU usage of all the 
queries running in the system, and adjusts the CPU usage for each to conform to 
its priority level. For example, you could set `MAX` priority to the 
`executive` resource queue and `MEDIUM` to other queues to ensure that 
executive queries receive a greater share of CPU.
+
+`MAX_COST`: Query plan cost limit.
+
+The Apache Cloudberry optimizer assigns a numeric cost to each query. If the 
cost exceeds the `MAX_COST` value set for the resource queue, the query is 
rejected as too expensive.

Review Comment:
   That would be better to make these as an unordered list for a better visual.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cloudberry.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cloudberry.apache.org
For additional commands, e-mail: commits-h...@cloudberry.apache.org

Reply via email to