Seastar: New C++ Framework for Web-scale Workloads

Feb 20th, 2015

Today, we are releasing Seastar, a new open-source C++
framework for extreme high-performance applications
on OSv and Linux. Seastar brings a 5x throughput
improvement to web-scale workloads, at millions of
transactions per second on a single server, and is
optimized for modern physical and virtual hardware.

Today’s server hardware is substantially different from
the machines for which today’s server software
was written. Multi-core design and complex
caching now require us to make new assumptions to
get good performance. And today’s more complex
workloads, where many microservices interact to
fulfil a single user request, are driving down the
latencies required at all layers of the stack. On
new hardware, the performance of standard workloads
depends more on locking and coordination across cores
than on performance of an individual core. And the
full-featured network stack of a conventional OS can
also use a majority of a server’s CPU cycles.

Seastar reaches linear scalability, as a
function of core count, by taking a shard-per-core
approach. SeaStar tasks do not depend on synchronous
data exchange with other cores which is usually
implemented by compare-exchange and similar locking
schemes. Instead, each core owns its resources (RAM,
NIC queue, CPU) and exchanges async messages with
remote cores. Seastar includes its own user-space
network stack, which runs on top of Data Plane
Development Kit (DPDK). All
network communications can take place without system
calls, and no data copying ever occurs. SeaStar is
event-driven and supports writing non-blocking,
asynchronous server code in a straightforward
manner that facilitates debugging and reasoning
about performance.

Seastar is currently focused on high-throughput,
low-latency network applications. For example,
it is useful for NoSQL servers, for data caches
such as memcached, and for high-performance HTTP
serving. Seastar is available today, under the Apache
license version 2.0.