Супер медленный __vdso_gettimeofday

Я заметил, что моя функция __vdso_gettimeofday потребляет слишком много времени для вычисления. При запуске программы в моей системе программа тратит 40 секунд на чтение, тогда как моя рабочая система тратит 0.037 секунд. Несмотря на то, что в моей системе работает гораздо больший процессор, время вычисления в 100 раз медленнее. Разницу во времени вычислений оценивали с использованием инструмента linux perf, то есть perf -F 99 python test.py.

Кроме того, я подтвердил, что обе системы используют один и тот же системный вызов, используя strace. Как и ожидалось, системный вызов gettimeofday не появляется там из-за использования vdso.

Обе системы работают с одним и тем же ядром Ubuntu (16.04, Kernel 4.4.0-98-generic x86_64), имеют тот же libc.so (GLIBC 2.23-0ubuntu9). У моей проблемы, вызывающей систему, есть Intel Skylake i7 7800X, работающий с новейшим микрокодом и Bios. Следовательно, это не может быть вызвано этой ошибкой многопоточности. ЦП ведет себя нормально в других тестах, общая производительность кажется прекрасной.

__ vdso_gettimeofday причин этого узкого места производительности.

Итак, есть ли у вас какие-то идеи, что нужно исследовать? Может ли этот дефект быть вызван дефектом оборудования? -> НЕТ! Кто-нибудь сталкивался с подобной проблемой или имел подобную систему? Может ли обновление Distro до Ubuntu 17.04 помочь? -> ДА!

Изменить: обновление Distro до 17.04 разрешило проблему. Тем не менее, было бы интересно, если это ошибка в ядре 16.04, что характерно для процессоров Intel Skylake.

Может ли кто-нибудь с процессором Skylake попытаться воссоздать эту проблему?

1
задан 10 November 2017 в 02:30

0 ответов

Другие вопросы по тегам:

Похожие вопросы: