Wink Pings

工程师该背的延迟表,比架构图更能拦住拍脑袋决策

从 0.5 ns 到 150 ms,Dhanian 把内存、SSD、磁盘和网络的延迟放在一页。看懂这些数量级,很多系统设计不用猜。

Dhanian 在 X 上贴了一张延迟表。从 L1 缓存的 0.5 ns,到加州到荷兰的数据包往返 150 ms。这类表在工程圈流传很久,Jeff Dean 的版本常被拿来当参照,Dhanian 这次把常用项压缩成一页。

延迟数字表

先记住换算。1 µs 是 1000 ns,1 ms 是一百万 ns。表里从 0.5 ns 到 150 ms,跨了八个多数量级。人对快慢的感觉在这里不靠谱,数量级才靠谱。

纳秒级这一段,L1 缓存 0.5 ns,分支预测错误 5 ns,L2 缓存 7 ns,互斥锁加解锁 25 ns,主存访问 100 ns。主存比 L1 慢 200 倍,L2 是 L1 的 14 倍。写代码时觉得一次内存访问很便宜,放到循环和热路径里,账会变得很难看。

微秒级开始出现网络和存储。压缩 1KB 数据 3 µs,1 Gbps 网络发 1KB 数据 10 µs,SSD 随机读 4K 数据 150 µs,内存顺序读 1MB 数据 250 µs。这里已经能看出本地 SSD 和一次数据中心往返的关系:SSD 随机读 4K 约 150 µs,同数据中心往返 500 µs,前者快三倍左右。把远程调用塞进高频路径之前,先算一下。

毫秒级更接近日常系统的体感。同数据中心往返 0.5 ms,SSD 顺序读 1MB 数据 1 ms,磁盘寻道 10 ms,磁盘顺序读 1MB 数据 20 ms。磁盘寻道比同数据中心往返贵 20 倍,磁盘顺序读 1MB 又比 SSD 顺序读 1MB 慢 20 倍。缓存层、存储层、同步异步这些选择,底层都有这组数字在推着走。

全球网络这一段最容易被低估。加州到荷兰的数据包往返 150 ms。一次跨洋请求 150 ms,十个串行依赖就是 1.5 秒。架构图里两个框之间画一根线,线上可能是一百五十毫秒。图看起来干净,用户等起来不干净。

这张表不能替你做完设计,但能提前拦住一些想当然。选择内存、SSD、磁盘、网络时,先看数量级,再看业务。Dhanian 的原帖在这里:https://x.com/e_opore/status/2116607999037034845 。完整系统设计手册在这里:https://codewithdhanian.gumroad.com/l/urcjee 。

发布时间: 2026-11-01 06:33