如何计算脱水

计算脱水时,请使用配置属性和某些运行时值。 以下示例演示如何计算假设的脱水方案。

计算脱水

  1. 让 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 文件中更改这些值。 有关详细信息,请参阅 解除冻结默认属性

  2. 类似地定义其他 alpha 组件。 定义以下内容:

    alpha = Minimum { alpha(virtual), alpha(private), alpha(physical) }  
    where alpha(…) = 1 whenever IsActive=false for that given memory unit  
    
  3. 然后定义 TestThreshold(TestThreshold、MinThreshold 和 MaxThreshold 以秒为单位):

    TestThreshold = MinThreshold + (alpha * (MaxThreshold – MinThreshold))  
    

    注释

    MinThreshold 默认值 = 1。 MaxThreshold 默认值 = 1800。 可以在 BTSNTSvc.exe.config 文件中更改这些值。 有关详细信息,请参阅 解除冻结默认属性

  4. 然后定义 TimeBlocked 和 EstimatedTime:

    • TimeBlocked = 我们等待此订阅满足的实际时间

    • EstimatedTime = 该编排将在保持空闲状态的估计时间(例如侦听的剩余超时时间)

    决定是否脱水是以下布尔条件的结果(true = 脱水):

  • 解除冻结 = (EstimatedTime > TestThreshold OR TimeBlocked > (2* TestThreshold))

注释

估计时间是延迟结束之前剩余的时间(如果延迟 5 分钟和 2 分钟已过,TimeBlocked=120 秒,EstimatedTime=180 秒)。

另请参阅

脱水默认属性
BTSNTSvc.exe.config 文件