網路現在比磁碟快嗎?
這是一個軟體設計問題
我曾經致力於以下速度規則
cache memory > memory > disk > network
每一步是前一步的 5-10 倍(例如高速記憶體比主記憶體快 10 倍)。
現在,千兆乙太網的延遲似乎小於本地磁碟。因此,讀取大型遠端記憶體數據庫的操作可能比本地磁碟讀取更快。對於像我這樣的老前輩來說,這感覺像是異端邪說。(我只是花了一些時間在磁碟上建構本地記憶體以避免必須進行網路往返 - 因此我的問題)
有人在這方面有任何經驗/數字/建議嗎?
是的,我知道找出答案的唯一真正方法是建構和測量,但我想知道一般規則。
編輯:
這是來自最佳答案的有趣數據:
- 同一數據中心內的往返 500,000 ns
- 磁碟尋軌 10,000,000 ns
這對我來說是一個震驚;我的心理模型是網路往返本身就很慢。而且它不是 - 它比磁碟“往返”快 10 倍。
傑夫·阿特伍德(Jeff attwood)就主題http://blog.codinghorror.com/the-infinite-space-between-words/發布了這個很好的部落格
以下是您可能正在尋找的一些數字,正如 Google 研究員 Jeff Dean 所引用的:
> > > > > > ### 每個人都應該知道的數字 > > > > > > > >
> > L1 cache reference 0.5 ns > > Branch mispredict 5 ns > > L2 cache reference 7 ns > > Mutex lock/unlock 100 ns (25) > > Main memory reference 100 ns > > Compress 1K bytes with Zippy 10,000 ns (3,000) > > Send 2K bytes over 1 Gbps network 20,000 ns > > Read 1 MB sequentially from memory 250,000 ns > > Round trip within same datacenter 500,000 ns > > Disk seek 10,000,000 ns > > Read 1 MB sequentially from network 10,000,000 ns > > Read 1 MB sequentially from disk 30,000,000 ns (20,000,000) > > Send packet CA->Netherlands->CA 150,000,000 ns > > > >
> > > > > > >來自他的演講,題為“建構大型分佈式系統的設計、經驗教訓和建議” ,您可以在這裡獲得:
該演講是在2009 年大型分佈式系統和中間件 (LADIS)上發表的。
其他資訊
- Google 專業提示:使用背面計算來選擇最佳設計
- 斯坦福大學 295 場演講來自建構大型分佈式系統的軟體工程建議
據說gcc -O4 將您的程式碼通過電子郵件發送給 Jeff Dean 以進行重寫。