為什麼機械硬碟隨機讀取效能和連續讀寫效能差那麼多?

時間 2021-06-08 12:54:46

1樓:鄧卓

再來看下訪問時間,主要有三個部分:

1. 尋道時間,為讀取某個目標扇區的內容,傳動臂首先將磁頭定位到包含目標扇區的磁軌上,這個過程花費的時間即為尋道時間。平均值 3 ~ 9 ms,最大可至 20 ms。

2. 旋轉延遲,磁頭定位到目標磁軌後,驅動器等待目標扇區的第乙個位旋轉到磁頭下,這個過程如果是 5400 轉的磁碟,平均大概為 5 ms。

3. 傳送時間,當目標扇區的第乙個位位於磁頭下,到訪問完所有資料花費的時間,如果資料量為乙個扇區的容量,這個時間取決於旋轉速度和每個磁軌的扇區數目(密度),假定每個磁軌平均扇區數目為 400,那麼這個時間大概為 0.03 ms。

綜上,如果讀取乙個扇區的資料,那麼平均用時大概為 9 + 5 + 0.03 = 14.03 ms。主要時間是尋道時間和旋轉延遲,而實際訪問幾乎不用時間。

這也是為什麼連續讀取速度很快,就是因為這個『連續』,這一次讀取過程中,可以簡單的理解為尋道和旋轉延遲只有一次(不嚴謹),大部分時間都花費在實際傳送上。簡單計算下,如果只有傳送時間,5400 轉,每扇區 512 位元組,每個磁軌 400 個扇區,那麼每秒可以傳送 5400 RPM / 60 sec * 400 * 512 = 18,432,000 B / s = 17 MB / s。現在的磁碟,實際的實現複雜,比如每個磁軌擁有的扇區數目不一致,不過一般而言,可以簡單認為各個引數比上述的值要高很多(比如扇區數目 / 比如扇區容量),達到 100 + MB 也是可以的。

不過整體原理沒變,尋道時間和旋轉延遲總是存在的,當大量的讀取小檔案的時候,也就是不是『順序』讀取,每次讀取尋道時間和旋轉延遲都要再來一遍,假設每個小檔案每個 1 K,平均也就能到 1000 ms / 14 ms * 1 K = 70 KB / s(按上述 100 / 17 的倍數,也就是 420 KB / s,和你測試值相近),檔案再小一點,速度還可以進一步下降。

推薦閱讀

深入理解計算機系統(原書第2版) (豆瓣) 第六章儲存器層次結構

2樓:

襪子提到了磁碟尋道,這裡再補充兩個原因。

硬碟讀取連續資料的時候會預讀,也就是前面的資料還在路上,後面的資料就開始讀了。但隨機讀取會浪費預讀。

另乙個原因是檔案系統的overhead。讀寫乙個檔案之前,得一層層目錄找到這個檔案,以及做一堆屬性、許可權之類的檢查。寫新檔案時還要加上尋找磁碟可用空間的耗時。

對於小檔案,這些時間消耗的佔比就非常大了。

為什麼固態硬碟和機械硬碟開機時間一樣?

普通硬碟在筆記本內,15秒啟動很難。題主的情況可能是系統預設使用了快速啟動 類似於休眠喚醒,win8後的新特性 如果是這個情況,那麼普通硬碟SSD持續讀取300MB相差的時間真不大,差距3秒以內。加上一些預裝軟體的不同,最後結果開機時間相同,倒是有可能的。 UEFI和AHCI不是一回事,AHCI就是...

為什麼硬碟的寫入速度比讀取速度慢?

Iris 這事就和原理有關係,因為機械硬碟和固態硬碟的原理不一樣,這事得分開說。首先是機械硬碟。機械硬碟的原理就是乙個磁碟,上面乙個磁臂,磁臂頭上有倆磁頭,乙個讀磁頭,乙個寫磁頭,寫磁頭比讀磁頭寬。磁軌怎麼儲存資料?靠的就是磁性。磁軌裡有無數個磁粒,乙個磁粒可以儲存乙個二進位制位。扇區知道吧?一般來...

急求!關於固態硬碟,為什麼我4k讀取很低?

緋落 有必要糾結4K?你先了解4K讀寫啥意思吧,IOPS效能高低差別不是很大,意義不大,TLC顆粒的通病就是用的越多,讀寫能力會下降,我的賊船MP510 也高不了你多少,不要糾結開機速度和讀寫,用著舒服就好了,追求速度的話,你把系統裝記憶體裡開機賊快 來蹦乙個? 我的老婆是嘉嘉 不急不急,你的盤沒啥...