本文整理自:《性能之巅》
作者:【美】 Brendan Gregg
英文版出版时间:2014年
我们可以用数字来作为时间的比较方法,同时可以用时间的长短经验来判断延时的源头。系统各组件的操作所处的时间量级差别巨大,大到了难以体会的地步。表2.2提供的延时示例,从访问3.3GHz的CPU寄存器的延时开始,阐释了我们所打交道的时间量级的差别,表中是发生单次操作的时间均值,等比放大成为想象的系统,一次寄存器访问0.3ns(十亿分之一秒的三分之一)相当于现实生活中的1秒。
事件 | 延时 | 相对时间比例 |
---|---|---|
1个CPU周期 | 0.3ns | 1s |
L1缓存访问 | 0.9ns | 3s |
L2缓存访问 | 2.8ns | 9s |
L3缓存访问 | 12.9ns | 43s |
主存访问(从CPU访问DRAM) | 120ns | 6分钟 |
固态硬盘I/O(闪存) | 50-150us | 2-6天 |
旋转磁盘I/O | 1-10 ms | 1-12月 |
互联网:从旧金山到纽约 | 40 ms | 4年 |
互联网:从旧金山到英国 | 81 ms | 8年 |
互联网:从旧金山到澳大利亚 | 183ms | 19年 |
TCP包重传 | 1-3s | 105-317年 |
OS虚拟化系统重启 | 4s | 423年 |
SCSI命令超时 | 30s | 3千年 |
硬件虚拟化系统重启 | 40s | 4千年 |
物理系统重启 | 5m | 32千年 |
这个表需要时刻记在心中。