1G緩存的機械硬碟,拷貝文件是否只是前幾秒快一些?

全球最快?Buffalo 巴法絡 HD-GDU3 移動硬碟(400MB/s、1GB緩存、3TB容量、USB3.0) 20366日元 看到評論裡面說的 : "緩存才1G,就算寫入速度峰值400M,2.5秒緩存就光了,但是硬碟的寫入速度不會高於100M,就算3秒,也就算只能3秒,下面就龜速了,是不是這個意思?" , 求解釋


現實中很少會出現你以400MBps的速度長時間寫入的情況。試想下你每星期會有幾次向移動硬碟寫入超過1GB的數據?

實際上緩存是基於程序執行和數據訪問的局部性原理設計的。也就是假設在一定的時間內,一個程序執行的代碼和訪問的數據都是在一定區域內的。這樣,在這段時間裡需要重複使用的數據(代碼也是一種數據,雖然的確可以分開處理,但原理相同)可以直接從緩存中獲得,而不必去訪問速度較慢的存儲設備,從而縮短時間提高效率。

的確,如果拷一個50GB的電影,緩存的確沒什麼太大的意義:因為這50GB的數據完全沒有局部性可言。

參見: Locality of reference (沒有中文版)


機械硬碟的讀寫取決於兩個方面,尋道速度和順序讀寫速度。緩存是為了避免不必要的重新尋道。拷貝大文件則主要是順序讀寫(在 OS 避免磁碟碎片的前提下)。所以題目引用中對緩存的理解不當。


根據現有的信息,有很多重要的問題都不是很明確。

1)都做了哪些性能測試?

2)cache是1G了,但是後面的機械存儲流程,是否使用了RAID做並行?

3)這個技術是否針對特殊機械硬碟?還是所有的機械硬碟都適用?

4)持續寫入測試,是怎麼樣的?如果寫入的數據大小不超過cache,那麼這個速度毫無意義。

5)持續讀出的測試呢?如果上層多個應用讀的都是cache,那麼這個速度也毫無意義。

6)「拷貝1000個800KB的圖片只需5.6秒,使用軟體的話只要3.5秒,性能不俗。」這數據總大小才800MB啊!!沒超過cache。

7)並發IO測試呢?這個才是NAS類設備真正表現性能的地方。

---------------------------------------------------------------------------------------------

不排除優秀的cache管理演算法會極大地提高時間局部性很高(即短時間頻繁使用的)的數據的讀取速度。

但是cache大小無法解決空間局部性很小(即非常分散的)的大數據讀取速度。


其實硬碟100M的速度已經很快了, 硬碟順序寫入大文件可以達到30-60M/s 這個速度是還不錯的。

緩存可以大福度改善日常使用的離散讀寫,這才是主要應用場景


感覺台機用這貨的話配個ups是必須的。否則很危險。


有個軟體叫做PrimoCache,拿內存做硬碟緩存的

提足可以裝上測試一下就知道了

突發寫、頻繁讀寫有提升,實際作用沒什麼卵用


推薦閱讀:

如何設計網站的緩存?
求教大神瀏覽器是根據什麼決定from disk cache 與 from memory cache?
cdn的緩存數據是如何實現分片的,如何有效的實現各分片的存儲及刪除?
`a = false` 和 `if (a) { a = false; }` 哪個快?
對於平均大小在 10M 至 50M 左右的文件下載服務來說,有沒有什麼成熟的緩存方案呢?

TAG:固態硬碟 | 緩存 | 硬碟 |