用户资源监控
在多租户管理的框架下,用户可以通过系统视图PG_TOTAL_USER_RESOURCE_INFO、PGXC_TOTAL_USER_RESOURCE_INFO和函数GS_WLM_USER_RESOURCE_INFO实时查询所有用户资源(包括内存,CPU核数,存储空间、临时空间、算子落盘空间和IO)实时使用情况,也可以通过系统表GS_WLM_USER_RESOURCE_HISTORY和系统视图PGXC_WLM_USER_RESOURCE_HISTORY查询用户资源的历史使用情况。
注意事项
- 用户监控可以同时监控快慢车道(快车道管控简单作业,慢车道管控复杂作业)所有作业的CPU、IO和内存使用情况,不再受限于仅监控慢车道作业。
- 当前快车道作业内存和CPU不受控,在快车道运行作业占用资源较多情况下,可能出现已用资源大于资源限制的情况。
- DN监控视图中,IO、内存和CPU显示的是本DN上资源池资源使用和资源限制信息。
- CN监控视图中,IO、内存和CPU显示的是集群内所有DN资源池资源使用和资源限制的累积和。
- DN每隔5s更新一次监控信息,CN每隔5s从DN收集一次用户监控信息,因为各实例单独更新/收集用户监控信息,因此各实例监控信息更新时间可能不一致。
- 辅助线程中每隔30s自动调用持久化函数,持久化用户监控数据,正常情况下不需要用户单独调用持久化函数持久化用户监控数据。
- 当用户数量较多,集群规模较大时,查询此类实时视图,因CN/DN间实时通信开销,会有一定的网络延时。
- 初始管理用户不进行资源监控。
操作步骤
- 查询所有用户的资源限额和资源实时使用情况。
1
SELECT * FROM PG_TOTAL_USER_RESOURCE_INFO;
得到的结果视图如下:
username | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed -----------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+-------------+------------+------------ perfadm | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 usern | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (2 rows)
其中,IO资源监控字段(read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed)需要在GUC参数enable_user_metric_persistent开启时才有监控数据。
所查各字段说明详见PG_TOTAL_USER_RESOURCE_INFO 。
- 查询具体某个用户的资源限额和资源实时使用情况。
1
SELECT * FROM GS_WLM_USER_RESOURCE_INFO('username');
查询结果如下:
userid | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed --------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+-------------+------------+------------ 16407 | 18 | 1655 | 6 | 19 | 13787176 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (1 row)
- 查询所有用户的资源限额和资源历史使用情况。
1
SELECT * FROM GS_WLM_USER_RESOURCE_HISTORY;
查询结果如下:
username | timestamp | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed -----------------------+-------------------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+-------------+-------------+------------+------------ usern | 2020-01-08 22:56:06.456855+08 | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 88349078 | -1 | 45680 | 34 | 5710 | 8 | 320 | 0 | 0 | 0 userg | 2020-01-08 22:56:06.458659+08 | 0 | 15525 | 33.48 | 48 | 0 | -1 | 0 | -1 | 110169581 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 | 0 | 0 userg1 | 2020-01-08 22:56:06.460252+08 | 0 | 13972 | 33.48 | 48 | 0 | -1 | 0 | -1 | 136106277 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 | 0 | 0
对于系统表GS_WLM_USER_RESOURCE_HISTORY,仅当GUC参数enable_user_metric_persistent开启时,才会定期将视图PG_TOTAL_USER_RESOURCE_INFO中的数据保存到历史表中。
所查各字段说明详见GS_WLM_USER_RESOURCE_HISTORY。