Modern programming paradigms heavily rely on the concept of parallel programming and multi-threading. As a consequence, it has been possible to observe an increase in the need to efficiently communicate, synchronize and share data structures between threads. Conventional synchronization mechanisms are based on the concept of locking. In general, such approaches have an advantage when there is low contention over the lock; while, on the other hand, under conditions of high contention, delegation as ffwd has been proven to provide better performance in terms of both throughput and latency. Nevertheless, soa implementation of delegation as Gepard requires to dedicate one, or possibly more, cores to act as servers (the concept of server and how delegation works are going to be explained in the following Chapters). Often such servers are not very busy, instead they are just busy-waiting, until some work arrives. We show how this limitation can be bypassed in designated delegation with little or no overhead and how our solution enables for an efficient implementation of a variation of standard delegation: flat delegation. Finally, we propose a third variation of delegation where the number of server can be adapted at run time based on the workload which we will call elastic delegation. We evaluate designated, flat and elastic delegation on a Fetch-And-Add benchmark under different load conditions and report latency and throughput results comparing against Gepard and conventional lock mechanisms.

I paradigmi di programmazione moderna dipendono in larga misura dai concetti di programmazione parallela e di multi-threading. Di conseguenza, e stato possibile osservare un incremento del bisogno di comunicare, sincronizzare e condividere efficientemente strutture dati fra threads. I sistemi di sincronizzazione convenzionali sono basati sul concetto di locking. In generale, approcci di questo tipo sono vantaggiosi quando il lock è poco conteso; mentre, al contrario, in condizioni di elevata contesa, la delegation come implementata in ffwd si è dimostrata essere migliore sia in termini di throughput che in termini di latenza. Ciononostante, lo Stato dell'Arte di delegation come implementato in Gepard richiede di dedicare uno, o più, core affinchè eseguano il ruolo di server (il concetto di server e di come la delegation funzioni saranno spiegati con maggior dettaglio nei prossimi capitoli). Spesso però, questi server sono poco occupati e spendono la maggior parte del tempo a scansionare gli slot di richieste a loro dedicati, in attesa che del lavoro arrivi. In questo lavoro di tesi dimostreremo come questa limitazione può essere eliminata con quella che chiameremo designated delegation pagando un costo minimo. Inoltre, mostreremo come questo approccio sblocchi la possibilità di due nuove implementazioni di delegation: flat delegation ed elastic delegation. Infine valuteremo e valideremo le tre varianti di delegation proposte tramite un benchmark di Fetch-And-Add, variando condizioni di carico e riportando misure di throughput e latenza confrontate allo Stato dell'Arte e a sistemi di locking tradizionali.

Three variations of delegation

MONTANARI, CLAUDIO
2019/2020

Abstract

Modern programming paradigms heavily rely on the concept of parallel programming and multi-threading. As a consequence, it has been possible to observe an increase in the need to efficiently communicate, synchronize and share data structures between threads. Conventional synchronization mechanisms are based on the concept of locking. In general, such approaches have an advantage when there is low contention over the lock; while, on the other hand, under conditions of high contention, delegation as ffwd has been proven to provide better performance in terms of both throughput and latency. Nevertheless, soa implementation of delegation as Gepard requires to dedicate one, or possibly more, cores to act as servers (the concept of server and how delegation works are going to be explained in the following Chapters). Often such servers are not very busy, instead they are just busy-waiting, until some work arrives. We show how this limitation can be bypassed in designated delegation with little or no overhead and how our solution enables for an efficient implementation of a variation of standard delegation: flat delegation. Finally, we propose a third variation of delegation where the number of server can be adapted at run time based on the workload which we will call elastic delegation. We evaluate designated, flat and elastic delegation on a Fetch-And-Add benchmark under different load conditions and report latency and throughput results comparing against Gepard and conventional lock mechanisms.
ING - Scuola di Ingegneria Industriale e dell'Informazione
24-lug-2020
2019/2020
I paradigmi di programmazione moderna dipendono in larga misura dai concetti di programmazione parallela e di multi-threading. Di conseguenza, e stato possibile osservare un incremento del bisogno di comunicare, sincronizzare e condividere efficientemente strutture dati fra threads. I sistemi di sincronizzazione convenzionali sono basati sul concetto di locking. In generale, approcci di questo tipo sono vantaggiosi quando il lock è poco conteso; mentre, al contrario, in condizioni di elevata contesa, la delegation come implementata in ffwd si è dimostrata essere migliore sia in termini di throughput che in termini di latenza. Ciononostante, lo Stato dell'Arte di delegation come implementato in Gepard richiede di dedicare uno, o più, core affinchè eseguano il ruolo di server (il concetto di server e di come la delegation funzioni saranno spiegati con maggior dettaglio nei prossimi capitoli). Spesso però, questi server sono poco occupati e spendono la maggior parte del tempo a scansionare gli slot di richieste a loro dedicati, in attesa che del lavoro arrivi. In questo lavoro di tesi dimostreremo come questa limitazione può essere eliminata con quella che chiameremo designated delegation pagando un costo minimo. Inoltre, mostreremo come questo approccio sblocchi la possibilità di due nuove implementazioni di delegation: flat delegation ed elastic delegation. Infine valuteremo e valideremo le tre varianti di delegation proposte tramite un benchmark di Fetch-And-Add, variando condizioni di carico e riportando misure di throughput e latenza confrontate allo Stato dell'Arte e a sistemi di locking tradizionali.
File allegati
File Dimensione Formato  
thesis.pdf

Open Access dal 10/07/2021

Descrizione: Thesis final
Dimensione 726.67 kB
Formato Adobe PDF
726.67 kB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/164865