Attack of the Killer Microseconds
This is a timely analysis. The virtual memory system, with its concept of paging to disk, is obsolete in the sense that hardly anybody that does bigger-than-ram computations rely on the kernel&#x27;s algorithms to manage it (<a href="https:&#x2F;&#x2F;scholar.google.com.au&#x2F;scholar?q=out+of+core+algorithms" rel="nofollow">https:&#x2F;&#x2F;scholar.google.com.au&#x2F;scholar?q=out+of+core+algorith...</a>).<p>The current paging system doesn&#x27;t have a sensible mechanism for flash-as-core memory (10x RAM latency, e.g. DDR4 12ns for first word, so 120ns), persistent memory in general, or using SSDs as an intermediate cache for data on disk. ZFS has some SSD caching but it is not really taking advantage of the very large and very fast devices now available.<p>So we do need new paradigms to use this effectively. I&#x27;d like to be able to reboot and keep running a program from its previous state, because it all sits in flash-core.<p>Also there is huge potential to move to more garbage collected memory storage systems. This goes hand in hand with systems which can progress concurrently, without the overhead of difficult multi-threaded code, such as parallel Haskell.<p>On the negative side, I find the use of the term &#x27;warehouse scale computing&#x27; to be stupidly buzzwordy.<p>From <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;jboner&#x2F;2841832" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;jboner&#x2F;2841832</a><p>L1 cache reference                           0.5 ns<p>Branch mispredict                            5   ns<p>L2 cache reference                           7   ns                      14x L1 cache<p>Mutex lock&#x2F;unlock                           25   ns<p>Main memory reference                      100   ns                      20x L2 cache, 200x L1 cache<p>Compress 1K bytes with Zippy             3,000   ns        3 us<p>Send 1K bytes over 1 Gbps network       10,000   ns       10 us<p>Read 4K randomly from SSD*             150,000   ns      150 us
          ~1GB&#x2F;sec SSD
Read 1 MB sequentially from memory     250,000   ns      250 us<p>Round trip within same datacenter      500,000   ns      500 us<p>Read 1 MB sequentially from SSD*     1,000,000   ns    1,000 us    1 ms  ~1GB&#x2F;sec SSD, 4X memory<p>Disk seek                           10,000,000   ns   10,000 us   10 ms  20x datacenter roundtrip<p>Read 1 MB sequentially from disk    20,000,000   ns   20,000 us   20 ms  80x memory, 20X SSD
Send packet CA-&gt;Netherlands-&gt;CA    150,000,000   ns  150,000 us  150 ms