2.1 了解各类延迟指标

既然目标是“足够快”,那么就需要对计算机中的“快”有个基本了解。

伯克利大学有个动态网页[1],里面汇总了每年计算机中各类操作耗时变化,这些数据和软件设计、性能调优有着巨大的关联,笔者整理了 2020 年的数据供读者参考,如表 2-1 所示。

表 2-1 计算机中各类延迟数据参考

操作延迟
CPU 从一级缓存中读取数据1 ns
CPU 分支预测错误(Branch mispredict)3 ns
CPU 从二级缓存中读取数据4 ns
线性间互斥锁/解锁17 ns
在 1Gbps 的网络上发送 2KB44 ns
访问一次主存100 ns
使用 Zippy 压缩 1KB 数据2,000 ns ≈ 2 μs
从内存顺序读取 1 MB3,000 ns ≈ 3 μs
一次 SSD 随机读16,000 ns ≈ 16 μs
从 SSD 顺序读取 1 MB49,000 ns ≈ 49 μs
一个数据包在同一个数据中心往返500,000 ns ≈ 0.5 ms
从磁盘顺序读取 1 MB825,000 ns ≈ 0.8 ms
一次磁盘寻址2,000,000 ns ≈ 2 ms
一次 DNS 解析查询50,000,000 ns ≈ 50 ms
把一个数据包从美国发送到欧洲150,000,000 ns ≈ 150 ms
在宿主机中冷启动一个常规容器5,000 ms ≈ 5 s

秒(s)、毫秒(ms)、微秒 (μs)、纳秒 (ns)之间关系:1s = 103ms=106μs=109ns


  1. 参见 https://colin-scott.github.io/personal_website/research/interactive_latency.html ↩︎

总字数:380
Last Updated:
Contributors: isno