性能之巅:洞悉系统、企业与云计算
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 延时

延时测量的是用于等待的时间。广义来说,它可以表示所有操作完成的耗时,例如,一次应用程序请求、一次数据库查询、一次文件系统操作,等等。举个例子,延时可以表示从点击链接到屏幕显示整个网页加载完成的时间。这是一个对于客户和网站提供商来说都非常重要的指标:高延时会令人沮丧,客户可能会选择到别处开展业务。

作为一个指标,延时可以估计最大增速(maximum speedup)。举个例子,图1.3 显示了一次数据库查询需要100ms 的时间(这就是延时),其中80ms 的阻塞是等待磁盘读取。通过减少磁盘读取时间(如通过使用缓存)可以达到最好的性能提升,并且可以计算出结果是五倍速(5x)。这就是估计出的增速,而且该计算还可以对性能问题做量化:是磁盘读取让查询慢了5 倍。

img

图1.3 磁盘I/O 延时示例

这样的计算对其他的指标类型不一定适用。比如,每秒发生的I/O 操作次数(IOPS),取决于I/O 的类型,往往不具备直接的可比性。如果一个变化导致IOPS 下降了80%,也很难知道这带来的性能影响会是怎样的。有可能是IOPS 小了5 倍,但若所有这些I/O 的数据量(字节)都变大10 倍了呢?

若以网络作为讨论背景,延时指的是建立一个连接的时间,而不是数据传输的时间。在本书里,每一章的开头都有术语解释,以澄清这类因场景不同所造成的术语含义的差别。

虽然延时是一个非常有用的指标,但也不是随时随地都能获得。某些系统只有平均延时,某些系统则完全没有延时指标。动态跟踪(dynamic tracing)可以从任意感兴趣的点测量延时,还可以提供数据以显示延时完整的分布情况。