EBS 和 EFS 如何实现微秒级延迟

EBS 和 EFS 如何实现微秒级延迟

我曾经监控过我附加了 EBS 卷的 EC2 实例中的读/写 iowait,iowait 列的输出iostats只有 200 ~ 500us,据我所知 EBS 实际上是一个网络卷,我认为本地网络延迟应该在 ~10ms 级别,那么 EBS 如何实现这个<1ms 的延迟呢?

EFS 也有同样的问题,我没有测试过 EFS,但在性能页面中它显示读取延迟可以低至 250us。

https://docs.aws.amazon.com/efs/latest/ug/performance.html#performance-overview

答案1

拉起每个程序员都应该知道的延迟数字在进行粗略的延迟近似时。这并不是因为它准确,而是因为它传达了数量级。

以太网交换机的延迟可达数十微秒。通过几个这样的交换机到达同一(巨大)数据中心的存储节点。在这些路由器之间增加几微秒的传输时间。

至于存储堆栈,亚毫秒级的总体速度排除了第一层出现旋转锈蚀的可能性。即使在最佳情况下,硬盘阵列也需要数毫秒才能寻道。显然,固态存储正在使用中,I/O 操作可能再次需要数十微秒。

假设读取时间为 250 微秒,则没有太多时间预算用于遍历存储堆栈的各个层。将 IP 数据包转换为块操作,并让某个操作系统执行这些操作,然后客户端操作系统对其进行处理。大概需要大量的工程工作来优化虚拟机管理程序、操作系统、驱动程序和硬件。

注意EFS 性能表有“低至”的限定词来描述惊人的低延迟。这不是服务水平协议。尽管在实践中,您获得了快速的服务水平。

进一步注意,多区域存储的写入速度可能会慢一毫秒。这是将数据存储在多个建筑物中的耐久性成本。仅仅是10 公里外光纤中的光速仅传播延迟就增加了大约 50 微秒。该路径上还有未知数量的额外交换机。多个区域需要确认写入,这样才能比单个区域具有更好的耐用性。速度仍然很快,但不是同一机架中的所有闪存阵列都很快。

免责声明:这些都是他们不会共享的专有黑匣子。但是,值得了解的是,同一城市的私人网络可以实现比您想象的快 10 倍以上的延迟。只要有足够的工程设计。

相关内容