2013-12-09 39 views
0

我目前正試圖計算NGEN是否對我們的.NET客戶端在Citrix服務器場上運行時節省的內存方面有任何好處。使用NGEN時計算工作空間節省

我的主要參考下面的文章:

本文認爲使用的VMMap我只需要檢查,看看我的共享WS增加,我的黃金。

事實上,我看到可共享的WS增加了大約56MB(請參考前後的圖片)。但我也注意到,WS的總數也一直在增加。也許是由於NGEN圖像尺寸的增加?

所以我認爲我需要考慮這一點,實際上我的MB情況更糟。

但是我也明白,因爲沒有發生JIT,我在那裏節省了一些空間。我相信JIT將在私人數據下顯示。

我計算此爲: - [Δ圖片ShareableWS] +([Δ圖像PrivateWS] - [ΔPrivate數據總WS])

用下面的附圖中:

  • 56.3 +( - 58.3 - -6.8)=節省4.8MB(每個後續過程)

所以我想問題是 - 我做對了嗎?有什麼我失蹤或沒有考慮到這裏?

前NGEN

Before NGEN

後NGEN

After NGEN

回答

1

我與你的假設,你是更糟糕不同意由於WS總額從212上升到263.原因是你的總數增加的大部分來自可共享集團k,並且您只支付該可共享塊的內存成本一次。

所以它確實取決於您有多少會話/實例正在運行您的應用程序,因爲一次性關閉56MB在所有會話之間有效共享。

所以權衡是這樣的:

每一屆會議從私人WS節約= 86.3 - 81.9 = 4.4MB(= S)

%來自可共享= 56/NUM會話的會話增加(= I )

所以你想要的是S> I.顯然,對於低會議數你會變得更糟,而對於高會話數,你會更好。所以要找到你等價的點:

4。4 = 56/NUM會議

得出:民會話= 13

因此平均,如果你有一臺服務器上運行你的應用程序超過13個的實例,那麼你最好使用NGEN。

+0

謝謝 - 這的確符合我的理解。它有助於聽到別人確認我在想什麼。我另外發現在調試時,我可以在sos.dll中使用'eeheap -loader'命令獲得準確計數的JITed代碼。 對我們來說不幸的是,上述程序只是需要部署的一套客戶端程序中的一個。總的來說,盈虧平衡點和隨後的節省是這樣的,我們現在決定不再追求淨資產收益率。 – sger6218