我目前正在尝试计算在Citrix服务器场上运行时,NGEN在节省内存方面是否对我们的.NET客户端有任何好处。
我的主要参考文献是以下文章:
本文建议使用VMMap,我只需要检查一下我的可共享WS是否会增加,而且我是金色的。
事实上,我确实看到可共享WS增加了大约56MB(参考之前和之后的图片)。但我也注意到,总的WS也有所增加。也许是由于NGEN图像尺寸的增加?
所以我认为我需要考虑到这一点,而实际上我的情况会差一些。
但后来我也明白,由于JIT没有发生,我在那里节省了一些空间。我认为JIT将出现在私人数据下。
我计算如下: - [ΔImageShareableWS] +([ΔImagePrivateWS] - [ΔPrivateDataTotal WS])
使用下图:
所以我想问题是 - 我做得对吗?我有什么遗漏或没有考虑到这里吗?
在NGEN之前
NGEN之后
答案 0 :(得分:1)
我不同意你的假设,因为总的WS从212上升到263,你的情况更糟。原因是你的总数增加的大部分来自可分享区块,你只支付该可共享块的内存开销一次。
因此,这实际上取决于您运行的应用程序的会话/实例数量,因为56MB在所有会话之间实际共享。
所以权衡如下:
从私人WS = 86.3 - 81.9 = 4.4MB(= S)
保存每个会话每次会话从Shareable = 56 / num sessions(= I)增加
所以你想要的是S> I.显然,对于较低的会话数,你会更糟糕,而且对于高会话数,你会更好。所以要找到你的等价点:
4.4 = 56 / num sessions
给予:Num sessions = 13
因此,平均而言,如果您在服务器上运行的应用程序实例超过13个,那么您最好使用NGEN。