微爆發(microburst)
想像一條平常很安靜的鄉間小路,每隔幾分鐘會有一秒鐘,一百輛車首尾相接呼嘯而過,然後又空無一車。如果你每分鐘量一次車流,你會說這條路用得很少——但在那一秒裡它完全塞死了。微爆發就是網路版的這件事:一陣突然、極短、持續微秒到數毫秒的封包尖峰,短暫地壓垮一條連結或緩衝區,儘管那條連結的平均使用率看起來很從容。
具體來說,微爆發是一個極小的時間窗,其中封包的瞬時抵達率超過了某交換器埠的容量,於是多出來的封包必須在該埠的緩衝區裡排隊。若爆發夠大,緩衝區會塞滿、封包被丟(尾端丟棄,tail drop)。微爆發對一般監控是隱形的,因為工具通常以「秒」為單位回報平均速率,這把微秒級尖峰平滑成什麼都看不到——一個埠可以顯示 30% 的平均使用率,卻在不到一毫秒的爆發中悄悄丟封包。它們在資料中心自然地來自同步的傳送者(與 incast 背後相同的型態)、來自高速網路卡突發式的輸出、以及許多資料流恰好在同一瞬間達到尖峰。
為什麼重要:微爆發是資料中心封包遺失與延遲尖峰的一個主要隱藏原因,而它們之所以令人抓狂,正是因為平均值看起來沒事。它們是為什麼低延遲應用程式在乎緩衝區佔用率與尾端延遲、而不只是平均傳輸量,也是為什麼像 DCTCP 這類壅塞控制要盡量讓佇列保持短,好讓突發有地方去。緩解手段包括更深或共用的緩衝區、基於 ECN 的早期訊號、以及謹慎的流量塑形。誠實的提醒:你管不了你看不到的東西——要抓住微爆發需要細粒度的遙測(微秒解析度的緩衝區與佇列量測),而不是大多數儀表板顯示的逐秒平均值。
一個 10 Gbps 的交換器埠在儀表板上顯示平靜的 25% 平均使用率。然而某應用程式回報偶爾的封包遺失。一次微秒解析度的擷取揭露了真相:每次約 100 微秒間,數條資料流短暫地以快過 10 Gbps 的速度抵達、塞滿該埠的緩衝區,數個封包被尾端丟棄——一個被逐秒平均完全藏住的微爆發。
一個不到一毫秒的尖峰丟了封包,逐秒平均卻看起來沒事。
平均使用率可以把微爆發完全藏起來:一個平均 25% 的埠,仍可能在微秒級尖峰中丟封包。診斷它們需要細粒度、微秒解析度的遙測,而不是典型儀表板上那些被平滑過的逐秒圖。