Ciao,

On Fri, May 3, 2019 at 9:54 PM [email protected]
[it-torino-java-jug] <[email protected]> wrote:
> Ciao,
>
> mi sto interessando ai nuovi GC per JVM grazie anche all'ottima introduzione 
> di Simone.
>
> Ho l'impressione che ci sia ancora poca letteratura a riguardo, tra cui molti 
> articoli copia-incolla (spesso senza citare le fonti).
>
>
> Volevo approfondire la questione, farmi una idea più precisa e poter 
> comprendere meglio come, sul campo, si differenziano queste nuove soluzioni 
> (specialmente in termini di prestazioni che dipendono da molteplici fattori).
>
>
> Ad oggi sono diventato simpatizzante di Shenandoah, ho l'impressione sia 
> decisamente più maturo (e pronto per la produzione) di ZGC, praticamente una 
> scelta obbligata con JVM pre 12, per heap fino a 32 GB o superiori ai 4 TB, 
> forse anche preferibile in architetture non Sparc.

La mia impressione è che Shenandoah sia più sofisticato di ZGC.
C'è più attenzione ai casi estremi dove il GC è in difficoltà a causa
della mancanza di memoria, c'è la possibilità di specificare delle
euristiche diverse, ecc.
Con questa maggior sofisticazione c'è anche il rischio di complicarsi
la vita e di effettuare un tuning o scegliere delle configurazioni non
ottimali.

Secondo me il plus di ZGC è la sua semplicità.
Se non hai problemi di RAM, imposti uno heap generoso e ZGC fa il resto.

Per tutti i GC, e quindi anche per Shenandoah e ZGC non vuoi mai
arrivare alla condizione in cui il GC è al limite e sta per finire in
FullGC o in allocation stall.
Da qui l'impostare uno heap generoso e sempre da qui forse gran parte
della sofisticazione di Shenandoah è qualcosa che magari non userai
mai.

Il plus di Shenandoah è il fatto che sia disponibile per JDK 8+ e per
tutte le piattaforme.
ZGC è solo per Linux x86_64 e stanno facendo il port su ARM (AArch64,
sperano di finirlo in tempo per JDK 13, c'è una deadline a metà
Giugno).

Nei miei benchmark, ZGC ha sempre avuto pause STW più corte di Shenandoah.
Parliamo di 2 ms per ZGC contro 4 ms di Shenandoah contro 40 ms di G1.
Quindi sembra che ZGC sia il doppio meglio di Shenandoah, ma parliamo
di valori assoluti molto piccoli in entrambi i casi.

A questo punto secondo me G1 è superato.
Non vedo nessun motivo di usare G1 quando puoi usare Shenandoah o ZGC.
Penso che il throughput sia paragonabile ma G1 ha delle pause STW
molto più lunghe.

-- 
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless.   Victoria Livschitz

Reply via email to