我一直在估计最近公布的英特尔错误对我使用netmap的数据包处理应用程序的影响。到目前为止,我测量到每个poll()
系统调用处理大约 50 个数据包,但这个数字不包括gettimeofday()
调用。我还测量到每秒可以读取 1650 万次不存在的文件描述符(这是系统调用可以做的最便宜的事情)。我的数据包处理速率是每秒 176 万个数据包,或者就系统调用而言,每秒 03.52 万个系统调用。这意味着如果系统调用惩罚加倍,性能下降将是 0.0352 / 16.5 = 0.21333%,这几乎不是我应该担心的。
但是,我的应用程序可能会gettimeofday()
经常使用系统调用。我的理解是,这些不是真正的系统调用,而是作为虚拟系统调用实现的,如什么是 vdso 和 vsyscall?.
现在,我的问题是,对最近宣布的 Intel 错误(也可能会影响 ARM,可能不会影响 AMD)的修复是否会减慢gettimeofday()
系统调用速度?还是gettimeofday()
因为被实现为不同类型的虚拟系统调用而导致完全不同的动物?