Post #310
330


😋 Кормим .NET мусором — GCServer налил, DATAS отжал
Недавно на проде включал GCServerMode. Это режим, который делит большие кучи на несколько мини-подкуч и позволяет собирать мусор параллельно в каждой из них.
На первом снепшоте памяти у нас всего три большие кучи. А на втором уже целая толпа — 12 мини-подкуч, по числу ядер процессора, и так для каждого поколения.
Я раньше думал, что это включено по умолчанию, но оказалось, что нет.
Звучит, конечно, многообещающе — теперь вашу кучу разгребает не один поток, а сразу несколько.
Что получилось по метрикам:
1️⃣ 🔽После включения DOTNET_GC_SERVER = 1 память ожидаемо выросла. И выросла прилично — примерно раза в два.
2️⃣ 🔼 Но зато количество сборок мусора сильно сократилось.
Вы, наверное, хотите узнать, как изменились метрики запросов? А вот тут изменений почти нет. Основная нагрузка у меня упирается в базу данных, поэтому по метрикам запросов разницы практически не видно.
Недавно на проде включал GCServerMode. Это режим, который делит большие кучи на несколько мини-подкуч и позволяет собирать мусор параллельно в каждой из них.
На первом снепшоте памяти у нас всего три большие кучи. А на втором уже целая толпа — 12 мини-подкуч, по числу ядер процессора, и так для каждого поколения.
Я раньше думал, что это включено по умолчанию, но оказалось, что нет.
Звучит, конечно, многообещающе — теперь вашу кучу разгребает не один поток, а сразу несколько.
Что получилось по метрикам:
1️⃣ 🔽После включения DOTNET_GC_SERVER = 1 память ожидаемо выросла. И выросла прилично — примерно раза в два.
2️⃣ 🔼 Но зато количество сборок мусора сильно сократилось.
Вы, наверное, хотите узнать, как изменились метрики запросов? А вот тут изменений почти нет. Основная нагрузка у меня упирается в базу данных, поэтому по метрикам запросов разницы практически не видно.
- 👍 2





