Architecture 应用程序架构考虑的延迟数量级

Architecture 应用程序架构考虑的延迟数量级,architecture,latency,Architecture,Latency,是否有一个参考文件列出了通过网络(udp与tcp/ip)、磁盘、内存(顺序/随机访问)、进程内与进程间等传输信息所需的大致时间(相对或绝对时间) 最终我将不得不测量这些数据,但我会很感激能提供球场数据的指针 内存与磁盘的对比并不难找到,但我喜欢了解其他数字的方向。我还没有遇到过类似的情况,我认为除了针对特定场景进行测试之外,没有其他方法。 涉及的因素太多,无法给出一致的答案: e、 g.您使用的NIC是什么,它们是否正在进行TCP校验和卸载,您的交换结构的性能如何,您使用的磁盘是什么,它们有多少

是否有一个参考文件列出了通过网络(udp与tcp/ip)、磁盘、内存(顺序/随机访问)、进程内与进程间等传输信息所需的大致时间(相对或绝对时间)

最终我将不得不测量这些数据,但我会很感激能提供球场数据的指针


内存与磁盘的对比并不难找到,但我喜欢了解其他数字的方向。

我还没有遇到过类似的情况,我认为除了针对特定场景进行测试之外,没有其他方法。 涉及的因素太多,无法给出一致的答案: e、 g.您使用的NIC是什么,它们是否正在进行TCP校验和卸载,您的交换结构的性能如何,您使用的磁盘是什么,它们有多少缓存,您传输多少数据,许多小数据包或几个大数据包,等等

当您谈论RAM访问时间时,您现在谈论的是10-100ns,而硬盘可能是4-8ms左右。任何基准测试工具都应该为RAM和硬盘驱动器的测量提供良好的结果

UDP与TCP在另一方面,你真的不能给出任何具体的数字。理论上,UDP应该比TCP快30-50%,因为它错过了ACK的额外行程,并且具有较小的报头开销,但是在现实中,有许多情况下,TCP仅仅因为拥塞控制而优于UDP。此外,TCP with Nagle启用了批处理数据包,这与UDP(UDP不这样做)相比也是不公平的


总而言之,真正根据您的需要进行您自己的测试。即使在某个地方有一个运行类似测试的人的基准表,它们对于您的应用程序和硬件堆栈来说可能是完全无效和不可复制的

+1对于Tom,这就是我在看到他的答案之前要写的(只是不太清楚)

另一件需要考虑的事情是

  • 延迟需求与带宽需求

  • 给定解决方案的可伸缩性。例如

    • 升级网络速度(是否需要更换NIC?布线?路由器?)与可能规模的大小(100Mb与1Gb)相比有多困难

    • 与提速回报相比,升级磁盘速度有多困难

    例如,更快的磁盘、缓存更大的磁盘(假设您的用例运行在可缓存数据、RAID或其他数据条带化、本地存储与网络存储之间)

  • 换句话说,您目前的情况可能表明,确切的指标表明磁盘是所有考虑因素的最佳解决方案,但您很少能将磁盘性能提高10倍,而如果确实需要,您可以通过网络这样做