Latency and Throughput

Latency,中文譯做延遲。Throughput,中文譯做吞吐量。它們是衡量軟件系統的最多見的兩個指標。性能優化

    延遲通常包括單向延遲(One-way Latency)和往返延遲(Round Trip Latency),實際測量時通常取往返延遲。它的單位通常是ms、s、min、h等。服務器

    而吞吐量通常指至關一段時間內測量出來的系統單位時間處理的任務數或事務數(TPS)。注意「至關一段時間」,不是幾秒,而多是十幾分鍾、半個小時、一天、幾周甚至幾月。它的單位通常是TPS、每單位時間寫入磁盤的字節數等。網絡

    思考一個問題:併發

低延遲必定意味着高吞吐量嗎?若是不是,試舉出反例。

    假若有一個網站系統,客戶端每次請求網站服務端,網絡傳輸時間(包括往返)爲 200ms,服務端處理請求爲10ms。那麼若是是同步請求,則延遲爲210ms。此時若是提升網絡傳輸速度,好比提升到100ms,那麼延遲爲110ms。這種狀況減小延遲彷佛確實能夠必定程度提升吞吐量,緣由主要在於:系統性能瓶頸不在於服務端處理速度,而在於網絡傳輸速度。異步

    繼續假設將同步請求改成異步請求,那麼如今延遲爲100ms,延遲下降了,但吞吐量保持不變。因此這是一個反例。wordpress

    除了上面這個反例外,還有一個更生動的反例:性能

 

火車、飛機運煤:從山西到廣州運煤,一列火車100小時(包括往返)能夠運輸10000t煤,而一架飛機20小時(包括往返)能夠運輸100t煤測試

 顯然飛機運煤的延遲明顯低於火車運煤,但若是測試運10000t煤,則火車運煤的吞吐量遠高於飛機:優化

  • 火車運煤的吞吐量爲100t/小時
  • 飛機運煤的吞吐量爲5t/小時

    咱們能夠將上面的運煤場景類比軟件系統,火車、飛機運煤能夠比做Web服務器處理請求,好比Apache和Nginx。在併發請求數不高時,好比10000(我假設的)如下時,也許Apache的吞吐量可能優於Nginx,但在大於10000時Apache的吞吐量就開始急劇降低,而Nginx的吞吐量相對以前比較穩定。因此比較Web服務器的吞吐量時,必須觀察在併發請求數逐漸遞增狀況下它們各自的表現。網站

 

    根據延遲和吞吐量咱們還能夠計算併發度(Concurrency),公式以下:

  併發度 = 吞吐量 * 延遲

  

好比一個任務的處理花費1ms,吞吐量爲1000tps,那麼併發度就等於1/1000*1000=1,能夠得出任務處理線程模型是單線程模型。

又好比一個HDD磁盤的延遲爲8ms,但吞吐量能夠達到每秒鐘寫40MB,那麼每次磁盤尋道能夠寫入的數據量爲(40*10^6) * (8*10^-3)B = 320,000B = 320KB。 

 

吞吐量和延遲

下面的比喻是關於吞吐量(throughput)和延遲(latency)的。若是你要搞網絡性能優化,這兩個概念是你必需要知道的,它們看似簡單實則不是。我相信包括我在內的不少人都曾經認爲大的吞吐量就意味着低延遲,高延遲就意味着吞吐量變小。下面的比喻能夠解釋這種觀點根本不對。該比喻來自這裏,我來作個大致意譯(非逐字翻譯)。

咱們能夠把網絡發送數據包比喻成去街邊的 ATM 取錢。每個人從開始使用 ATM 到取錢結束整個過程都須要一分鐘,因此這裏的延遲是60秒,那吞吐量呢?固然是 1/60 人/秒。如今銀行升級了他們的 ATM 機操做系統,每一個人只要30秒就能夠完成取款了!延遲是 30秒,吞吐量是 1/30 人/秒。很好理解,但是前面的問題依然存在對不對?別慌,看下面。

由於這附近來取錢的人比較多,如今銀行決定在這裏增長一臺 ATM 機,一共有兩臺 ATM 機了。如今,一分鐘可讓4我的完成取錢了,雖然你去排隊取錢時在 ATM 機前仍是要用 30 秒!也就是說,延遲沒有變,但吞吐量增大了!可見,吞吐量能夠不用經過減少延遲來提升。

好了,如今銀行爲了改進服務又作出了一個新的決定:每一個來取錢的客戶在取完錢以後必須在旁邊填寫一個調查問卷,用時也是30秒。那麼,如今你去取錢的話從開始使用 ATM 到完成調查問卷離開的時間又是 60 秒了!換句話說,延遲是60秒。而吞吐量根本沒變!一分鐘以內仍是能夠進來4我的!可見,延遲增長了,而吞吐量沒有變。

從這個比喻中咱們能夠看出,延遲測量的是每一個客戶(每一個應用程序)感覺到的時間長短,而吞吐量測量的是整個銀行(整個操做系統)的處理效率,是兩個徹底不一樣的概念。用做者的原話說是:

In short, the throughput is a function of how many stages are in parallel while latency is a function of how many are in series when there are multiple stages in the processing. The stage with the lowest throughput determines the overall throughput.

正如銀行爲了讓客戶滿意不光要提升自身的辦事效率外,還要儘可能縮短客戶在銀行辦事所花的時間同樣,操做系統不光要儘可能讓網絡吞吐量大,並且還要讓每一個應用程序發送數據的延遲儘可能小。這是兩個不一樣的目標。

相關文章
相關標籤/搜索