我刚刚在 singlehop 上配置了一个专用服务器。
我正在对它进行一些测试,以了解性能方面的预期。在 I/O 方面(使用 RAID 10 中的 4 个 1TB 磁盘),我得到:
write-cache disabled
200 MB/s read throughput
30 MB/s write throughput
我觉得这比我的台式机硬盘(150-150 左右)的缓存速度确实低了。所以我和他们聊了聊,他们建议启用写入缓存。新结果:
write-cache enabled
280 MB/s read
260 MB/s write
这很棒,但这意味着我必须添加一个 BBU,每月需支付额外费用。
如果没有写入缓存,RAID10 上的写入吞吐量为常规驱动器的 1/4 是否正常?强迫您为 BBU 付钱几乎感觉是故意为之。如果正常的非 raid 性能为 150/150,我会很满意。
更新:他们现在正在查看它,看看是否有问题。我会给 ahamat 一个可接受的答案,因为他搞不清楚这个 8 倍的下降何时会影响服务器工作负载,何时不会。如果我获得更多数据,我会再次更新。+1 寻求其他答案。谢谢。
更新2:看来硬件出了问题。换了一台规格相同的新机器,没有写回缓存时写入速度为 80MB/s。打开缓存时写入速度为 250MB/s。因此,没有缓存时,吞吐量下降了 3 倍,吞吐量合理。
答案1
由于应用程序的性质,实际应用程序中的性能会有所不同。
异步写入将转到 RAM,而您有可用于写入缓冲的内存。显然,写入 RAM 的速度将明显快于写入磁盘。这是大多数(所有?)现代操作系统的默认设置。如果您有足够的 RAM 来写入,直到它们被刷新到磁盘,那么所有写入都会显得非常快。不过,有一段时间断电会导致数据丢失。电池支持的磁盘写入缓冲可以减少(但不能完全消除)这个时间段。
同步写入必须先提交到磁盘,然后写入才能返回,而且速度会慢得多。这是 NFS 和其他一些应用程序的默认模式。对于同步写入,由电池支持的磁盘写入缓冲可显著提高明显的写入性能,并消除因电源故障而导致数据丢失的风险。但请注意,写入仍将进入易失性内存,只是已移至磁盘 PCB 的内存而不是主内存。ZFS 通过使用 SSD ZIL 以不同的方式解决了这个问题,它将提交到 SSD 并返回写入操作,然后将其移至旋转磁盘。
所以你真的需要看看你的应用程序。你的大多数写入是同步的还是异步的?对于异步,你只需要大量的 RAM 就可以了。对于同步,你需要电池支持的写入缓存(但 ZFS 可能能够提供更便宜的解决方案)。
无论如何,您都需要写缓存。
答案2
是的,您需要一个由电池供电的缓存单元。如果没有它,写入速度通常很慢。如果您的应用程序需要这种类型的性能,您需要支付...
答案3
在 RAID10 场景中,即使没有写回缓存,速度也非常慢。
您尝试使用哪种工具来测量?我推荐使用 Phoronix。
在 RAID10 1TB SATA 磁盘上,顺序写入速度应至少为 80-100MB/秒,随机写入速度不应低于 50(当然这也取决于并发性)