首先,我是磁盘新手,我只知道基础知识。我正在尝试提高具有大量 I/O 的软件的性能,并且我需要了解我的 SAS 磁盘在读写速度方面的工作方式。
我已经完成了非常基本的读/写测试,并且我注意到似乎是“写悬崖”。磁盘有几 TB 的存储容量,它们所连接的机器有 630GB 的 RAM。我的测试表明,经过约 200GB 的密集写入后,写入速度从约 2000MBps 下降到约 300MBps。
我猜是某种大缓冲区或高速缓存在某个时候填满了,这会导致写入速度下降。这到底是如何运作的?我如何计算它的大小?它是可配置的吗?
300M/s 是直接连接的 SAS 阵列的完美正常写入速度。上面的所有内容都是操作系统缓存的产物。
在不知道您的应用程序做什么的情况下很难说清楚,但在许多情况下,
O_DIRECT
在打开文件时使用标志会给您带来更真实的行为:它使系统绕过缓存并直接转到磁盘控制器,从而消除缓存工件和写悬崖。当然,这是以将写入性能降低到 I/O 硬件的实际水平为代价的——但这正是关键所在:写入速度不能超过磁盘子系统以可持续的方式允许的速度:缓存将大有帮助具有突发写入负载,但无法永远克服底层硬件的限制。