JUG Milano Meeting #140
15 Dec 2022
Game of Loom: implementation patterns and performance implications playing with virtual threads
Programma
- 19:00 JUG news ed attività in corso
- 19:10 Game of Loom: implementation patterns and performance implications playing with virtual threads, a cura di Mario Fusco
- 20:30 Chiusura lavori
Abstract dell'intervento:
I virtual thread saranno molto probabilmente il prossimo grande punto di svolta nell'ecosistema Java, consentendo di avere la scalabilità dei modelli di programmazione asincrona con la semplicità del codice sincrono. La loro caratteristica principale, a differenza dei thread nativi che sono una risorsa costosa e quindi scarsa, consiste nella possibilità di creare tutti i virtual thread che si desidera con un impatto sul consumo di memoria e sulle prestazioni molto più limitato rispetto a quelli nativi. Ma è sempre vero? Quali sono i costi della schedulazione di migliaia o addirittura milioni di virtual thread? Il context switch più frequente ha implicazioni sulle prestazioni? Che dire dei cache miss che questi context switch potrebbero potenzialmente implicare? Durante questo intervento cercheremo di rispondere a queste domande in modo divertente, analizzando un'implementazione del tradizionale Conway's Game of Life basato sul modello dei processi sequenziali comunicanti (CSP) e utilizzando sia thread virtuali che nativi con diversi algoritmi per confrontare le loro prestazioni. Sulla base di questa analisi cercheremo anche di derivare alcune regole empiriche su quando e come utilizzare i virtual thread.
I virtual thread saranno molto probabilmente il prossimo grande punto di svolta nell'ecosistema Java, consentendo di avere la scalabilità dei modelli di programmazione asincrona con la semplicità del codice sincrono. La loro caratteristica principale, a differenza dei thread nativi che sono una risorsa costosa e quindi scarsa, consiste nella possibilità di creare tutti i virtual thread che si desidera con un impatto sul consumo di memoria e sulle prestazioni molto più limitato rispetto a quelli nativi. Ma è sempre vero? Quali sono i costi della schedulazione di migliaia o addirittura milioni di virtual thread? Il context switch più frequente ha implicazioni sulle prestazioni? Che dire dei cache miss che questi context switch potrebbero potenzialmente implicare? Durante questo intervento cercheremo di rispondere a queste domande in modo divertente, analizzando un'implementazione del tradizionale Conway's Game of Life basato sul modello dei processi sequenziali comunicanti (CSP) e utilizzando sia thread virtuali che nativi con diversi algoritmi per confrontare le loro prestazioni. Sulla base di questa analisi cercheremo anche di derivare alcune regole empiriche su quando e come utilizzare i virtual thread.
A cura di Mario Fusco:
Mario is a senior principal software engineer at Red Hat working as Drools project lead. Among his interests there are also functional programming and Domain Specific Languages. He is also a Java Champion, the JUG Milano coordinator, a frequent speaker and the co-author of "Modern Java in Action" published by Manning.
Mario is a senior principal software engineer at Red Hat working as Drools project lead. Among his interests there are also functional programming and Domain Specific Languages. He is also a Java Champion, the JUG Milano coordinator, a frequent speaker and the co-author of "Modern Java in Action" published by Manning.