High performance server-side application framework
Clone or download
avikivity and duarten build: don't link with libgcc_s explicitly
This was only there to have ordering with libunwind. Now that we don't
link with libunwind, the compiler's implicit linkage with libgcc_s is
sufficient (and more portable).
Message-Id: <20180523133913.20085-1-avi@scylladb.com>
Latest commit d152f2d May 23, 2018
Permalink
Failed to load latest commit information.
apps iotune: move read_sys_file() to util/read_first_line.{cc,hh} Oct 11, 2018
c-ares @ fd6124c Add c-ares (dns query library) as submodule Feb 1, 2017
cmake-tests configure.py: Enhance detection for gcc -fvisibility=hidden bug May 5, 2018
cmake-tools build: Adjust DPDK options to fix compilation Apr 27, 2018
cmake Experimental CMake-based build system Apr 24, 2018
core scheduling: add std::hash<seastar::scheduling_group> Oct 17, 2018
debug debug: add latency detector script Nov 27, 2016
doc rpc: connection-level resource isolation Oct 5, 2018
docker/dev backtrace: drop libwind in favor of libc backtrace() May 23, 2018
dpdk @ a177465 Update dpdk submodule Jan 15, 2018
fmt @ f61e71c Update fmt submodule Jun 24, 2017
http Add compatbility with C++17's library types Aug 12, 2018
json core,json,net: silence GCC warnings Aug 17, 2018
kvm xen: remove May 27, 2017
licenses scripts: Scripts allowing to run a command in DPDK environment. Sep 20, 2015
net tls: include "api.hh" for listen_options Oct 5, 2018
proto Experimental CMake-based build system Apr 24, 2018
rpc rpc: connection-level resource isolation Oct 5, 2018
scripts scripts: perftune.py: prioritize I/O schedulers Sep 19, 2018
tests tests/perf: add flags for disabling stdout and enabling json Oct 9, 2018
util iotune: move read_sys_file() to util/read_first_line.{cc,hh} Oct 11, 2018
.gitattributes Add .gitattributes to improve 'git diff' output Nov 3, 2015
.gitignore .gitignore: adds __pycache__ directory Jul 7, 2018
.gitmodules Add c-ares (dns query library) as submodule Feb 1, 2017
.gitorderfile gitorderfile: make changes into *.py files appear first May 12, 2015
.travis.yml build: use 'ppa:scylladb/ppa' instead of URL for sourceline Sep 4, 2018
CMakeLists.txt build: don't link with libgcc_s explicitly Oct 18, 2018
CONTRIBUTING.md Add guidelines for contributing to Seastar Aug 9, 2017
Doxyfile doc: exclude non-API paths and symbols Apr 15, 2018
DoxygenLayout.xml docs: move detailed descriptions to top of page Apr 15, 2018
LICENSE Add LICENSE, NOTICE, and copyright headers to all source files. Feb 19, 2015
NOTICE NOTICE: mention dpdk Jun 24, 2015
README-DPDK.md dpdk: get rid of backward compatibility code Jul 28, 2015
README-OSv.md build: Prefix `DEFAULT_ALLOCATOR` Apr 27, 2018
README.md README.md: Add cute badges Aug 19, 2018
coding-style.md coding-style.md: introduce Jul 31, 2017
configure.py build: don't link with libgcc_s explicitly Oct 18, 2018
install-dependencies.sh backtrace: drop libwind in favor of libc backtrace() May 23, 2018
seastar_cmake.py build: Optional CMake forwarding for build and test May 8, 2018
test.py tests: add signal_test to test list Aug 29, 2018

README.md

Seastar

Travis Build Status Version License: Apache2 n00b issues

Introduction

SeaStar is an event-driven framework allowing you to write non-blocking, asynchronous code in a relatively straightforward manner (once understood). It is based on futures.

Building Seastar

See instructions for Fedora, CentOS and Ubuntu.

There are also instructions for building on any host that supports Docker.

Use of the DPDK is optional.

Using C++17

Seastar can be built with the C++17 dialect by supporting compilers, conditional on the --c++-dialect option being set to gnu++17.

However, by default Seastar uses C++14-compatible types such as std::experimental::optional<> or boost::variant, both internally and in its public API, thus forcing them on C++17 projects. To fix this, Seastar provides the --use-std-optional-variant-stringview 0|1 option, which changes those types to their stdlib incarnation, and allows seemless use of C++17. Usage of this option requires an updated compiler, such as GCC 8.1.1-5 on Fedora.

Getting started

There is a mini tutorial and a more comprehensive one.

The documentation is available on the web.

Resources

Ask questions and post patches on the development mailing list. Subscription information and archives are available here, or just send an email to seastar-dev@googlegroups.com.

Information can be found on the main project website.

File bug reports on the project issue tracker.

The Native TCP/IP Stack

Seastar comes with its own userspace TCP/IP stack for better performance.

Recommended hardware configuration for SeaStar

  • CPUs - As much as you need. SeaStar is highly friendly for multi-core and NUMA
  • NICs - As fast as possible, we recommend 10G or 40G cards. It's possible to use 1G too but you may be limited by their capacity. In addition, the more hardware queue per cpu the better for SeaStar. Otherwise we have to emulate that in software.
  • Disks - Fast SSDs with high number of IOPS.
  • Client machines - Usually a single client machine can't load our servers. Both memaslap (memcached) and WRK (httpd) cannot over load their matching server counter parts. We recommend running the client on different machine than the servers and use several of them.