Dynamische aanpassing van toepassingsgrootten (DATAS)
Dynamische aanpassing van toepassingsgrootten (DATAS) GC is bedoeld om zich aan te passen aan de vereisten voor toepassingsgeheugen. Dit betekent dat de heapgrootte van de toepassing ongeveer evenredig moet zijn met de gegevensgrootte met een lange levensduur. Als uw app hetzelfde werk doet wanneer deze wordt uitgevoerd op machines met verschillende specificaties, is de heap-grootte hetzelfde of vergelijkbaar. En als uw workload lichter of zwaarder wordt, wordt de heapgrootte dienovereenkomstig aangepast.
Server GC-modus is daarentegen gericht op het verbeteren van de doorvoer en behandelt het proces als de dominante op de computer. De hoeveelheid toewijzingen die het toestaat voordat de volgende GC wordt geactiveerd, is gebaseerd op doorvoer, niet op toepassingsgrootte. Het kan de heap agressief laten groeien als dat nodig is en er geheugen beschikbaar is. Deze groei kan leiden tot zeer verschillende heap-grootten wanneer u het proces uitvoert op machines met verschillende hardwarespecificaties. De heap kan veel groter worden wanneer u uw proces verplaatst naar een machine met veel meer kernen en meer geheugen. Server GC past de heap ook niet per se agressief aan als de werkbelasting veel lichter wordt.
DATAS helpt de meeste bij 'bursty' workloads waarbij de heap-grootte moet worden aangepast op basis van hoe veeleisend de workload is, met name naarmate de vraag afneemt. Dit is vooral belangrijk in omgevingen met een geheugenbeperking, waarbij het belangrijk is om meer processen aan te passen wanneer de werkbelastingen van bepaalde processen worden verlicht. Het helpt ook bij het plannen van capaciteit. DATAS is geïntroduceerd als een opt-in-functie in .NET 8 en is standaard ingeschakeld in .NET 9.
Functiebeschrijving
Datas doet het volgende om de app-grootte aan te passen en nog steeds redelijke prestaties te behouden:
- Hiermee wordt de maximale hoeveelheid toewijzingen ingesteld die zijn toegestaan voordat de volgende GC wordt geactiveerd op basis van de gegevensgrootte met een lange levensduur. Dit helpt bij het beperken van de heapgrootte.
- Hiermee wordt de werkelijke hoeveelheid toewijzingen ingesteld die zijn toegestaan op basis van doorvoer.
- Het past het aantal heaps aan wanneer dat nodig is. Het begint met één heap, wat betekent dat als er veel threads worden toewijzen, sommigen moeten wachten. Dit heeft een negatieve invloed op de doorvoer. DATAS groeit en vermindert zo nodig het aantal heaps. Op deze manier is het een hybride verbinding tussen de bestaande GC-modi, die in staat zijn om slechts één heap (zoals werkstation GC) te gebruiken en zo veel als overeenkomt met het aantal kerngeheugens van de machine (zoals server GC).
- Indien nodig worden GCs volledig gecomprimeerd om te voorkomen dat fragmentatie te hoog wordt, wat ook helpt bij het beperken van de heapgrootte.
Benchmarkresultaten
In de volgende afbeeldingen ziet u enkele benchmarkresultaten voor TechEmpower JSON en Fortunes Benchmarks. Let op de aanzienlijke vermindering van de werkset bij het uitvoeren van de benchmarks op een computer met 48 kernen met Linux. Maximale doorvoer (gemeten in RPS) toont een vermindering van 2-3%, maar met een verbetering van een werkset van meer dan 80%.
Als DATAS is ingeschakeld, is het aantal Gen0- en Gen1-GCs aanzienlijk hoger.
DATAS uitschakelen
Als u merkt dat de doorvoer wordt verminderd, kunt u DATAS uitschakelen met behulp van verschillende instellingen. Zie Dynamische aanpassing van toepassingsgrootten (DATAS) voor meer informatie.