We are working on a SSD-backed key-value solution with the following properties:
- Throughput: 10000 TPS; 50/50 puts/gets;
- Latency: 1ms average, 99.9th percentile 10ms
- Data volume: ~1 billion values, ~150 bytes each; 64-bit keys; random access, 20% of data fits RAM
We tried KyotoCabinet, LevelDB, and RethinkDB on commodity SSDs, with different Linux IO schedulers, ext3/xfs file systems; made a number of tests using Rebench; and found that in all cases:
- Read-only throughput/latency are very good
- Write/update-only throughout is moderate, but there are many high-latency outliers
- Mixed read/write workload causes catastrophic oscillation in throughput/latency even in case of direct access to the block device (bypassing the file system)
The picture below illustrates such behavior for KyotoCabinet (horizontal axis is time, three periods are clearly visible - read-only, mixed, update only).
The question is: is it possible to achieve low latency for described SLAs using SSDs and what key-value stores are recommended?

This is kind-of a harebrained idea but it MIGHT work. Let's assume that your SSD is 128GB.
Will the kernel be able to page stuff in and out fast enough? No way to know. That depends more on your hardware than the kernel.
Poul-Henning Kamp does something very similar to this in Varnish by making the kernel keep track of things (virtual vs physical memory) for Varnish rather than making Varnish do it. https://www.varnish-cache.org/trac/wiki/ArchitectNotes