3 ms·
Hi! From ScyllaDB here. There are a few things that help us really get the most out of hardware and network IO. 1. Async everywhere - We use AIO and io_uring t
by PeterCorless 6y ago
Hi! From ScyllaDB here. There are a few things that help us really get the most out of hardware and network IO.
1. Async everywhere - We use AIO and io_uring to make sure that your inter-core communications are non-blocking.
2. Shard-per-core - It also helps if specific data is pinned to a specific CPU, so we partition on a per-core basis. Avoids cross-CPU traffic and, again, less blocking.
3. Schedulers - Yes, we have our own IO scheduler and CPU scheduler. We try to get every cycle out of a CPU. Java is very "slushy" and though you can tune a JVM it is never going to be as "tight" performance-wise.
4. Direct-attached NVMe > networked-attached block storage. I mean... yeah.
We're making Scylla even faster now, so you might want to check out our blogs on Project Circe:
• Introducing Project Circe: https://www.scylladb.com/2021/01/12/making-scylla-a-monstrous-database-introducing-project-circe/ https://www.scylladb.com/2021/01/12/making-scylla-a-monstrou...
• Project Circe January Update: https://www.scylladb.com/2021/01/28/project-circe-january-update/ https://www.scylladb.com/2021/01/28/project-circe-january-up...
The latter has more on our new scheduler 2.0 design.