COREC: Concurrent Non-Blocking Single-Queue Receive Driver for Low Latency Networking

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Faltelli, Marco, Belocchi, Giacomo, Quaglia, Francesco, Bianchi, Giuseppe
Format: Preprint
Published: 2024
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866909080650514432
author Faltelli, Marco
Belocchi, Giacomo
Quaglia, Francesco
Bianchi, Giuseppe
author_facet Faltelli, Marco
Belocchi, Giacomo
Quaglia, Francesco
Bianchi, Giuseppe
contents Existing network stacks tackle performance and scalability aspects by relying on multiple receive queues. However, at software level, each queue is processed by a single thread, which prevents simultaneous work on the same queue and limits performance in terms of tail latency. To overcome this limitation, we introduce COREC, the first software implementation of a concurrent non-blocking single-queue receive driver. By sharing a single queue among multiple threads, workload distribution is improved, leading to a work-conserving policy for network stacks. On the technical side, instead of relying on traditional critical sections - which would sequentialize the operations by threads - COREC coordinates the threads that concurrently access the same receive queue in non-blocking manner via atomic machine instructions from the Read-Modify-Write (RMW) class. These instructions allow threads to access and update memory locations atomically, based on specific conditions, such as the matching of a target value selected by the thread. Also, they enable making any update globally visible in the memory hierarchy, bypassing interference on memory consistency caused by the CPU store buffers. Extensive evaluation results demonstrate that the possible additional reordering, which our approach may occasionally cause, is non-critical and has minimal impact on performance, even in the worst-case scenario of a single large TCP flow, with performance impairments accounting to at most 2-3 percent. Conversely, substantial latency gains are achieved when handling UDP traffic, real-world traffic mix, and multiple shorter TCP flows.
format Preprint
id arxiv_https___arxiv_org_abs_2401_12815
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle COREC: Concurrent Non-Blocking Single-Queue Receive Driver for Low Latency Networking
Faltelli, Marco
Belocchi, Giacomo
Quaglia, Francesco
Bianchi, Giuseppe
Networking and Internet Architecture
Distributed, Parallel, and Cluster Computing
Existing network stacks tackle performance and scalability aspects by relying on multiple receive queues. However, at software level, each queue is processed by a single thread, which prevents simultaneous work on the same queue and limits performance in terms of tail latency. To overcome this limitation, we introduce COREC, the first software implementation of a concurrent non-blocking single-queue receive driver. By sharing a single queue among multiple threads, workload distribution is improved, leading to a work-conserving policy for network stacks. On the technical side, instead of relying on traditional critical sections - which would sequentialize the operations by threads - COREC coordinates the threads that concurrently access the same receive queue in non-blocking manner via atomic machine instructions from the Read-Modify-Write (RMW) class. These instructions allow threads to access and update memory locations atomically, based on specific conditions, such as the matching of a target value selected by the thread. Also, they enable making any update globally visible in the memory hierarchy, bypassing interference on memory consistency caused by the CPU store buffers. Extensive evaluation results demonstrate that the possible additional reordering, which our approach may occasionally cause, is non-critical and has minimal impact on performance, even in the worst-case scenario of a single large TCP flow, with performance impairments accounting to at most 2-3 percent. Conversely, substantial latency gains are achieved when handling UDP traffic, real-world traffic mix, and multiple shorter TCP flows.
title COREC: Concurrent Non-Blocking Single-Queue Receive Driver for Low Latency Networking
topic Networking and Internet Architecture
Distributed, Parallel, and Cluster Computing
url https://arxiv.org/abs/2401.12815