0

我目前正在尝试计算 NGEN 是否会对我们的 .NET 客户端在 Citrix 场上运行时节省内存方面有任何好处。

我的主要参考是以下文章:

本文建议使用 VMMap 我只需要检查我的可共享 WS 是否增加并且我是金子。

事实上,我确实看到可共享的 WS 增加了大约 56MB(请参阅之前和之后的图片)。但我也注意到,总 WS 也上升了。也许是由于 NGEN 图像的尺寸增加了?

所以我认为我需要考虑到这一点,实际上我的情况要差几兆。

但后来我也明白,由于没有发生 JIT,我在那里节省了一些空间。我相信 JIT 会出现在私有数据下。

我将其计算为: - [Δ Image ShareableWS] + ([Δ Image PrivateWS] - [ΔPrivate Data Total WS])

使用下图:

  • 56.3 + (-58.3 - -6.8) = 节省 4.8MB(每个后续进程)

所以我想问题是——我这样做对吗?我在这里有什么遗漏或没有考虑到的吗?

在 NGEN 之前

在 NGEN 之前

NGEN之后

NGEN之后

4

1 回答 1

1

我不同意您的假设,即由于总 WS 从 212 上升到 263,您的情况更糟。原因是您的总数增加的大部分来自 Shareable 块,您只需支付内存成本那个可共享的块一次。

所以这真的取决于你有多少会话/实例运行你的应用程序,因为一旦关闭 56MB 就会在所有会话之间有效共享。

所以权衡是这样的:

私人 WS 的每个会话节省 = 86.3 - 81.9 = 4.4MB (= S)

每个会话从可共享增加 = 56 / num 个会话 (= I)

因此,您想要的是 S > I。显然,对于低会话数,您的情况会更糟,而对于高会话数,您的情况会更好。因此,要找到您等效的点:

4.4 = 56 / 会话数

给出:Num session = 13

因此,平均而言,如果您在服务器上运行的应用程序实例超过 13 个,那么您最好使用 NGEN。

于 2013-12-11T23:02:26.530 回答