IO优先级
背景信息
通过IO资源管理设置了使用上限,系统还支持对IO的优先级进行限制。在磁盘使用率达到90以上时,会触发IO优先级模式,优先级通过io_priority指定。io_priority提供三种优先级,分别是High、Medium及Low,分别对应限制iops为重消耗IO作业原始触发数值的80%、50%及20%。
系统支持的优先限制类型如表1所示。
IO优先级限制方式 |
说明 |
---|---|
资源池级别IO优先级限制 |
通过设置资源池的参数“io_priority”,可以对用户级别的IO优先级进行限制。 |
作业级别IO优先级限制 |
通过设置GUC参数“io_priority”,可以对会话级别的IO优先级进行限制。 |
IO优先级限制场景如表2所示
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优先级为Medium。
1 2
ALTER RESOURCE POOL resource_pool_a1 WITH (io_priority="Medium"); ALTER RESOURCE POOL
会话级IO优先级限制
设置GUC参数io_priority的取值为Medium。
1 | SET io_priority TO Medium; |
查看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 ------------------+-------------+--------------+---------------------+-------------------+---------+--------------+----------+-----------+------------- default_pool | 100 | -1 | DefaultClass:Medium | -1 | 1 | 8GB | 0 | 0 | None resource_pool_a1 | 20 | -1 | class_a:workload_a1 | 10 | 1 | 8GB | 16957 | 0 | Medium (2 rows)
- 查看会话级IO优先级设置
1
show io_priority ;
io_priority ------------- Medium (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 优先级控制 - 查看会话级IO优先级设置
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。