join / leave
Streamline is a Vrije Universiteit Amsterdam research project.
All code is made available under a mixed
GNU Lesser General Public
(LGPL) and Simplified BSD
:: beltway buffers
Beltway Buffers are ring buffers that can be shared between kernel
and application processes for fast streaming I/O. Some key
features of Beltway Buffers are
- Ease. All buffers present the POSIX File API (open, read, write, ...),
both in userspace and inside the kernel.
- Multiprocess. The runtime system detects open() calls for buffers that are
currently not mapped (such as kernel buffers) and automatically sets up
the necessary virtual memory mappings.
- Low Overhead. Synchronisation signals are adaptively throttled to minimize
context-switching yet maintain low latency bounds.
- Specialization. We have many different buffer implementations tailored to
different uses: blocking/non-blocking, multi-reader, fixed-size
and variable-sized slots, auto-resizing, etc.
- Copy Avoidance. One special implementation is that of "indirect buffers".
These rings only maintain pointers into
other buffers, to allow forwarding of traffic without copying. In read()
calls, indirect buffers silently resolve the referenced "data buffer" and
transparently return data from that buffer to the user.
check out the Beltway Buffers paper on our papers page.