如何計算凍結
若要計算凍結,您可使用設定的屬性及某些執行階段的值。 下列範例會示範如何計算假設性的凍結案例。
計算凍結
讓 Alpha 代表 0 和 1 之間測量記憶體壓力的因數。 在實務中,Alpha 對於 3 個記憶體節流準則 (凍結屬性) 的每一個都有一個元件;在此範例中,我們用 alpha(virtual)、alpha(private) 和 alpha(physical) 來代表它們。 定義以下項目:
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 秒)。