cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置
内容提要
本文介绍了华为云GaussDB(DWS)中cgroup、资源池和用户之间的关系,展示了相关对象的创建过程,详细介绍了cgroup的分布情况和资源池的限制,讨论了默认资源池和多租户场景下的用户分布情况。
延伸解读
cgroup层级与资源池的对应关系
文章显示,资源池通过control_group参数绑定到具体的cgroup路径,如ClassN1:wn1。cgroup分为Class和Workload两级,Class为顶层控制组,Workload为其子组。创建资源池时需确保control_group路径存在,且同一Class下不能创建多个组资源池(如尝试创建respool_grp_3绑定ClassG1会报错)。这种层级设计使得资源池能够按树形结构分配CPU和内存资源。
配额与限额的区别及影响
系统资源限制分为配额和限额。配额允许组内资源使用超过设定比例,仅在资源繁忙时严格限制;限额则直接限制CPU核数范围。默认使用配额方式。例如wn1:2配额为20%,正常时可超用,但CPU使用率100%时则按20%限制。理解这一区别有助于合理设置资源池参数,避免业务高峰时资源被过度限制。
默认资源池的行为与运维队列
开启资源管理后,系统自动创建default_pool,未指定资源池的用户和会话默认关联到此池。default_pool绑定DefaultClass:Medium控制组,并发和内存默认不管控,但受全局max_active_statements限制。管理员执行运维操作时,可通过SET session_respool='root'将资源池切换至运维队列,使作业不受资源管理控制。
多租户场景下的用户与资源池层级
在多租户场景中,业务用户必须挂载到组用户下,且用户层级需与资源池层级一一对应。业务用户共享组用户的资源,组用户共享其所在资源池的资源。例如user_g1_job_1和user_g1_job_2属于组用户user_grp_1,分别关联respool_g1_job_1和respool_g1_job_2,这些资源池的父资源池为respool_grp_1。这种设计实现了资源的层级隔离与共享。
Q&A
什么是cgroup,它在GaussDB(DWS)中的作用是什么?
cgroup是GaussDB(DWS)资源负载管理的核心,主要用于配置资源池和管理资源分配。
如何创建资源池和用户?
可以通过SQL命令创建资源池和用户,例如使用"create resource pool"和"CREATE USER"命令。
默认资源池是什么,它的特点是什么?
默认资源池是系统自动创建的资源池,未指定资源池的用户会关联到该池,默认不限制并发和内存。
在多租户场景中,用户是如何共享资源的?
在多租户场景中,业务用户共享组用户的资源,且业务用户必须挂在到组用户下,层级需与资源池层级对应。
资源池的内存资源是如何计算的?
资源池的内存资源计算需要按照层级进行比例计算,以确保资源的合理分配。
配额和限额有什么区别?
配额允许资源使用超过限制,而限额则严格限制CPU使用的核数,二者在资源管理中有不同的控制方式。