News for hackers. Stuff that matters.
Re:The Case for a High-Level Kernel-Bypass I/O Abstraction by jdsully on Thursday May 23, 2019 @12:57PM (#19993508)
Network I/O is a major bottleneck for Redis but they leave a lot on the table by being single threaded. I can speak from experience because I maintain a Multithreaded Fork: https://github.com/JohnSully/KeyDB

KeyDB can easily get 2-3x the QPS with half the latency.

Re:The Case for a High-Level Kernel-Bypass I/O Abstraction by antirez on Friday May 24, 2019 @04:28PM (#20004997)
This is IMHO a wrong analysis. Redis can be scaled by being single threaded by running multiple processes: then if you remove the overhead of the network stack, each process can deliver more QPS, not just better latency. By using threads (which Redis now in parts also does, but and gets 2X performance by making threaded just 0.01% of the code, that is, a single function) you continue to incur in the I/O penalty, just amortized in more threads, but it continues to be a waste. Also the latency you measure as reduced with threads is an illusion: it happens only during benchmarks because the instance is saturated more when running on a single thread. If you measure single-request latencies, they are dominated by the network stack latency.
Re:The Case for a High-Level Kernel-Bypass I/O Abstraction by jdsully on Friday May 24, 2019 @07:54PM (#20006250)
The lower latency is not an illusion, it is indeed lower latency for servers with high load. If you don't have high load then I agree the need for threads is eliminated - but people using Redis for real work have traffic where this becomes an issue. Multiple processes require clustering or sharding each with its own set of overheads (both in CPU and human terms).

You and I disagree vehemently on this (hence the fork), but I really think your optimizing for your own simplicity not that of the user's. It should be the opposite since the developer has the most insight into the software.

Re:The Case for a High-Level Kernel-Bypass I/O Abstraction by antirez on Saturday May 25, 2019 @04:45AM (#20007803)
I don't think you understood my comment. What I mean is that regardless of what you think of Redis and threads the fact that doing IO is so wasteful and adds latency and CPU time remains and is a constant.
Re:The Case for a High-Level Kernel-Bypass I/O Abstraction by BubRoss on Friday May 24, 2019 @07:36PM (#20006184)
How do those processes communicate?