EBS和EFS如何實現微秒延遲

EBS和EFS如何實現微秒延遲

我曾經監控過我的 EC2 實例中連接 EBS 卷的讀/寫 iowait,iowait 列輸出iostats僅為 200 ~ 500us,因為我知道 EBS 實際上是一個網絡卷,我認為本地網絡延遲應該在 ~10ms水平,EBS如何實現這個<1ms的延遲?

EFS 也有同樣的問題,我沒有測試 EFS,但在效能頁面中它顯示讀取延遲可以低至 250us。

https://docs.aws.amazon.com/efs/latest/ug/performance.html#performance-overview

答案1

拉起每個程式設計師都應該知道的延遲數字當進行粗略的延遲近似時。不是因為它準確,而是因為它傳達了數量級。

存在能夠實現數十微秒延遲的乙太網路交換器。穿過其中的一些即可到達同一(巨大)資料中心中的儲存節點。在這些路由器之間再增加幾微秒的傳輸時間。

關於儲存堆棧,亞毫秒級的總數排除了第一層中旋轉生鏽的可能性。即使在最好的情況下,硬碟陣列也需要幾毫秒的時間來進行尋道。顯然,正在使用固態存儲,I/O 操作也可能需要數十微秒。

假設一次讀取需要 250 微秒,那就沒有太多時間預算來遍歷儲存堆疊的各個層。將 IP 封包轉換為區塊操作,並讓某些作業系統執行這些操作,然後客戶端作業系統對它們執行某些操作。大概需要大量的工程工作來優化虛擬機器管理程式、作業系統、驅動程式和硬體。

注意EFS性能表具有圍繞令人驚嘆的低延遲的限定符“低至”。這不是服務等級協定。儘管你在實踐中很快就結束了。

還要注意,多區域儲存的寫入速度可能會慢一毫秒。這是將資料儲存在多個建築物中的持久性成本。僅僅是10公里外光纖中的光速僅增加 50 us 的傳播延遲。此路徑上有未知數量的額外開關。多個區域需要確認寫入,以便比一個區域具有更好的耐用性。仍然相當快,但並非同一機架中的所有快閃記憶體陣列都快。

免責聲明:這一切都是他們不共享的專有黑盒子。然而,值得理解的是,同一城市的專用網路可以實現比您想像的快 10 倍以上的延遲。有了足夠的工程。

相關內容