PostsMapsLinks
Computer

系统性能

计算机系统性能指标与延迟数字,帮助程序员理解各层级操作的时间量级差异

程序员应该知道的延迟数字

理解计算机系统中各种操作的延迟数量级,是做出正确架构决策的基础。 Jeff Dean(Google 资深研究员)和 Peter Norvig 整理的这些数字展示了从 CPU 缓存到跨洋网络请求的惊人差异。

核心延迟参考(按数量级分层):

量级操作延迟
纳秒级L1 缓存引用~1 ns
分支预测失败~3-10 ns
L2 缓存引用~4-13 ns
互斥锁 lock/unlock~25-50 ns
百纳秒级主内存引用~100 ns
Zippy 压缩 1KB~6,000 ns
十微秒级网络传输 2KB~10,000 ns
SSD 随机读取~16,000 ns
内存顺序读取 1MB~250,000 ns (0.25 ms)
同数据中心往返~500,000 ns (0.5 ms)
毫秒级SSD 顺序读取 1MB~1,000,000 ns (1 ms)
机械磁盘寻道~10,000,000 ns (10 ms)
磁盘顺序读取 1MB~20,000,000 ns (20 ms)
加州↔荷兰网络往返~150,000,000 ns (150 ms)

关键洞见: 不同操作之间存在数个数量级的差异。 L1 缓存访问比主内存快约 100 倍,而内存又比磁盘随机访问快约 10 万倍。 这种数量级思维帮助工程师在存储介质选择、缓存策略、网络架构等方面做出合理权衡—— 精确数值会随硬件演进变化,但数量级关系保持相对稳定。

见:Numbers Every Programmer Should Know By Year

Copyright © 2024 Lionad - CC-BY-NC-CD-4.0