![超级慢 __vdso_gettimeofday](https://linux22.com/image/897236/%E8%B6%85%E7%BA%A7%E6%85%A2%20__vdso_gettimeofday.png)
我注意到我的__vdso_gettimeofday函数消耗了太多的计算时间。在我的系统上运行程序时,程序花费40 多岁阅读时间,而我的工作系统花费 0.037 秒。尽管我的系统运行的是更大的 CPU,但计算时间却只有慢 100. 使用linux perf工具评估计算时间的差异,即perf -F 99 python test.py。
此外,我使用 strace 验证了两个系统都在调用相同的系统调用。正如预期的那样,由于 vdso 的使用,gettimeofday 系统调用没有出现在那里。
两个系统都运行相同的 Ubuntu 内核(16.04,内核 4.4.0-98-generic x86_64),具有相同的 libc.so(GLIBC 2.23-0ubuntu9)。我的问题系统有一个运行最新微码和 Bios 的 Intel Skylake i7 7800X。因此,它不可能由此引起多线程错误。CPU 在其他基准测试中表现正常,整体性能似乎不错。
因此,我没主意了造成此性能瓶颈的原因。
- 那么您有什么想法,应该调查什么?
- 此缺陷是否仅由硬件缺陷引起?-> 不!
- 有人遇到过类似的问题或有类似的系统吗?
- 将发行版升级到 Ubuntu 17.04 有帮助吗?-> 是的!
编辑: 升级到 17.04 版发行版解决了这个问题。但是,如果这是 16.04 内核中的一个 Bug(特定于 Intel Skylake CPU),那么仍然很有趣。
有 Skylake CPU 的人可以尝试重现此问题吗?