求某一时刻进入队列的消息,计算其出队列时间 EL?
定义:
S 为 入队列速率 (根据load的情况,S随不同时间段而变化)
P 为 出队列吞吐量, 通常在给定的系统配置条件下可以认为是常量
TK指K时刻
TN是指对应K时刻进入消息队列的消息出队列所到达的时刻
QD 为初始时刻Queue中剩余的Message的数量
情况1> 假设在一定时间段内,S为定值
当 S 总是<=P时, 在一段时间后任意时刻均无剩余message堆积, 这里暂时不考虑这类问题
当 S > P 时, Queue depth 会不断增长
所以,TN = (S * TK)/P + QD/P
EL= TN-TK
EL = (S * TK)/P + QD/P -TK =(S/P - 1)*Tk + QD/P
EL= TN-TK
EL = (S * TK)/P + QD/P -TK =(S/P - 1)*Tk + QD/P
其中,S,P均为固定值,并且可以被measure
(一般可以通过SQL语句来统计S和P的值, 例如-- select count(*) from dbo.myqueue where ms.timestamp == ctime)
情况2> 假设S为不断变化的正玄函数(斜率即为某时刻的进队速率S‘),则公式可变换为:
EL = (∫ sin(cx)dx) /P + QD/P -TK , 其中积分的范围是0-TK
因此,S需要不断的采样,利用曲线拟合方法(Curve fitting),确定它符合什么样的函数,但不管什么情况,都可以套用类似的模型解决此类问题
No comments:
Post a Comment