2017-08-19 136 views
0

我有一個Western Digital 500 GB內置SSD(WDS500G1B0A)。其規格說明了525 mbps的連續寫入速度。我使用f2fs格式化此SSD。使用O_SYNC標記格式化的SSD順序寫入吞吐量

然後,我使用O_SYNC標誌在文件系統上執行大小爲4k的順序寫入操作(以確保在寫入操作返回時將寫入操作提交到磁盤)。我的測試程序是單線程的。

我知道這將是基礎SSD的IOP和延遲評級的組合。我應該期待這種執行的吞吐量?我只有大約8k IOPS。

我也可以分享我的測試程序,以防我缺少一些基本的東西。

我還錯過格式化SSD等東西嗎?

當我在同一個格式化的SSD上運行同一個沒有O_SYNC標誌的程序時,我得到了更好的結果(約80k IOPS)。我可以做些什麼額外的調整或測試來更好地處理髮生的事情?

回答

0

讓我首先承認,我沒有O_SYNC標誌,因爲它們恰好與SSD IOPS(525 MB/4k塊大小〜100 k IOPS)一致時,我被80 k IOPS所困惑。我應該堅持525 MB的吞吐量規格來進行分析。我觀察到SSD的吞吐量確實接近這個規格,即使有O_SYNC標誌,儘管塊大小非常大(大約16 MB),這是可以理解的。

由於沒有O_SYNC標誌,linux必須提交內存內核緩衝區中的寫入操作,所以我們無法將其用於底層SSD IO性能分析。它必須依賴於硬件的其他因素,如內存,CPU等。在更強大的服務器上,我甚至可以看到2000 MBps,這在SSD級別上是不切實際的。

即使沒有O_SYNC標誌,SSD也可以比HDD執行得更好,而寫入操作會定期刷新到磁盤,因爲這將是IO應用程序的合理模型。如果有人感興趣,我可以通過分析分享我的數字。

對不起,我的原始問題不同。無論如何,這是一個很好的學習。因此我想在這裏發佈我的答案。