3 ms·
I've done a C clean room version and I will say that the networking part is as important as the multi-threading the data structures: https://github.com/raitec
by injinj 5y ago
I've done a C clean room version and I will say that the networking part is as important as the multi-threading the data structures:
https://github.com/raitechnology/raids/ https://github.com/raitechnology/raids/.
If you go to the landing page of the above, scroll down to the bottom, there is a TCP bypass solution graphed, using Solarflare Open Onload and it is capable of running several times as fast as the Linux Kernel TCP. I didn't test Redis with Open Onload, but I'm pretty sure you'll get a similar results since TCP is a major performance bottleneck in Redis as well.
- anitil 5y agoDoes clean room in this case mean you didn't look at the Redis source? Is there some licensing condition where this is required?
- injinj 5y agoNo, I don't believe that's what it means in this case. I took the usage to mean that since Rust has memory model which is different enough from C to require a redesign. I looked at many implementations of Redis and read many KV papers. My redesign reason was similar to a "clean room Rust" reason, I desired a memory model that used shared memory that was independent of the protocol (Redis RESP in this case), allowing multiple processes with different types of protocol services to attach to it.