Bagikan melalui


Adaptasi dinamis terhadap ukuran aplikasi (DATAS)

Adaptasi dinamis terhadap ukuran aplikasi (DATAS) GC bertujuan untuk beradaptasi dengan persyaratan memori aplikasi. Itu berarti ukuran timbunan aplikasi harus kira-kira sebanding dengan ukuran data berumur panjang. Jika aplikasi Anda melakukan pekerjaan yang sama saat berjalan pada komputer dengan spesifikasi yang berbeda, ukuran tumpukannya sama atau serupa. Dan jika beban kerja Anda menjadi lebih ringan atau lebih berat, ukuran tumpukan disesuaikan dengan sesuai.

Sebaliknya, mode GC Server bertujuan untuk meningkatkan throughput dan memperlakukan proses sebagai yang dominan pada komputer. Jumlah alokasi yang diizinkan sebelum memicu GC berikutnya didasarkan pada throughput, bukan ukuran aplikasi. Ini dapat menumbuhkan timbunan secara agresif jika perlu dan ada memori yang tersedia. Pertumbuhan ini dapat mengakibatkan ukuran timbunan yang sangat berbeda ketika Anda menjalankan proses pada mesin dengan spesifikasi perangkat keras yang berbeda. Timbunan dapat tumbuh jauh lebih besar ketika Anda memindahkan proses Anda ke mesin dengan lebih banyak inti dan lebih banyak memori. Server GC juga tidak selalu menyesuaikan tumpukan secara agresif jika beban kerja menjadi jauh lebih ringan.

DATAS paling membantu beban kerja "bursty" di mana ukuran timbunan harus disesuaikan sesuai dengan seberapa menuntut beban kerja, terutama saat permintaan menurun. Ini sangat penting dalam lingkungan yang dibatasi memori di mana penting untuk menyesuaikan lebih banyak proses ketika beban kerja beberapa proses meringankan. Ini juga membantu perencanaan kapasitas. DATAS diperkenalkan sebagai fitur keikutsertaan di .NET 8 dan diaktifkan secara default di .NET 9.

Deskripsi fitur

Untuk mencapai adaptasi ukuran aplikasi dan masih mempertahankan performa yang wajar, DATAS melakukan hal berikut:

  • Ini mengatur jumlah maksimum alokasi yang diizinkan sebelum GC berikutnya dipicu berdasarkan ukuran data berumur panjang. Ini membantu membatasi ukuran tumpukan.
  • Ini menetapkan jumlah alokasi aktual yang diizinkan berdasarkan throughput.
  • Ini menyesuaikan jumlah timbunan saat diperlukan. Ini dimulai dengan satu timbunan, yang berarti jika ada banyak utas yang dialokasikan, beberapa harus menunggu. Itu berdampak negatif pada throughput. DATA tumbuh dan mengurangi jumlah timbunan sesuai kebutuhan. Dengan cara ini, ini adalah hibrid antara mode GC yang ada, mampu menggunakan sesekali satu timbunan (seperti workstation GC) dan sebanyak yang cocok dengan jumlah inti mesin (seperti GC server).
  • Ketika diperlukan, itu melakukan GC yang memampatkan penuh untuk mencegah fragmentasi menjadi terlalu tinggi, yang juga membantu membatasi ukuran tumpukan.

Hasil tolok ukur

Gambar berikut menunjukkan beberapa hasil tolok ukur untuk TechEmpower JSON dan Fortunes Benchmarks. Perhatikan pengurangan signifikan dalam set kerja saat menjalankan tolok ukur pada komputer 48-core dengan Linux. Throughput maksimum (diukur dalam RPS) menunjukkan pengurangan 2-3%, tetapi dengan peningkatan set kerja lebih dari 80%.

Penyempurnaan set kerja.

Dengan diaktifkannya DATAS, jumlah GC Gen0 dan Gen1 secara signifikan lebih tinggi.

Gen0 dan Gen1 dihitung.

Cara menonaktifkan DATAS

Jika Anda melihat pengurangan throughput, Anda dapat menonaktifkan DATAS menggunakan berbagai pengaturan. Untuk informasi selengkapnya, lihat Adaptasi dinamis untuk ukuran aplikasi (DATAS).