我們在之前的文章中介紹了一張出自Google大神 Jeff Dean的圖,這張圖展示系統中各種關鍵操作的時延具體有多少。
需要注意的是這張圖上的資料自2012年後就沒有再更新過了,統計自2020年的最新資料見這裡:
這張圖中一個小的黑方塊代表1納秒,一個藍色的方塊代表100納秒,一個綠色的方塊代表10微秒,一個紅色的方塊代表1毫秒。
儘管這種表示方法已經比第一張圖形象很多了,但在我們(人類)看來對這些納秒沒太多概念,畢竟人類的反應時間僅僅0.2 -0.3秒,比這更短的時間人類是沒有太多感覺的。
為了讓大家能更加直觀的感受速度差異,我們依然以第一張表為例,並且把計算機世界中的0.5納秒當做1秒來換算一下,這樣你就能清楚的感受到這些計算機世界中各個硬體巨大的速度差異了。
我們再來看一下:
現在就很有意思了,假定L1 cache的訪問延遲為1s,那麼訪問記憶體的延遲就高達3分鐘。
從記憶體上讀取1MB資料需要5天,從SSD上讀取1MB需要20天,磁碟上讀取1MB資料高達1年的時間。
更有趣的來了,假設物理機重啟的時間為2分鐘,如果也將0.5ns視為1s的話那麼2分鐘就相當於5600年,中華文明上下五千年,大概就是這樣一個尺度。
現在你應該能直觀地感受到CPU的速度到底有多快了吧。
以上都是基於時間維度換算的。
接下來我們基於距離維度進行了一次更有意思的換算。
CPU訪問L1 cache 的時延為0.5ns,假定在這個時間尺度下我們能行走1米,大概是你從家裡走兩步拿個快遞的距離。
CPU訪問記憶體的時延裡我們可以行走200米,大概是你出門去個便利店的距離。
CPU從記憶體中讀取1MB的時延我們可以行走500公里,這個距離大概是從北京到青島的直線距離。
網路包在資料中心內部走一圈的時延可以讓我們行走1000公里,大概是從北京到上海的直線距離。
從SSD中讀取1MB的時延可以讓我們行走2000公里,大概是從北京到深圳的距離。
從磁碟中讀取1MB的時延可以讓我們行走40000公里,正好是圍繞地球轉一圈的距離。
而網路資料包從美國加利福尼亞到荷蘭轉一圈的時延可以讓我們行走30萬公里,正好是從地球到月球的距離。
物理機一次重啟的時延可以讓我們行走1.2億公里,差不多是從地球到火星的距離。
現在你應該對計算機系統中各種時延有一個直觀上的認知了吧。