<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          磁盤 IO 真的比網(wǎng)絡(luò) IO 快嗎?

          共 1639字,需瀏覽 4分鐘

           ·

          2021-10-22 16:12


          Google大神 Jeff Dean在之前的一次演講中展示了這樣一張表,非常有意思:

          13d060fbef8d313af6eaf27d287d09f4.webp

          從這張圖里我們可以清楚的看到,計算機(jī)系統(tǒng)中各種關(guān)鍵操作其典型耗時到底有多少(注意,各種不同的系統(tǒng)架構(gòu)精確的數(shù)據(jù)可能與此不同,但數(shù)量級上差別應(yīng)該不會很大)。

          訪存與cache

          訪問L2 cache的時延大概是訪問L1 cache的10幾倍左右,而訪問一次內(nèi)存的時延則高達(dá)訪問L2 cache的20倍,是訪問L1cache耗時的200倍。這一部分清楚的告訴每個程序員,編寫出對cache友好的程序是至關(guān)重要的,尤其你的場景如果對性能要求很高則更是如此。

          d021621caa7993fb1e7f34885aace975.webp

          分支預(yù)測失敗的懲罰大概只有5ns這個量級,博主在之前的文章《特斯拉遇上CPU:程序員的心思你別猜》這篇文章中專門講解過CPU的分支預(yù)測功能。
          分支預(yù)測
          該功能主要針對 if 語句,由于現(xiàn)代CPU內(nèi)部采用流水線方式來處理機(jī)器指令,因此在 if 對應(yīng)的機(jī)器指令還沒有執(zhí)行完時后續(xù)指令就要進(jìn)到流水線中,此時CPU就必須猜測到底 if 語句是否為真,如果CPU猜對了,那么流水線照常運行,但如果猜錯了流水線中已經(jīng)被執(zhí)行的一部分指令就要作廢。

          67f423feeaff56d13db2b8adcec0f65f.webp

          很多同學(xué)看到這篇文章后表示if語句是不是盡量少用,從這張表可以看出,分支預(yù)測失敗的懲罰不高,并且現(xiàn)代CPU的分支預(yù)測成功率很高,根本不必在意這點性能損失。
          內(nèi)存、SSD與磁盤
          程序員都知道訪問內(nèi)存的速度比SSD塊,訪問SSD速度比磁盤快,那么到底能快多少呢?同樣順序讀取1MB數(shù)據(jù),內(nèi)存花費的時間為250,000 ns,SSD為1,000,000 ns,磁盤為20,000,000 ns。我們可以看到,同樣讀取1MB數(shù)據(jù),磁盤花費的時間是 SSD 的 20 倍,是內(nèi)存的80倍。

          fe8cab6df9a54bd88e4316fd314c14eb.webp

          同樣讀取1MB數(shù)據(jù),SSD耗時是內(nèi)存的4倍。這組數(shù)據(jù)告訴我們,相對內(nèi)存來說磁盤真的很慢,如果你的經(jīng)費充足就用SSD吧,如果你是土豪,那么就把數(shù)據(jù)庫直接放到內(nèi)存吧。
          網(wǎng)絡(luò)與磁盤
          一般來說我們認(rèn)為內(nèi)存比磁盤快,磁盤比網(wǎng)絡(luò)快,但這這張表告訴我們用1Gbps網(wǎng)絡(luò)發(fā)送1K數(shù)據(jù)僅僅需要20,000 ns,而磁盤的一次尋道則高達(dá)10,000,000ns(10ms),網(wǎng)絡(luò)IO可不一定比磁盤IO慢。當(dāng)然,這也要看網(wǎng)絡(luò)兩端距離有多遠(yuǎn)。
          網(wǎng)絡(luò)
          想測量數(shù)據(jù)包在網(wǎng)絡(luò)兩端來回一趟需要耗時多少?ping命令再簡單方便不過了。首先,博主在數(shù)據(jù)中心內(nèi)部ping一臺主機(jī)(注:ip地址用*來代替):

          ddcd848ae304c2d2c3dd9d470ea55533.webp

          一圈下來耗時僅在100 us左右,速度非常快,在數(shù)據(jù)中心內(nèi)部空間距離幾乎可以忽略不計。bcf2f46566e6dfcbd2baf2d47061c3c1.webp
          我的坐標(biāo)在北京,接下來我們ping一下清華大學(xué),哈哈,注意現(xiàn)在由于云服務(wù)商的存在,清華大學(xué)的官網(wǎng)服務(wù)器主機(jī)可不一定在清華大學(xué)里,為簡單起見我們認(rèn)為所ping的機(jī)器都在相應(yīng)的地理位置上。

          c1bcc178eb8e0b5ca49e36094236c06a.webp

          這個耗時就很可觀了,我們姑且用市中心到清華大學(xué)的直線距離評估一下數(shù)據(jù)包路徑長度(實際數(shù)據(jù)包的路徑肯定和這里不同),可以看到大概在10公里左右的數(shù)量級,用時將近10ms,不要覺得10ms很耗時,磁盤一次seek就是這個量級。

          8f179ad4d5d11ae30e3115c2f38406e8.webp

          接下來出個省,ping一下浙大:

          b198ac2e74631fea7dca78eb0c1702e4.webp

          出了省就是不一樣,北京與浙江的直線距離大概在1200公里,網(wǎng)絡(luò)上走一圈耗時來到了將近15ms。

          58d3fed1ed7ce1fb19d23310818295a4.webp

          接著我們出趟國吧,去英國轉(zhuǎn)一圈,ping下牛津大學(xué):

          7d423f0f08c94f7d07b01ff70ab5f65e.webp

          出了國就更不一樣了,北京與英國直線距離(球體表面)大概在7000公里,網(wǎng)絡(luò)耗時將近50ms。

          0edfeea8dafba4c77aea7bdb307fd8e8.webp

          最后讓我們?nèi)ヌ嗣绹琾ing下斯坦福大學(xué):

          48753e651c7655fbedbeca025cbaf6b2.webp

          和預(yù)想的差不多,北京與斯坦福直線距離大概在10000公里,耗時也在50ms左右。

          006e4bd73bde61e759f0f9b4c9e9b016.webp

          從這組測試我們可以看出,網(wǎng)絡(luò)的耗時和空間距離有很大關(guān)系,但在數(shù)據(jù)中心內(nèi)部網(wǎng)絡(luò)其實是非??斓?,這一點在進(jìn)行系統(tǒng)設(shè)計時需要意識到。
          總結(jié)
          系統(tǒng)設(shè)計一種工程實踐,不是藝術(shù)遐想,每一個關(guān)鍵決策都要有依據(jù)而不能拍腦袋,本文的這張表就是你的依據(jù)(之一)。希望這篇文章對大家理解系統(tǒng)時間有所幫助。
          8bca69f05c623edbfffd9daa13aab775.webp


          8232b3b3cd69d7ca677d7c32191658cd.webp

          【另類見解】那些要保證緩存和數(shù)據(jù)庫數(shù)據(jù)一致性的最后怎么了?


          4cd0c948cdb22adb99af4bcf73455cfa.webp

          最佳實踐:怎樣評估軟件開發(fā)時間


          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲一区无码在线 | 欧美网站在线播放 | 亚洲激情黄色视频 | 看A∨免费观看 | 俺来也,俺去也 |