November 2022 Summaries
1 posts from TigerBeetle
Filter
Month:
Year:
Post Summaries
Back to Blog
The text explores approaches to handling I/O operations in computing, focusing on the evolution from traditional blocking I/O to more efficient methods like io_uring on Linux and kqueue on FreeBSD/macOS. It discusses the inefficiencies of traditional system calls, which incur context switches and cache misses, and introduces batching and readiness techniques as solutions. The concept of a central I/O dispatch is presented, allowing business logic to be separated from I/O operations, with the flexibility to use either io_uring or kqueue based on the operating system. This abstraction is compared to existing libraries like libuv, used in Node.js, and TigerBeetle's I/O library, highlighting how they manage I/O operations efficiently by using a central dispatcher and avoiding direct system calls in userland. The text also touches on cross-platform support, noting the use of IOCP on Windows, and considers the benefits of a single-threaded event loop for deterministic simulation testing, while acknowledging alternative architectures for parallel workloads. Finally, it hints at the potential of creating a standalone, cross-platform evented I/O library in Zig, promising compatibility with any language supporting a C foreign function interface.
Nov 23, 2022
2,446 words in the original blog post.