FreeBSD ZFS 上的讀寫速度慢
我的家庭儲存伺服器目前由 6 個 3 TB 希捷硬碟、12 GB DDR3 RAM 和一個 Core i3 540 組成,在讀取或寫入我設置的 raidz2 時性能非常差。
使用
/usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10
:10240 bytes transferred in 0.000221 secs (46331902 bytes/sec)
反之亦然:
10240 bytes transferred in 0.000107 secs (95656287 bytes/sec)
這意味著 46 MB/s 的寫入速度和 95 MB/s 的讀取速度。這似乎有點慢。或者這完全正常嗎?
謝謝
託拜厄斯·廷佩
使用上面顯示的命令,您不是在測試磁碟寫入性能。您正在測試各種因素,但主要是控制器和磁碟延遲。要測試磁碟讀取性能,您需要跳過障礙以從測試中排除磁碟記憶體,這對於 ZFS 來說並非易事,因為這意味著禁用 ARC 記憶體。測試寫入性能要容易得多:寫入更大的文件,最好是超過系統內置 RAM 的大小。
我在我的家庭 ZFS 文件伺服器(帶有鏡像 WDC WD80 的 Core i3-4130T)上執行了這個命令:
# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10000000 10240000000 bytes transferred in 55 secs (186900359 bytes/sec)
這不是很好,但這是對實際寫入性能的更好測試。一個有趣的結果是我達到了 187MB/s,而我的磁碟額定性能是 178MB/s。這有點奇怪,b/c 典型的基準測試是額定性能的一部分。超過它可以用 ZFS 的磁碟壓縮來解釋。
我的磁碟在 ZFS 鏡像中(2 倍的讀取性能對我來說比儲存效率更有用)但假設您的磁碟也是 5400 RPM,您應該期望具有相當的寫入性能。
要了解為什麼使用更大的計數
dd
也不是一個很好的測試,請查看:# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1M count=1000000 1048576000000 bytes transferred in 223.56 secs (4690377542 bytes/sec)
只需將塊大小增加到 1M,我的磁碟性能現在就令人驚嘆。直到你意識到從 /dev/zero 讀取數據意味著數據源沒有熵並且是高度可壓縮的。dd 不是測試磁碟性能的最佳工具。
FreeBSD 埠樹中還有其他工具(我過去使用過 bonnie 和 iozone),它們可以告訴您有關磁碟性能的更多資訊。如果你真的很好奇,看看他們。否則,對於家庭文件伺服器的更好的性能測試是在兩個磁碟之間複製 DVD 或藍光的內容並為該複製計時。