性能

什么是Jitter?

定义

Jitter is variation in packet delay over time, as distinct from the average delay itself. For voice, gaming and trading, jitter often matters more than latency: a consistent 60 ms is far more usable than an average of 40 ms that regularly spikes to 200 ms, because buffers are sized for the worst case rather than the mean.

为什么Jitter很重要

对于语音、游戏和交易,抖动通常比延迟更重要:一致的 60 毫秒远比平均 40 毫秒但经常飙升至 200 毫秒的可用性高,因为缓冲区是按最坏情况而非平均值设计的。抖动通常源于拥塞链路上的排队、路由抖动,或者在服务器端——CPU 抢占时间延迟了本应响应的进程。最后一种原因在网络追踪中不可见,这也是为什么专用 vCPU 对延迟敏感的工作负载至关重要。使用 mtr 或长时间的 iperf3 运行来测量,而不是少数几次 ping;五次数据包的样本几乎无法告诉你关于方差的信息。

Jitter的实际应用

运行延迟敏感型服务时,抖动才是你用 mtr 或长时间 iperf3 测出来的东西,而不是几发 ping。关注延迟列的方差,不是只看平均值。如果看到峰值,检查宿主机的 CPU 偷占时间——这在网络追踪里是看不见的。要降低抖动,确保你拥有专用 vCPU,而不是共享资源。搞错了,你的缓冲区就会按最坏情况来定,那么在高峰期,你的语音、游戏或交易流量就会劣化到不可用。

人们对Jitter常见的误解

人们以为低平均延迟就意味着性能好。常见的错误是忽略方差,觉得 40 毫秒平均、偶尔飙到 200 毫秒没问题。正确的是:抖动常常比延迟更重要——缓冲区是按最坏情况定的,所以稳定的 60 毫秒优于平均 40 毫秒但经常飙高的。一定要持续测量。

Jitter —— 常见问题

用什么工具可以测抖动?

用 mtr 快速查看,或用长时间 iperf3 运行做方差分析。五包 ping 样本几乎说明不了抖动——它只展示平均延迟。长时间测试才能揭示对真实流量真正重要的延迟变化峰值。

CPU 偷占时间如何影响抖动?

CPU 偷占时间延迟了本该回复数据包的进程,造成意外的延迟峰值。这个原因在网络追踪中不可见,所以经常被忽略。这也是为什么专用 vCPU 对延迟敏感型负载很重要——在共享主机上,偷占时间会引入你无法在网络侧解决的抖动。

更多来自性能

CPU steal time(CPU偷取时间)
Steal time是虚拟CPU已准备好运行但hypervisor将物理核心给了另一个客户机的时间比例。
RTT
RTT 是数据包到达目的地并返回响应所需的时间,以毫秒为单位。
TTFB
TTFB 衡量从发送请求到收到响应的第一个字节所花的时间。