灌水唠嗑区
其他
问答
创建资源池时,参数cpu_percent=20的具体含义是什么?它是绝对限制还是相对权重?
发表于2026-03-22 11:24:5811次浏览6个评论
创建资源池时,参数cpu_percent=20的具体含义是什么?它是绝对限制还是相对权重?
悬赏:1100吉币
回答被发帖人采纳后可获得赏金
评论
登录后才可以发表评论
柒柒天晴发表于 4个月前
最佳回答
GBase用户28017发表于 4个月前
优秀
nodddddd发表于 4个月前
是绝对限制
经纬发表于 4个月前
学习了
曾浩轩发表于 4个月前
山佳大佬
经纬发表于 4个月前
在 GBase 8a 中,cpu_percent=20 的含义完全取决于你创建的是静态资源池还是动态资源池:
一、一句话结论
静态资源池(type static):cpu_percent=20 是绝对限制(硬上限),最多只能用 20% 的 CPU 总带宽。
动态资源池(type dynamic):cpu_percent=20 是相对权重(软比例),仅在 CPU 争抢时按权重分配。
二、详细解释(生产必懂)
1. 静态资源池:cpu_percent=20 = 绝对限制(硬上限)
含义:该资源池最多只能使用整个节点 20% 的 CPU 时间,无论其他资源池是否空闲。
底层机制:对应 Linux cgroup 的 cpu.cfs_quota_us,按总 CPU 能力做带宽硬限制。
plaintext
cpu.cfs_quota_us = (总CPU核数 × 调度周期) × cpu_percent
效果:
即使系统 CPU 空闲 80%,这个池也不能超过 20%。
适合需要严格隔离、防止资源抢占的场景(如核心业务、批处理)。
2. 动态资源池:cpu_percent=20 = 相对权重(软比例)
含义:20 是权重值,不是百分比上限。仅当多个动态池争抢 CPU 时,按权重比例分配。
底层机制:对应 Linux cgroup 的 cpu.shares,计算公式:
plaintext
cpu.shares = 1024 × cpu_percent
权重越大,分到的 CPU 越多。
效果:
无争抢时:可用满所有空闲 CPU,不受 20% 限制。
有争抢时:按权重比例分配。
例:池 A(20)、池 B(40)、池 C(40)争抢 → 比例为 1:2:2。
适合:弹性、共享式资源调度,提高整体利用率。
三、创建示例(直接复制可用)
静态池(硬限制 20%)
sql
CREATE RESOURCE pool static_pool_20 (
cpu_percent=20,
max_memory=4096
) TYPE static;
动态池(权重 20,弹性)
sql
CREATE RESOURCE pool dynamic_pool_20 (
cpu_percent=20,
max_memory=4096
) TYPE dynamic BASE ON static_pool_20;
四、生产选型建议
用静态池:需要严格隔离、防止被其他任务抢占(如核心报表、实时业务)。
用动态池:追求高利用率、弹性调度(如非核心查询、临时任务)。
一、一句话结论
静态资源池(type static):cpu_percent=20 是绝对限制(硬上限),最多只能用 20% 的 CPU 总带宽。
动态资源池(type dynamic):cpu_percent=20 是相对权重(软比例),仅在 CPU 争抢时按权重分配。
二、详细解释(生产必懂)
1. 静态资源池:cpu_percent=20 = 绝对限制(硬上限)
含义:该资源池最多只能使用整个节点 20% 的 CPU 时间,无论其他资源池是否空闲。
底层机制:对应 Linux cgroup 的 cpu.cfs_quota_us,按总 CPU 能力做带宽硬限制。
plaintext
cpu.cfs_quota_us = (总CPU核数 × 调度周期) × cpu_percent
效果:
即使系统 CPU 空闲 80%,这个池也不能超过 20%。
适合需要严格隔离、防止资源抢占的场景(如核心业务、批处理)。
2. 动态资源池:cpu_percent=20 = 相对权重(软比例)
含义:20 是权重值,不是百分比上限。仅当多个动态池争抢 CPU 时,按权重比例分配。
底层机制:对应 Linux cgroup 的 cpu.shares,计算公式:
plaintext
cpu.shares = 1024 × cpu_percent
权重越大,分到的 CPU 越多。
效果:
无争抢时:可用满所有空闲 CPU,不受 20% 限制。
有争抢时:按权重比例分配。
例:池 A(20)、池 B(40)、池 C(40)争抢 → 比例为 1:2:2。
适合:弹性、共享式资源调度,提高整体利用率。
三、创建示例(直接复制可用)
静态池(硬限制 20%)
sql
CREATE RESOURCE pool static_pool_20 (
cpu_percent=20,
max_memory=4096
) TYPE static;
动态池(权重 20,弹性)
sql
CREATE RESOURCE pool dynamic_pool_20 (
cpu_percent=20,
max_memory=4096
) TYPE dynamic BASE ON static_pool_20;
四、生产选型建议
用静态池:需要严格隔离、防止被其他任务抢占(如核心报表、实时业务)。
用动态池:追求高利用率、弹性调度(如非核心查询、临时任务)。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526
在静态资源池中:是绝对限制
当在 CREATE RESOURCE POOL ... TYPE STATIC 语句中设置 cpu_percent=20 时,它表示一个硬性的、不可超出的CPU使用上限。
具体含义:该静态资源池内的所有进程总共最多只能使用整个物理CPU的20%。
实现机制:通过Linux cgroup的 cpu.cfs_period_us 和 cpu.cfs_quota_us 参数实现。
cfs_period_us 定义时间周期(如100ms)。
cfs_quota_us 定义在该周期内可使用的CPU时间。cpu_percent=20 意味着 cfs_quota_us 被设置为周期时长的20%。
限制特性:绝对不能超额使用。即使CPU空闲,该池内的任务也无法使用超过20%的CPU资源。
:
“* 静态资源池CPU限额通过:cgroup中cpu.cfs_period_us和cpu.cfs_quota_us实现,限制进程使用的资源上限,不能超额使用。”
在动态资源池中:是相对权重
当在 CREATE RESOURCE POOL ... TYPE DYNAMIC BASE ON 语句中设置 cpu_percent=20 时,它表示一个在CPU资源争抢时的相对份额或权重。
具体含义:当该动态资源池所属的静态资源池的CPU出现饱和争抢时,此动态池有权获得20%的CPU资源比例。如果CPU空闲,它可以超额使用。
实现机制:通过Linux cgroup的 cpu.shares 参数实现。shares 值是一个相对权重,用于在CPU饱和时按比例分配。
限制特性:弹性限制,仅在争抢时生效。
CPU空闲时:动态池中的任务可以使用超过20%的CPU。
CPU饱和时:触发资源隔离,各动态池按 cpu_percent 的比例分配CPU资源,最多只能使用其限额比例。
“* 动态资源池CPU限额通过:cgroup中cpu.share实现,cpu.share表示这个cgroups最少可以使用的CPU,决定了CPU争抢时的比例。CPU空闲时,可以使用超出限额的资源;CPU饱和时,触发资源隔离机制,最多只能使用限额的资源。”
当您为静态资源池设置 cpu_percent=20 时,您是在划定一个不可逾越的CPU使用天花板。
当您为动态资源池设置 cpu_percent=20 时,您是在设定一个在资源竞争情况下的CPU分配权重。