results: tokio-epoll-uring 3.3kGetPage/s@240k IOPS, std-fs: 1.2kGetPage/s@80k IOPS

We have immense read amplification, I think we read the same blk
multiple times during one getpage request.

Before the switch to O_DIRECT, we'd go to the kernel page cache
many times. std-fs has an edge there, it's more efficient than
tokio-epoll-uring for workloads that have a high kernel page cache hit
rate.

With O_DIRECT, we now go to the disk for each read, making the inefficiency apparent.
tokio-epoll-uring is mcuh better there, as we can see it can drive up to
240k IOPS, which is 2GiBs random 8k reads, which afaik is the max that
the EC2 NVMe allows.
CPU isn't near 100%.
SO, we're IO bound.

Idea to try out to reduce the read amplification: request-local page cache.
This commit is contained in:
Christian Schwarz
2024-01-29 16:21:22 +00:00
parent aca2d7bdea
commit 21a11822e8

Diff Content Not Available