title: Latency of accessing main memory is almost the same order of sending a packet
body: <p>Looking at Jeff Dean's famous latency guides </p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>Latency Comparison Numbers (~2012)
  ----------------------------------
  L1 cache reference                           0.5 ns
  Branch mispredict                            5   ns
  L2 cache reference                           7   ns                      14x L1 cache
  Mutex lock/unlock                           25   ns
  Main memory reference                      100   ns                      20x L2 cache, 200x L1 cache
  Compress 1K bytes with Zippy             3,000   ns        3 us
  Send 1K bytes over 1 Gbps network       10,000   ns       10 us
  Read 4K randomly from SSD*             150,000   ns      150 us          ~1GB/sec SSD
  Read 1 MB sequentially from memory     250,000   ns      250 us
  Round trip within same datacenter      500,000   ns      500 us
  Read 1 MB sequentially from SSD*     1,000,000   ns    1,000 us    1 ms  ~1GB/sec SSD, 4X memory
  Disk seek                           10,000,000   ns   10,000 us   10 ms  20x datacenter roundtrip
  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</code></pre>
  </div>
  </div>
  </p>
  
  <p>One thing which looks somewhat uncanny to me is the time taken to read 1MB sequentially from disk is only 10 times faster than sending a round trip packet across the Atlantic. Can anyone give me more intuition why this feels right.</p>