JUG Milano Meeting #140
Giovedì 15 Dicembre 2022
Game of Loom: implementation patterns and performance implications playing with virtual threads
La partecipazione in presenza è gratuita e libera, ma è OBBLIGATORIA la registrazione su:
form di registrazione per partecipare a JUG Milano in presenza
Prevediamo di effettuare la diretta streaming su YouTube (con VOD a seguire) dell'evento.
Prevediamo di effettuare la diretta streaming su YouTube (con VOD a seguire) dell'evento.
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.