后端程序员需要知道的一些数据

本文探讨了光速、网络延迟、计算机内存访问速度等关键指标,展示了从2010年到2020年硬件性能的巨大提升。例如,网络传输速度提升了22倍,SSD读取速度提升了10倍。同时,介绍了操作系统上下文切换的时间成本,并列举了不同操作的延迟数据,如L1缓存引用和磁盘读取。此外,还涉及了IPv4地址分类和常用端口用途。
摘要由CSDN通过智能技术生成

常数

光速

光速约3.00×108m/s, 即每秒30w公里,每秒绕地球七圈半

  • 算网络延迟

深圳到北京距离大约为2000km,RTT延迟最少为2*2000km/300,000km=13ms

  • 和光速有关的bug

2002年提出的一个bug,电子邮件无法发送到500英里以外

2的次方表

2的次方真实值近似值字节
27128
28256
21010241 thousand1 KB
21665,53664 KB
2201,048,5761 million1 MB
2301,073,741,8241 billion1 GB
2324,294,967,2964 GB
2401,099,511,627,7761 trillion1 TB
  • C语言unsigned int最大值为216 -1 = 65535
  • 32位地址总线的寻址空间为 232 = 4G

延迟

在2010年,Jeff Dean在一次演讲中给出了每个程序员都应该知道的数值列表,但这些数据收集于2001年,最初发表在 Teach Yourself Programming in Ten Years。这些数据适用于粗略估算,并不是一个准确值,重要的是理解这些数字的量级差异。

-nsµsms速度
L1 cache reference0.5 ns
Branch mispredict5 ns
L2 cache reference7 ns14x L1 cache
Mutex lock/unlock25 ns
Main memory reference100 ns20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy3,000 ns3 µs
Send 1K bytes over 1 Gbps network10,000 ns10 us100 MB/s
SSD random read150,000 ns150 µs~1GB/sec SSD
Read 1 MB sequentially from memory250,000 ns250 µs4 GB/s
Round trip within same datacenter500,000 ns500 µs
Read 1 MB sequentially from SSD*1,000,000 ns1 ms1 GB/s~1GB/sec SSD, 4X memory
Disk seek10,000,000 ns10 ms20x datacenter roundtrip
Read 1 MB sequentially from disk20,000,000 ns20 ms30 MB/s80x memory, 20X SSD
Send packet CA->Netherlands->CA150,000,000 ns150 ms

问题

生成包含30个缩略图的结果页需要多长时间?

  • 串行读,每个缩略图256k

30 seeks * 10 ms/seek + 30 * 256K / 30 MB/s = 560 ms

  • 并行读,每个缩略图256k

10 ms/seek + 256K read / 30 MB/s = 18 ms

硬件性能的提升

随着硬件的发展,硬件的读写速度已经成倍的提升了。从2010到2020年,network,ssd和disk的速度提升明显。
如下所示:

20102020性能提升倍数
Send 2k bytes over commodity network1,000 ns ≈ 1 μs44 ns22
Read 1M bytes sequentially from SSD494,000 ns ≈ 494 μs49,0000 ns ≈ 49 μs10
SSD random read17,000ns ≈ 17μs16,000 ns ≈ 16 μs1
Disk seek5,000,000ns ≈ 5ms2,000,000 ns ≈ 2ms2
Read 1M bytes sequentially from memory30,000ns ≈ 30μs3,000ns ≈ 3 μs10
Read 1M bytes sequentially from disk3,000,000ns ≈ 3ms825,000 ns ≈ 825 μs3

2020的数据

网络

端口号

端口TCPUDP描述
20YFTP - 默认数据端口
21YFTP - 控制端口
22YSSH
23YTelnet
25YSMTP
53yYDNS
80YYHTTP, QUIC
110YPOP3
443YYHTTPS

掩码

二进制十进制
1000 0000128
1100 0000192
1110 0000224
1111 0000240
1111 1000248
1111 1100252
1111 1110254
1111 1111255

IPv4 地址分类

网络标志位IP地址范围私有地址范围私有地址-CIDR
A00.0.0.0 - 127.255.255.25510.0.0.0 - 10.255.255.25510.0.0.0/8
B10128.0.0.0 - 191.255.255.255172.16.0.0 - 172.31.255.255172.16.0.0/12
C110192.0.0.0 - 223.255.255.255192.168.0.0 - 192.168.255.255192.168.0.0/16
D1110224.0.0.0 - 239.255.255.255
E1111 0240.0.0.0 - 247.255.255.255

操作系统

上下文切换

上下文切换大概30µs的cpu开销,最佳实践方式是工作线程数等于CPU线程数,并以异步/非阻塞方式编写代码。

MTU

64 ~ 1500 byte,如果MTU设置得不合理会导致IP分片与重组,从而导致网络传输质量问题。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值