暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A IO资源管理

墨天轮 2019-10-12
1009

IO资源管理

背景信息

系统支持对IO资源的使用上限进行限制。IO资源上限限制类型如表1所示。

表1 IO资源上限限制类型

IO资源上限限制方式

说明

资源池级别IO资源上限限制

通过设置资源池的参数“io_limits”,可以对用户级别的IO资源上限进行限制。

作业级别IO资源上限限制

通过设置GUC参数“io_limits”,可以对会话级别的IO资源上限进行限制。

IO资源上限限制场景如表2所示。

表2 IO资源上限限制的场景

IO读写模式

说明

写模式

对“INSERT INTO SELECT”,“COPY FROM”,“CREATE TABLE AS” 语句进行控制。

读模式

需要根据优化器的评估计算出要扫描的数据量,通常单DN数据量大约超过500MB时就会触发IO控制。

读写混合模式

“UPDATE”、“DELETE”、“VACUUM FULL”、“CREATE INDEX”、“CLUSTER TABLE USING INDEX”、“ANALYZE”、“MERGE INTO”作为读写混合的场景,也会触发IO的控制。

说明:

对于行存,由于缓冲区策略,读写IO请求并不在真正读写磁盘过程中控制,而是在读写缓冲区过程中控制。

前提条件

已熟悉gs_guc和ALTER RESOURCE POOL的使用。

操作步骤

用户级IO资源上限限制

  • 使用gsql连接数据库。
  • 修改资源池“resource_pool_a1”的IO上限为100万次/s

    1
    2
    ALTER RESOURCE POOL resource_pool_a1 WITH (IO_LIMITS=100);
    ALTER RESOURCE POOL
    
    说明:
    • 对于行存单位是万次/s,建议根据pg_user_iostat视图中的max_curr_iops进行设置。
    • 对于列存单位是次/s,建议根据pg_user_iostat视图中的max_curr_iops进行设置。如果设置过大,起不到控制IO的作用。
    • 设置为0表示不控制。

会话级IO资源上限限制

设置GUC参数io_limits的取值为100。

1
SET io_limits TO 100;

查看IO资源的配置信息

  • 查看用户级别的IO资源上限设置
    1
    select * from pg_resource_pool;
    
    respool_name | mem_percent | cpu_affinity | control_group | active_statements | max_dop | memory_limit | parentid | io_limits | io_priority ------------------+-------------+--------------+---------------------+-------------------+---------+--------------+----------+-----------+------------- resource_pool_a1 | 20 | -1 | class_a:workload_a1 | 10 | 1 | 8GB | 0 | 100 | None (6 rows)
  • 查看会话级IO资源上限限制
    1
    show io_limits;
    
    io_limits ------------- 100 (1 row)

查看IO资源管理相关视图

  • pg_session_iostat提供session级IO资源监控
    1
    select * from pg_session_iostat;
    
  • pg_user_iostat提供user级IO资源监控
    1
    select * from pg_user_iostat('username');
    

查看更多:华为GaussDB 200 计算资源管理
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论