Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dynamische Anpassung an Anwendungsgrößen (DATAS) GC zielt darauf ab, die Anforderungen an den Anwendungsspeicher anzupassen. Dies bedeutet, dass die Größe des Anwendungs-Heap ungefähr proportional zur langlebigen Datengröße sein sollte. Wenn Ihre Anwendung auf Computern mit unterschiedlichen Spezifikationen die gleiche Arbeit verrichtet, ist die Heap-Größe gleich oder ähnlich. Und wenn Ihr Workload leichter oder schwerer wird, wird die Heap-Größe entsprechend angepasst.
Im Gegensatz dazu zielt der Server GC-Modus darauf ab, den Durchsatz zu verbessern und den Prozess als dominante auf der Maschine zu behandeln. Die Anzahl der erlaubten Zuweisungen, bevor die nächste GC ausgelöst wird, basiert auf dem Durchsatz und nicht auf der Größe der Anwendung. Er kann den Heap aggressiv vergrößern, wenn er benötigt wird und Arbeitsspeicher verfügbar ist. Dieses Wachstum kann zu sehr unterschiedlichen Heap-Größen führen, wenn Sie den Prozess auf Computern mit unterschiedlichen Hardwarespezifikationen ausführen. Der Heap kann viel größer werden, wenn Sie Ihren Prozess auf einen Computer mit vielen weiteren Kernen und mehr Arbeitsspeicher verschieben. Server GC passt den Heap auch nicht unbedingt aggressiv an, wenn der Workload viel leichter wird.
DATAS hilft am meisten bei „Bursty“-Workloads, bei denen die Heap-Größe an die Anforderungen des Workloads angepasst werden sollte, insbesondere wenn der Bedarf abnimmt. Dies ist besonders wichtig in Umgebungen mit begrenztem Speicherplatz, wo es wichtig ist, mehr Prozesse einzubauen, wenn die Workload bei einigen Prozessen nachlässt. Sie hilft auch bei der Kapazitätsplanung. DATAS wurde als Opt-In-Feature in .NET 8 eingeführt und ist standardmäßig in .NET 9 aktiviert.
Featurebeschreibung
Um eine Anpassung der App-Größe zu erzielen und dennoch eine angemessene Leistung zu gewährleisten, führt DATAS die folgenden Aktionen aus:
- Es legt die maximale Menge an Zuteilungen fest, die zulässig sind, bevor das nächste GC basierend auf der langfristigen Datengröße ausgelöst wird. Dies hilft bei der Einschränkung der Heap-Größe.
- Sie legt die tatsächliche Menge der zulässigen Zuordnungen basierend auf dem Durchsatz fest.
- Sie passt die Anzahl der Heaps bei Bedarf an. Es beginnt mit einem Heap, was bedeutet, dass einige warten müssen, wenn viele Threads zugewiesen werden. Das wirkt sich negativ auf den Durchsatz aus. DATAS wächst und reduziert die Anzahl der Heaps bei Bedarf. Auf diese Weise ist es eine Hybridlösung zwischen den vorhandenen GC-Modi, die so wenige wie einen Heap (z. B. Workstation GC) verwenden können und so viele wie die Anzahl der Computerkerne (z. B. Server-GC) entspricht.
- Bei Bedarf werden vollkomprimierende GCs verwendet, um zu verhindern, dass Fragmentierung zu hoch wird, was auch bei der Einschränkung der Heap-Größe hilft.
Ergebnisse von Vergleichstests
Die folgenden Bilder zeigen einige Benchmark-Ergebnisse für TechEmpower JSON und Fortunes Benchmarks. Beachten Sie die signifikante Reduzierung des Arbeitssatzes beim Ausführen der Benchmarks auf einem 48-Core-Computer mit Linux. Der maximale Durchsatz (gemessen in RPS) zeigt eine Reduzierung von 2 bis 3 %, aber mit einer Verbesserung des Arbeitssatzes von über 80 %.
Da DATAS aktiviert ist, ist die Anzahl der Gen0- und Gen1-GCs deutlich höher.
So deaktivieren Sie DATAS
Wenn Sie feststellen, dass der Durchsatz reduziert wird, können Sie DATAS mithilfe verschiedener Einstellungen deaktivieren. Weitere Informationen finden Sie unter Dynamische Anpassung an Anwendungsgrößen (DATAS).