作为程序员,经常需要和一些时延的单位打交道(如:秒 s、毫秒 ms、微秒 us、纳秒 ns),为了防止一不小心说错几个数量级,所以有必要了解计算机系统中的一些常见时延。
直接上图吧(网上搬运来的;找看得过去的高清大图也不容易~):
看图时,不要在意特别的细节,比如 L1 cache到底是0.9ns 还是 1.1ns,因为不同的系统、不同年份的硬件都不同,结果也是有所差异的。不要搞错数量级就行,如不能认为本地内存访问需要us微秒级别的时延。
作为一个补充,AWS的VPC网络内的时延大约15-20us,AWS两个AZ之间的时延2-3ms;北京到上海的网络时延30ms,TCP重传秒级(如:1-3秒)。
另外,收藏几个有趣的网页:
关于这些时延 + 一些有趣的评论:https://gist.github.com/hellerbarde/2843375
从1990年到2020年各种计算机器件的时延:https://colin-scott.github.io/personal_website/research/interactive_latency.html
早在2012年Google的大神Jeff Dean的一个分享中就是这么写到的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 100 ns Main memory reference 100 ns Compress 1K bytes with Zippy 10,000 ns 0.01 ms Send 1K bytes over 1 Gbps network 10,000 ns 0.01 ms Read 1 MB sequentially from memory 250,000 ns 0.25 ms Round trip within same datacenter 500,000 ns 0.5 ms Disk seek 10,000,000 ns 10 ms Read 1 MB sequentially from network 10,000,000 ns 10 ms Read 1 MB sequentially from disk 30,000,000 ns 30 ms Send packet CA->Netherlands->CA 150,000,000 ns 150 ms Where 1 ns = 10-9 seconds 1 ms = 10-3 seconds |
Jeff Dean大神2012年的分享文档:http://static.googleusercontent.com/media/research.google.com/en/us/people/jeff/stanford-295-talk.pdf (推荐该材料 十多年前的 都是那么牛)
这篇文章不错 “CPU性能和CACHE”:https://plantegg.github.io/2021/07/19/CPU性能和CACHE/