Поделиться через


Динамическая адаптация к размерам приложений (DATAS)

Динамическая адаптация к размерам приложений (DATAS) GC направлена на адаптацию к требованиям к памяти приложения. Это означает, что размер кучи приложения должен быть примерно пропорциональным размеру данных длительного времени. Если приложение выполняет ту же работу при запуске на компьютерах с различными спецификациями, размер кучи совпадает или похож. И если рабочая нагрузка становится легче или тяжелее, размер кучи корректируется соответствующим образом.

В отличие от этого, режим GC сервера направлен на повышение пропускной способности и обрабатывает процесс как доминирующий на компьютере. Объем выделений, который позволяет запускать следующую сборку GC, зависит от пропускной способности, а не размера приложения. Он может агрессивно расти кучу, если она должна и есть доступная память. Этот рост может привести к очень разным размерам кучи при запуске процесса на компьютерах с различными спецификациями оборудования. Куча может увеличиваться гораздо больше при перемещении процесса на компьютер с большим количеством ядер и большим объемом памяти. Серверная сборка данных также не обязательно настраивает кучу агрессивно, если рабочая нагрузка становится гораздо легче.

DATAS помогает большинству рабочих нагрузок с ускорением, где размер кучи должен быть скорректирован в соответствии с тем, насколько требуется рабочая нагрузка, особенно при снижении спроса. Это особенно важно в средах с ограниченной памятью, где важно разместить больше процессов, когда рабочие нагрузки некоторых процессов облегчаются. Она также помогает с планированием емкости. DATAS появилась в качестве функции согласия в .NET 8 и включена по умолчанию в .NET 9.

Описание функции

Для достижения адаптации размера приложения и обеспечения разумной производительности DATAS выполняет следующие действия:

  • Он задает максимально допустимое количество выделений до запуска следующей сборки данных на основе длительного размера данных. Это помогает ограничить размер кучи.
  • Он задает фактическое количество выделений, разрешенных на основе пропускной способности.
  • Он корректирует количество кучи при необходимости. Он начинается с одной кучы, что означает, если есть много потоков выделения, некоторые из них должны ждать. Это отрицательно влияет на пропускную способность. DATAS растет и уменьшает количество кучи по мере необходимости. Таким образом, это гибрид между существующими режимами GC, способным использовать как одну кучу (например, GC рабочей станции) и столько же, сколько соответствует числу ядер компьютера (например, серверной сборке GC).
  • При необходимости он делает полно-компактные GCs, чтобы предотвратить фрагментацию от слишком высокой, что также помогает с ограничением размера кучи.

Результаты тестов производительности

На следующих изображениях показаны некоторые результаты теста для TechEmpower JSON и Fortunes Benchmarks. Обратите внимание на значительное сокращение рабочего набора при выполнении тестов на 48-ядерном компьютере с Linux. Максимальная пропускная способность (измеряется в RPS) показывает сокращение на 2–3%, но при улучшении рабочего набора более 80 %.

Улучшение рабочего набора.

С поддержкой DATAS число 1-го поколения и 1-го поколения значительно выше.

Число 1-го поколения и 1-го поколения.

Отключение DATAS

Если вы заметили снижение пропускной способности, вы можете отключить DATAS с помощью различных параметров. Дополнительные сведения см. в разделе "Динамическая адаптация к размерам приложений" (DATAS).