general
news
downloads
projects
streamline
beltway buffers
pipesfs
model-t
documentation
introduction
papers
slides
videos
examples
dev. manual
code
mailing list
join / leave
archive
development
svn download
svn changelog
browse svn
people
Streamline is a Vrije Universiteit Amsterdam research project.
All code is made available under a mixed
GNU Lesser General Public
(LGPL) and Simplified BSD
license.
|
Streamline
:: about Beltway Buffers
Introduction
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.
Further reading
check out the Beltway Buffers paper on our publications page.
|