计算脱水时,请使用配置属性和某些运行时值。 以下示例演示如何计算假设的脱水方案。
计算脱水
让 alpha 表示一个介于 0 和 1 之间的因子,用于度量内存压力。 在实践中,alpha 针对三个内存控制标准(脱水属性)都有相应的组成部分;在此示例中,我们将它们表示为 alpha(虚拟)、alpha(私有)和 alpha(物理)。 定义以下内容:
IF ActualPrivateBytes < OptimalUsage alpha(private) = 1 ELSE IF ActualPrivateBytes > MaximalUsage alpha(private) = 0 ELSE alpha(private) = (MaximalUsage - ActualPrivateBytes) / (MaximalUsage - OptimalUsage)注释
OptimalUsage 和 MaximalUsage 具有每个脱水属性的默认值。 可以在 BTSNTSvc.exe.config 文件中更改这些值。 有关详细信息,请参阅 解除冻结默认属性。
类似地定义其他 alpha 组件。 定义以下内容:
alpha = Minimum { alpha(virtual), alpha(private), alpha(physical) } where alpha(…) = 1 whenever IsActive=false for that given memory unit然后定义 TestThreshold(TestThreshold、MinThreshold 和 MaxThreshold 以秒为单位):
TestThreshold = MinThreshold + (alpha * (MaxThreshold – MinThreshold))注释
MinThreshold 默认值 = 1。 MaxThreshold 默认值 = 1800。 可以在 BTSNTSvc.exe.config 文件中更改这些值。 有关详细信息,请参阅 解除冻结默认属性。
然后定义 TimeBlocked 和 EstimatedTime:
TimeBlocked = 我们等待此订阅满足的实际时间
EstimatedTime = 该编排将在保持空闲状态的估计时间(例如侦听的剩余超时时间)
决定是否脱水是以下布尔条件的结果(true = 脱水):
- 解除冻结 = (EstimatedTime > TestThreshold OR TimeBlocked > (2* TestThreshold))
注释
估计时间是延迟结束之前剩余的时间(如果延迟 5 分钟和 2 分钟已过,TimeBlocked=120 秒,EstimatedTime=180 秒)。