1. 每個(gè)程序員都應(yīng)該了解的延遲數(shù)字

        共 1418字,需瀏覽 3分鐘

         ·

        2024-01-05 09:22

        Jeff Dean 在他關(guān)于分布式系統(tǒng)的 ppt [1] 中列出了“每個(gè)程序員都應(yīng)該了解的數(shù)字(Numbers Everyone Should Know)”,對(duì)計(jì)算機(jī)各類操作的耗時(shí)做了大致估計(jì)。這些數(shù)字在很多地方都很有用, 了解這些數(shù)字有助于我們?cè)谙到y(tǒng)設(shè)計(jì)時(shí)比較不同的解決方案,挑選一個(gè)最優(yōu)的方案。

        這些數(shù)字大多是 2009 年給出的,計(jì)算機(jī)發(fā)展到今天, 內(nèi)存、SSD 和機(jī)械硬盤順序讀取速度有了非常大的提升,導(dǎo)致 這些數(shù)字有些過(guò)時(shí),下面給出2020年左右的一些數(shù)據(jù)。

        需要注意的是我們 重點(diǎn)在于關(guān)注這些延遲數(shù)據(jù)之間的數(shù)量級(jí)和比例 ,如寄存器/L1/L2緩存的訪問(wèn)時(shí)間在ns級(jí)別 左右;內(nèi)存訪問(wèn)速度大約是 磁盤訪問(wèn)速度的10w倍。而不是糾結(jié)于寄存器的訪問(wèn)時(shí)間究竟是幾ns,這也不可能有一個(gè)統(tǒng)一的答案,因?yàn)槊颗_(tái)計(jì)算機(jī)的硬件不一樣性能 也不一樣。

        1ns級(jí)別: 對(duì)cpu寄存器的訪問(wèn)在1ns這個(gè)級(jí)別?,F(xiàn)代cpu的時(shí)鐘周期也在1n秒范圍內(nèi)。

        ec2e1df5d8ea616099c821f835720b2c.webp

        1-10ns級(jí)別: L1/L2緩存的訪問(wèn)時(shí)間以及一些復(fù)雜的cpu指令(類似分支預(yù)測(cè)錯(cuò)誤懲罰)的執(zhí)行時(shí)間都在這個(gè)級(jí)別。

        72a1f618692b1cdbb4ed30d0a497fcc0.webp

        10-100ns級(jí)別 :L3緩存的訪問(wèn)時(shí)間在這個(gè)級(jí)別。

        a8b4d632f04ebaca852c218880495734.webp

        100-1000ns級(jí)別: Linux上一個(gè)簡(jiǎn)單的系統(tǒng)調(diào)用(只考慮系統(tǒng)陷入內(nèi)核直接返回的時(shí)間,不考慮執(zhí)行系統(tǒng)調(diào)用本身的時(shí)間)需要幾百ns;MD5生成 64位散列值大約需要200ns。

        54edc6f1b7231a68f56196a81a62779f.webp

        1-10us級(jí)別: Linux內(nèi)核上下文切換的時(shí)間;主內(nèi)存數(shù)據(jù)復(fù)制的時(shí)間級(jí)別。

        b344f74eddabae1519f299b1689a08cf.webp

        10-100us級(jí)別: Nginx大約需要50us處理一個(gè)http請(qǐng)求;順序從主存讀取1M數(shù)據(jù)大約是50us;

        4ef887d360a142bc0a2f077465d0c7a7.webp

        100-1000us級(jí)別: SSD寫入一頁(yè)大概需要1000us,區(qū)域內(nèi)網(wǎng)絡(luò)返回需要幾百us;Memcache/Redis的get操作大概在幾百到1000us。

        46be08c1e2cb04575de57ef97f705edc.webp

        6e06eb2262693aca5ee6fc713f58d032.webp

        1-10ms級(jí)別: 現(xiàn)代云網(wǎng)絡(luò)區(qū)域間的網(wǎng)絡(luò)往返時(shí)間在這個(gè)時(shí)間范圍;磁盤驅(qū)動(dòng)器的尋道時(shí)間在5ms左右(硬盤)。

        99d4252b2544a83142b1199def99c7cc.webp

        10-100ms級(jí)別: 從主內(nèi)存順序讀取1GB數(shù)據(jù)花費(fèi)的時(shí)間在這個(gè)范圍內(nèi)。

        4612e005fcc44e8ccbb0b868e2f5261b.webp

        100-1000ms級(jí)別: bcrypt加密需要的時(shí)間大約在300ms;TLS握手通常在250ms到500ms范圍;從SSD連續(xù)讀取1GB數(shù)據(jù)也是這個(gè)時(shí)間范圍。

        48702cbafc7056d2dbe2a98f89238174.webp

        ee5421a4d1300a7eb9b4a481429f123d.webp

        b393467576f2c50967fb77f2df9f7e76.webp

        1s級(jí)別: 相同的云區(qū)域內(nèi)通過(guò)網(wǎng)絡(luò)傳輸1GB數(shù)據(jù)大約需要10S。

        50eab2b3a3d878851346a64cfe1a2e45.webp

        1-10ms級(jí)別:L1/L2緩存的訪問(wèn)時(shí)間以及一些復(fù)雜的cpu指令的執(zhí)行時(shí)間都在這個(gè)級(jí)別。1-10ns級(jí)別: L1/L2緩存的訪問(wèn)時(shí)間以及一些復(fù)雜的cpu指令的執(zhí)行時(shí)間都在這個(gè)級(jí)別。

        推薦閱讀:

        完全整理 | 365篇高質(zhì)技術(shù)文章目錄整理

        算法之美 : 棧和隊(duì)列

        主宰這個(gè)世界的10大算法

        徹底理解cookie、session、token

        淺談什么是遞歸算法

        專注服務(wù)器后臺(tái)技術(shù)棧知識(shí)總結(jié)分享

        歡迎關(guān)注交流共同進(jìn)步

        碼農(nóng)有道  coding


        碼農(nóng)有道,為您提供通俗易懂的技術(shù)文章,讓技術(shù)變得更簡(jiǎn)單!

        瀏覽 168
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 天堂久久影院 | 亚洲系列 | 91三级片 | 天天插天天色 | 精品国产一区二区三区四区在线观看 |