Informix RDBMS用户请求向VCPU的分配与调度问题问询
Informix VCPU请求调度问题分析与问询
引言
Informix服务器采用VCPU概念提升性能、处理用户请求,可根据授权、硬件及工作负载配置VCPU数量。用户请求会被调度至VCPU执行(如存储过程调用),最终返回结果(通常为游标)。本文讨论的均为只读请求,无锁或其他并行障碍。
假设
服务器实例配置4个VCPU,用户请求为Tnn(id)形式:
nn:请求执行耗时(Informix无法预先获知)id:请求标识,多为存储过程调用并返回游标
场景
短时间内(<2秒)收到5个请求:T50(1)、T50(2)、T32(3)、T15(4)、T10(5),初始调度分配如下:
- vCPU0 -
T50(1) - vCPU1 -
T50(2) - vCPU2 -
T32(3) - vCPU3 -
T15(4)
此时所有VCPU繁忙,T10(5)被调度至vCPU1的队列中,队列状态变为:
- vCPU0 -
T50(1) - vCPU1 -
T50(2)、T10(5) - vCPU2 -
T32(3) - vCPU3 -
T15(4)
观察到VCPU执行请求的总耗时约为队列中请求耗时之和。
执行逻辑预期
理想调度逻辑下:
- 15秒后
T15(4)完成,vCPU3空闲,T10(5)应被重新调度至vCPU3执行; - 约25秒时
T10(5)完成; - 32秒后
T32(3)完成; - 50秒后
T50(1)、T50(2)完成。
实际结果
实际观察到的请求耗时与预期偏差显著:
T50(1)- 约50秒T50(2)- 约70秒T32(3)- 约32秒T15(4)- 约15秒T10(5)- 远超19秒,耗时接近50-70秒
可见T10(5)未被重新调度至空闲VCPU,始终在vCPU1队列中等待T50(2)执行完成后才开始执行,导致任务耗时大幅增加。多次验证均发现Informix无请求重调度至空闲VCPU的行为,资源利用率被严重影响。
问题问询
- 为何会出现该行为?是Informix的设计逻辑,还是对其调度机制的误解?
- 是否可通过配置Informix优化待处理工作负载与VCPU分配的资源利用率?
- 还有哪些针对性优化手段?客户端能否提供提示信息辅助Informix优化资源分配?
长短请求混合场景优化需求
长短请求混合时调度问题尤为严重:短请求若被分配至长请求所在VCPU的队列,耗时会大幅增加。希望了解:
- 能否在Informix中定义VCPU池?例如20个VCPU中,16个为普通请求池,4个为快速请求池;快速池仅允许执行耗时低于阈值(如250ms)的请求,超时则调度至普通池。
- 能否在存储过程中指定VCPU池,告知Informix请求的预期耗时以优化资源利用?
内容的提问来源于stack exchange,提问作者MarKol4
相关产品推荐
相关产品推荐

