2013-12-09 3 views
0

В настоящее время я пытаюсь рассчитать, будет ли NGEN приносить пользу нашему клиенту .NET с точки зрения экономии памяти при работе на ферме Citrix.Рассчитайте экономию рабочего пространства при использовании NGEN

Моя главная ссылка следующая статья:

Эта статья предполагает, что использование VMMap мне просто нужно проверить, чтобы увидеть, если мои разделяемые увеличивается WS и я золотой.

Фактически, я вижу увеличение около 56 МБ в совместно используемом WS (см. Фотографии до и после). Но я также отмечаю, что общий WS также подскочил. Возможно, из-за увеличения размера изображений NGEN?

Так что я бы подумал, что мне нужно принять это во внимание, и я на самом деле на несколько МБ хуже.

Но тогда я также понимаю, что, поскольку JIT не происходит, я сохраняю там некоторое пространство. JIT, я считаю, будет отображаться под частными данными.

рассчитать это как: - [Δ Изображение ShareableWS] + ([Δ Изображение PrivateWS] - [ΔPrivate данных Общая WS])

Используя цифры ниже:

  • 56,3 + (- 58,3 - -6,8) = экономия 4,8 МБ (за каждый последующий процесс)

Так что, я думаю, вопрос в том, что я делаю это правильно? Есть ли что-то, чего я не вижу или не могу учесть здесь?

ПЕРЕД НГЕН

Before NGEN

ПОСЛЕ NGEN

After NGEN

ответ

1

Я не согласен с предположением, что ты хуже из-за общего WS подходя из 212 до 263. Причина заключается в том, что основная часть этого увеличения вашей суммы исходит из блока Shareable k, и вы платите только стоимость памяти для этого разделяемого блока один раз.

Таким образом, это действительно зависит от того, сколько сеансов/экземпляров у вас запущено в вашем приложении, так как это когда-то 56MB эффективно делится между всеми сеансами.

Так Компромисс выглядит следующим образом:

Per экономия от частного WS = 86,3 сессии - 81,9 = 4.4MB (= S)

За увеличение сеанса от Shareable = 56/Num сессий (= I)

Итак, вы хотите, чтобы S> I. Очевидно, что для низких сессий вы хуже, и для высоких сессий вам лучше. Таким образом, чтобы найти точку, в которой вы эквивалентны:

4.4 = 56/Num сеансов

Дает: сессии Num = 13

Так, в среднем, если у вас есть более 13 экземпляров приложения, запущенного на сервере, то вы лучше использовать NGEN.

+0

Спасибо, что согласен с моим пониманием. Это помогает услышать, как кто-то еще подтверждает то, о чем я думал. Я также обнаружил, что могу получить точное количество JIT-кода, используя команду «eeheap -loader» в sos.dll во время отладки. К сожалению, для нас вышеуказанная программа является только одной в комплекте клиентских программ, которые необходимо будет развернуть. В общей сложности точка безубыточности и последующая экономия таковы, что мы решили не продолжать ngen в это время. – sger6218

 Смежные вопросы

  • Нет связанных вопросов^_^