Performance

為什麼順序寫入比 SSD 上的隨機寫入具有更好的性能?

  • January 27, 2021

LBA(邏輯塊地址)是在FTL中實現的映射表,用於匹配SSD中的邏輯和物理頁面/塊,我的猜測是大多數SSD(至少在它們為空時)保持物理地址的順序與邏輯地址(物理地址 0 映射到邏輯地址 0,1 映射到 1,依此類推)。

當頁面發生變化時,SSD控制器將更新的頁面複製到記憶體中,更改頁面,將舊頁面標記為“無效/陳舊”,然後將新頁面寫入不同的位置並更新 LBA。

因此,即使物理地址與邏輯地址對齊,在幾次寫入之後,這個順序也會被打亂!

那麼為什麼順序寫入比隨機寫入具有更好的性能呢?

編輯

順序寫入和隨機寫入之間的性能不足與塊大小或隊列深度無關。

希捷對垃圾收集如何導致隨機寫入與順序寫入的 SSD 性能差異的合理簡明解釋:

…垃圾收集的需求會影響 SSD 的性能,因為任何對“滿”磁碟(其初始可用空間或容量至少被填充一次)的寫入操作都需要等待通過垃圾收集過程。由於垃圾收集發生在塊級別,因此也存在顯著的性能差異,具體取決於涉及的是順序數據還是隨機數據。順序文件填充整個塊,這極大地簡化了垃圾收集。隨機數據的情況非常不同。

當隨機數據被寫入時,通常由多個應用程序寫入,頁面被順序寫入整個快閃記憶體塊。

問題是:這些新數據正在替換隨機分佈在其他塊中的舊數據。這會導致大量無效頁面的小“洞”分散在仍然包含有效數據的頁面中。在這些塊的垃圾收集期間,必須將所有有效數據移動(即讀取和重寫)到不同的塊。

相比之下,當順序文件被替換時,整個塊通常是無效的,因此不需要移動數據。有時,順序文件的一部分可能與另一個文件共享一個塊,但平均只有大約一半的塊需要移動,這比隨機寫入塊的垃圾收集要快得多。…

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