作者
digoal
日期
2019-05-14
标签
PostgreSQL , cgroup , application_name , 用户 , 会话 , 组 , cpu , io , memory , 进程组
背景
PG为进程架构,利用Linux的cgroup功能,可以限定进程的资源使用。
例如,
1、应用按不同的业务,使用不同的数据库用户连接数据库。
2、应用按不同的业务,划分了不同的数据库。
3、不同的应用使用了同样的用户连接同样的数据库,使用application_name区分这些应用。
每一个连接对应一个数据库进程。将这些进程分配到对应CGROUP资源组,限定资源。
目前edb epas采用类似原理,支持了数据库的用户级资源隔离。
《PostgreSQL 商用版本EPAS(阿里云ppas(Oracle 兼容版)) HTAP功能之资源隔离管理 - CPU与刷脏资源组管理》
按核限定

1、选择按核数限定
2、选择库级、用户级、application_name级。
按权重限定(限定总核数)
设置总共最多用多少核。
权重相加,等于限定的总核数(例如有64核,限定只使用32核,并将这32核按权重分配给对应的cgroup组。)。
2、选择库级、用户级、application_name级
实际上目前有个插件,实现了一些cgroup的接口,通过调用函数可以实现资源组的设置和管理.
https://github.com/MasahikoSawada/pg_cgroup
参考
https://github.com/MasahikoSawada/pg_cgroup
https://github.com/cybertec-postgresql/pg_cgroups
《Linux cgroup - cpu与cpuset子系统讲解》
《Linux cgroup资源隔离各个击破之 - io隔离》
《Linux中进程内存RSS与cgroup内存的RSS统计 - 差异》
《cgroup告诉你如何计算 PostgreSQL 数据库实例用了多少内存》
《PostgreSQL 商用版本EPAS(阿里云ppas(Oracle 兼容版)) HTAP功能之资源隔离管理 - CPU与刷脏资源组管理》
PostgreSQL 许愿链接
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.
9.9元购买3个月阿里云RDS PostgreSQL实例
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.





