3 ms·
I'd really like to see x86_64 servers that use direct memory-mapped IO to the SSD. Some add-in PCI cards already do (can't find the link right now). It would re
by sounds 14y ago
I'd really like to see x86_64 servers that use direct memory-mapped IO to the SSD. Some add-in PCI cards already do (can't find the link right now). It would really take Intel jumping on board for it to become the standard though.
More particularly, right now, assuming the app wants something from memory-mapped file, the process is:
1. app attempts to read some bytes
2. CPU page fault triggers a read by the kernel to get them from disk
3. kernel block layer locates bytes on disk
4. block read request submitted to storage subsystem
5. read request (probably merged with others, e.g. readahead) submitted to SATA controller
6. ATA command decoded by SSD
7. bytes sent back up the chain
(skipping the return trip up the chain for brevity)
Some PCI SSDs already make it possible for the kind of improvement that looks like this:
1. app opens a file
blocks mapped into app address space as read-only
- wmf 14y agoI'd really like to see x86_64 servers that use direct memory-mapped IO to the SSD. It's not clear whether this is as good an idea as people think. Flash is fast, but the difference between ~20 us and ~50 ns is still huge. You could end up wasting a lot of cycles while the processor is stalled. Also, there's no way for memory to report errors short of a machine check that (if you're lucky) kills the process. Fusion io is working on an intermediate approach that bypasses the OS but doesn't try to treat flash as memory.