共享驱动器可实现的最小延迟是多少?

共享驱动器可实现的最小延迟是多少?

我有一个服务器应用程序,它使用磁盘缓存来存储某些数据(100GB-1TB)。现在我想使用该服务器应用程序的多个实例(10、100 个)(每个实例在单独的服务器上),并且它们几乎都会生成相同的缓存内容。

现在一个显而易见的想法是让所有这些机器共享缓存。但是,我的缓存项很小(10kb)。因此,我最需要的是访问缓存项的低延迟。

从延迟角度来看,提供这种共享缓存的最快方法是什么?显然,以太网上的 CIFS 并不适用。

如果有帮助的话,您可以假设我的所有服务器都是同一主机系统上的虚拟机,因此如果存在灵巧的 VMware 功能(或类似的东西),我会洗耳恭听。

答案1

造成延迟的因素有以下几种:

  • 无论托管存储的是什么,驱动存储 io 堆栈延迟。
    • 对于真正负载的系统,这个时间范围从亚毫秒到几十毫秒,甚至几百毫秒。
  • 无论你使用什么方法提供服务,网络文件系统堆栈的延迟都是如此(CIFS、NFS、OpenSwift、Gluster 等等)
    • 对于面向连接的协议(CIFS、NFS),这个时间很少超过 10 毫秒,通常少于 1 毫秒。
    • 对于无连接协议(OpenSwift),必须进行 TCP 握手,它是网络直径的函数。
  • 网络距离延迟
    • 对于您描述的如此接近的网络,这个时间可能小于 1 毫秒。
  • 网络客户端延迟
    • 对于空载系统来说小于 1ms。

总而言之,最大的延迟来源将是存储子系统的实际性能和您选择的协议。我会选择面向连接的存储协议。考虑到您要查看“100 个”并发连接,如果可能的话,我会选择您正在使用的任何内核都可以在内核中处理的协议。

实际上,减少延迟的最快方法是将所有数据放在 SSD 上。

相关内容