Я заметил, что мой __ vdso_gettimeofday функция использует слишком много времени вычисления. При запущении программы в моей системе программа проводит 40-е, читая время, в то время как моя система работы проводит 0,037 с. Даже при том, что моя система выполняет намного больший ЦП, время вычисления фактором 100 медленнее. Различие во время вычисления было оценено с помощью инструмента перфекта Linux, т.е. перфекта-F 99 python test.py.
Кроме того, я проверил, что обе системы называют использование того же системного вызова strace. Как ожидалось gettimeofday системный вызов не обнаруживается там из-за vdso использования.
Обе системы выполняют то же Ядро Ubuntu (16.04, Ядро 4.4.0-98-универсальный x86_64), имеют тот же libc.so (2.23-0ubuntu9 GLIBC). Моя проблема, вызывающая систему, имеет Intel Skylake i7 7800X, выполняющий новейший микрокод и BIOS. Поэтому это не может быть вызвано этой ошибкой многопоточности. ЦП обычно ведет себя в других Сравнительных тестах, общая производительность кажется прекрасной.
Поэтому у меня закончились идеи причин для этого узкого места производительности.
Править: Обновление Дистрибутива 17,04 разрешило проблему. Однако все еще было бы интересно, если это - Ошибка в 16.04 Ядрах, которые характерны для Intel Skylake ЦП.
Мог кто-либо с ЦП Skylake пытаться воссоздать эту проблему?