天增的博客
首页
博客
  • 分布式解决方案
  • Java并发工具包
  • redis
  • LeetCode
  • 系统设计
  • JVM体系
Github (opens new window)
Rss (opens new window)
  • zh-CN
  • en-US
首页
博客
  • 分布式解决方案
  • Java并发工具包
  • redis
  • LeetCode
  • 系统设计
  • JVM体系
Github (opens new window)
Rss (opens new window)
  • zh-CN
  • en-US
  • 系统设计
  • 概念
  • 4S分析法
  • 样例
    • 微博架构设计
    • 短链系统
    • 秒杀
  • 每个程序员都应该知道的延迟数字
  • Flux架构
  • Http进化史
  • 系统常见故障
  • 负载均衡方案
  • topic
  • 系统设计
  • 每个程序员都应该知道的延迟数字
2022-05-24

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

# 每个程序员都应该知道的延迟数字

在一些情况下对系统设计的时候,需要做出对系统性能的保守估计。

Jeff Dean (谷歌的巨佬,分布式系统的奠基人)在分布式系统的PPT (opens new window)中列出了"Latency Numbers Every Programmer Should Know"(每个程序员都应该了解的数字),对计算机中的各类的操作的耗时做了大致的估计。

操作 延迟
执行一个指令 1 ns
L1 缓存查询 0.5 ns
分支预测错误(Branch mispredict) 3 ns
L2 缓存查询 4 ns
互斥锁/解锁 17 ns
在 1Gbps 的网络上发送 2KB 44 ns
主存访问 100 ns
Zippy 压缩 1KB 2,000 ns
从内存顺序读取 1 MB 3,000 ns
SSD 随机读 16,000 ns
从 SSD 顺序读取 1 MB 49,000 ns
同一个数据中心往返 500,000 ns
从磁盘顺序读取 1 MB 825,000 ns
磁盘寻址 2,000,000 ns (2 ms)
从美国发送到欧洲的数据包 150,000,000 ns(150 ms)

基于上述数字的指标:

  • 从磁盘以 30 MB/s 的速度顺序读取
  • 以 100 MB/s 从 1 Gbps 的以太网顺序读取
  • 从 SSD 以 1 GB/s 的速度读取
  • 以 4 GB/s 的速度从主存读取
  • 每秒能绕地球 6-7 圈
  • 数据中心内每秒有 2,000 次往返

Jeff Dean给出这些数字的重点是在于了解这些操作之间的数量级和比例,而不是具体的数字。

因为计算机会随着科技的发展,变得越来越快。

伯克利大学有个动态网页 (opens new window),可以查看每年各个操作耗时的变化

最近更新
01
以 root 身份启动 transmission-daemon
12-13
02
Debian系统安装qbittorrent-nox
12-09
03
LXC Debain12安装zerotier并实现局域网自动nat转发
07-29
更多文章>
Theme by Vdoing | Copyright © 2015-2024 天增 | 苏ICP备16037388号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式