Super lento __vdso_gettimeofday

1

Percebi que minha função __ vdso_gettimeofday consome muito tempo de computação. Ao executar um programa no meu sistema, o programa gasta 40s lendo o tempo , enquanto o meu sistema de trabalho gasta 0.037s. Mesmo que o meu sistema tenha uma CPU muito maior, o tempo de computação é por um fator 100 mais lento . A diferença no tempo de computação foi avaliada usando a ferramenta linux perf, ou seja, perf -F 99 python test.py.

Além disso, verifiquei que os dois sistemas estão chamando a mesma chamada de sistema usando strace. Como esperado, a chamada do sistema gettimeofday não aparece lá devido ao uso do vdso.

Ambos os sistemas estão executando o mesmo kernel do Ubuntu (16.04, Kernel 4.4.0-98-generic x86_64), possuem o mesmo libc.so (GLIBC 2.23-0ubuntu9). Meu sistema causador de problemas tem um Intel Skylake i7 7800X executando o mais novo microcódigo e Bios. Portanto, isso não pode ser causado por esse bug multithreading . A CPU se comporta normalmente em outros benchmarks, o desempenho geral parece bem.

Portanto, fiquei sem ideias de causas para esse gargalo de desempenho.

  1. Você tem alguma ideia, o que deve ser investigado?
  2. Esse defeito pode ser causado apenas por um defeito de hardware? - > NÃO!
  3. Alguém experimentou um problema semelhante ou tem um sistema semelhante?
  4. Poderia uma atualização do Distro para o Ubuntu 17.04 ajudar? - > SIM!

Editar: Uma atualização do Distro para o 17.04 resolveu o problema. No entanto, ainda seria interessante se este é um Bug no Kernel 16.04, que é específico para CPU Intel Skylake.

Alguém com uma CPU do Skylake pode tentar recriar esse problema?

    
por Michael 09.11.2017 / 21:55

0 respostas