tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Question about atomic FIFO/LIFO queues



Hi

I came across this page https://wiki.netbsd.org/projects/project/atomic_fifo_lifo_queues/

Recently, we have designed a high-performant (and what is also very important -- truly lock-free -- not just "lockless") and memory efficient FIFO queue based on ring buffers that use FAA (fetch-and-add) and traditional M&S queue as an outer layer (for unbounded queues).

The queue, is in some sense, an improved version of LCRQ, the fastest lock-free FIFO queue previously available, but it does *not* require double-width CAS (cmpxchg16b) and we also made more memory efficient.

You can take a look at our recent paper:
http://drops.dagstuhl.de/opus/volltexte/2019/11335/pdf/LIPIcs-DISC-2019-28.pdf

C source code is also available: https://github.com/rusnikola/lfqueue

It seems like the new NetBSD network stack will require some new scalable multiprocessor data structures. We would be glad to discuss if our queue can potentially meet those needs.

From the page above, it seems you want to have FIFO+LIFO in the same package. It is probably possible to do that but how critical is this requirement? The reason I ask is because FIFO and LIFO need entirely different approaches for good performance, so I was wondering if that is a fundamental requirement.

Thanks,
Ruslan Nikolaev



Home | Main Index | Thread Index | Old Index