我们的项目已经到了这个阶段,我们想将软件提升到一个新的水平,一般响应时间为 20µs 或更短。软件方面已经尽善尽美了(尽管还有一点改进的空间),但现在我们想攻克硬件方面的问题。
我想知道您是否能就我们如何实现这一壮举提供一些建议。我们需要任何特殊类型的布线、软件堆栈、架构或其他技术吗?
答案1
超低延迟?你可以玩有趣的玩具。这种真正低延迟网络的常见平台是无限带宽(我们中的一些人,虽然不是我,已经开始使用这个东西了)。用于高性能计算和其他需要低延迟、高带宽和可扩展性的计算领域。在某些科学计算领域也很常见。
IB 实现低延迟的部分原因是通过扁平化网络。与光纤通道类似,它是一个第 2 层交换网络,确实有助于降低延迟。
您在当地的 MicroCenter 找不到实现此目的的设备。使用 IB 进行联网是完全可行的,但是如果您希望延迟尽可能低,TCP/IP 可能是一个平庸的协议选择。
由于市场销量低,IB 网络适配器与 1GB 以太网相比非常昂贵,但与 10GbE 适配器相比却更具优势。IB 交换机同样昂贵,但似乎与端口密度相似的 10GbE 交换机价格相当。
如果 IB 让您心存疑虑,那么 10 Gigabit 以太网可以满足您的大部分需求,并且得到了所有设备的良好支持,普通网络极客也对此非常熟悉。如果您设计的以太网中有一个(也许两个)交换机,并且所有端口都位于同一子网中,则可以获得类似的低延迟。根据您愿意容忍的延迟程度,这可能是比 IB 更容易理解的架构。
答案2
您甚至没有说明您计划使用哪种网络技术。
假设以太网将最小帧长度 520 字节除以 20 µs RT 要求,可得到 50 MB/s 左右的速度。进一步假设您的软件需要至少一半的时间进行处理,则速度为 100 MB/s,此时可能需要 10GE 才能适应交换和传输延迟。
再说一次,你确实有足够的空间 - 所以我想知道为什么你要担心诸如电缆类型之类的事情,这肯定不会对你的延迟产生明显的数量级影响。
编辑: 我习惯于相信解决方案取决于具体问题。虽然 10GE 延迟和传输特性可能对一个应用程序有利,但它们可能会给另一个应用程序带来问题。使用 10 GE,您无法保证 RTT,而只能尽力交付。如果您的网络经过充分设计,并且您的应用程序“大多数时间”在 20 µs 内得到响应是可以的,那么这可能就足够了。如果响应时间是一个硬性限制,并且交易会因此中断,您可能需要研究其他(主要是基于单元的)网络技术,例如 ATM。
至于 Infiniband,你可能正在考虑对应用程序的网络操作进行重大重写,以便使用远程直接内存访问 (RDMA),如果你想要效率。
另一件需要考虑的事情是组件之间的距离 - 10 µs 刚好足够光传播 1.6 公里并返回 - 没有任何组件延迟,也不考虑位时间。因此,您必须有较短的距离和简短的请求/响应序列即可到达那里。
总而言之,这不是单个组件的问题,而是所选技术的问题。