Cache

數據中心內的延遲是多少?我問這個假設有幾個數量級的差異

  • February 10, 2019

我試圖找出一些我無法找到好的答案的東西。

如果我說 REDIS 記憶體(或一些外部記憶體記憶體)位於數據中心,而應用程序伺服器位於同一數據中心,讀取數據的網路連接速度(延遲、吞吐量)將是多少這兩台機器之間?

例如,網路“速度”是否仍然比從 REDIS 上的記憶體中尋找我的數據的 RAM 的速度至少高一個數量級?

我的最終問題是——將這一切都保存在 REDIS 上的記憶體實際上是否提供了任何實用程序?與 REDIS 是否將這一切都記憶體到 SSD 形成對比?記憶體很貴。如果網路確實不是數據中心內的瓶頸,那麼記憶體就有價值。否則,它不會。

我想我的一般問題是,儘管數據中心存在大量未知數,並且無法概括以及差異,但我們是否在談論電腦系統中的記憶體延遲甚至是記憶體的 DC 內部的最佳網路之間的足夠數量級?減少延遲並不能顯著提高性能?我知道有很多變數,但它有多接近?這些變數真的很重要嗎?例如,採取雙曲線的立場,磁帶驅動器比網路慢得多,因此磁帶不適合記憶體。

“每個人都應該知道的延遲圖表”有幾個版本,例如:

問題是,實際上,不僅僅是延遲。這是多種因素的組合。

那麼,數據中心內的網路延遲是多少?延遲,好吧,我會說它“總是”低於 1 毫秒。它比 RAM 快嗎?不。它靠近 RAM 嗎?我不這麼認為。

但問題仍然存在,它是否相關。這是你需要知道的數據嗎?你的問題對我來說很有意義。由於一切都是有代價的,您是否應該獲得更多的 RAM,以便所有數據都可以保留在 RAM 中,或者不時從磁碟讀取是可以的。

您的“假設”是,如果網路延遲高於(慢)於 SSD 的速度,則將所有數據都保存在 RAM 中不會讓您受益,因為您的網路速度會很慢。

它看起來是這樣的。但是,您還必須考慮並發性。如果你一次收到1000個數據請求,磁碟可以做1000個並發請求嗎?當然不是,那麼處理這 1000 個請求需要多長時間?與記憶體相比?

很難將其歸結為單一因素,例如重載。但是,是的,如果您進行單個操作,那麼網路的延遲可能會導致您不會注意到 SSD 與 RAM 的區別。

就像在 12Gbps 磁碟出現在市場上之前一樣,10Gbps 網路鏈路不會因單個流而過載,因為磁碟是瓶頸。

但是請記住,您的磁碟正在執行許多其他操作,您的程序不是機器上的唯一程序,您的網路可能承載不同的東西,等等。

此外,並非所有磁碟活動都意味著網路流量。從應用程序到數據庫伺服器的數據庫查詢只是非常小的網路流量。來自數據庫伺服器的響應可能非常小(單個數字)或非常大(具有多個欄位的數千行)。要執行該操作,伺服器(無論是否是數據庫伺服器)可能需要進行多次磁碟查找、讀取和寫入,但僅通過網路發送很少的一部分。它絕對不是一對一的網路磁碟 RAM。


到目前為止,我避免了您問題的一些細節 - 特別是 Redis 部分。

Redis 是一個開源(BSD 許可)的記憶體資料結構儲存,用作數據庫、記憶體和消息代理。- https://redis.io/

好的,這意味著一切都在記憶體中。抱歉,這個快速的 SSD 驅動器在這裡幫不了你。Redis 可以將數據持久化到磁碟,因此可以在重新啟動後將其載入到 RAM 中。這只是為了不“失去”數據或在重啟後重新填充冷記憶體。因此,在這種情況下,無論如何,您都必須使用 RAM。您必須有足夠的 RAM 來容納您的數據集。沒有足夠的記憶體,我猜你的作業系統會使用swap- 可能不是一個好主意。

引用自:https://serverfault.com/questions/953169