GaussDB(DWS)CPU的资源隔离是通过linux内核中,提供控制组群(CGroups)功能,可为操作系统中所运行任务(进程)的用户定义组群分配资源 -- 比如CPU时间、CPU核数,系统内存。CGroups提供的功能主要包括:限制进程组可以使用的资源数量、进程组的优先级控制、记录进程组已使用的资源数量、进程组隔离及进程组控制等。
Gauss200 OLAP资源管理在设计之初考虑到数据库系统、用户、作业不同维度的隔离性和可配置性,通过控制组的层级特性构造满足数据库场景的模型。如图1所示:
▲图1 Gauss200 OLAP控制组层次模型
GaussDB(DWS)资源管理提供四个维度的层次隔离和控制:
①数据库程序与非数据库程序隔离
每个数据库集群系统在操作系统Cgroup上均含有单一的目录“Gaussdb:user”,其子目录包含该数据库集群管辖的所有程序(线程)。尤其在大数据平台上,通过控制数据库程序使用的资源,可防止数据库程序对其他应用的影响。
②数据库常驻后备线程与执行作业线程隔离
“Backend”Cgroup下承载了数据库的所有常驻后备线程。“Class”Cgroup下承载了数据库中所有执行作业相关的线程。通常“Backend”Cgroup下的常驻后备线程占用资源很少,但AutoVacuum工作线程除外;由于执行AutoVacuum时占用资源很高,单独提供“Vacuum”Cgroup用于控制AutoVacuum工作线程使用的资源,可防止对执行作业的影响。
③数据库多用户之间的隔离
通常数据库管理员创建多个用户(角色)用于执行不同的任务,资源管理为此提供接口,可以新创建属于某用户的控制组,控制组的名称和资源配比由系统管理员用户设定,其父目录为顶层“Class”Cgroup。结合资源池特性,用户、控制组和资源池进行关联,不同用户执行的作业使用不同的资源,实现资源互相隔离。
④策略执行作业和批量拉链作业隔离
根据作业类型不同,在每个用户(角色)的“Class”控制组下面制定两类控制组,其中“Default Workload”类型控制组由用户自定义控制组名称及资源配比,可用于策略执行作业;“Timeshare Workload”类型控制组为每个“Class”控制组下的固定控制组,共含有4个,按照1:2:4:8的资源比例分配,可用于批量拉链作业。




