Comment

Comment by amluto

> While you were context-switching into this OS server you missed the chance to do 10 IOPs give or take an order of magnitude.

I'll believe that when I see real numbers.

A system call takes something like 54 ns on my laptop. With pwritev or similar, you can do quite a few IOs in a system call. (Of course, pwritev is slower than 54 ns, but that's not a fundamental constraint.)

An IO requires making the IO durable if you want it to be reliably persistent. So you have to do CLWB; SFENCE; PCOMMIT; SFENCE or whatever magic sequence you're using (depends on IO type and use of nontemporal instructions, (and you have to have hardware that supports that). If you're using NVMe instead of NVDIMMs, then you have to do an IO to sync with the controller, and that IO will be uncached.

Uncached IO is slow. PCOMMIT has unknown performance since no one has the hardware yet. System calls are fast.

parent amluto 10 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton