Atualização: o patch do kernel para problemas incorretos de frequência do TSC foi mesclado. Construir um kernel com este patch corrige o problema.
Ubuntu 16.04.1 LTS Kernel 4.10.0-38-genérico MB: ASRock X299 Taichi CPU: Intel i7-7820X, sem overclock
Este exemplo deve produzir um som contíguo por 10 segundos, mas ele quebra várias vezes.
Compilando:
g++ pulsefail.cpp -std=c++11 -lpulse-simple -lpulse
./a.out
Depois de adicionar as seguintes opções de linha de comando do kernel:
clocksource=hpet lapic=notscdeadline
O exemplo funciona como pretendido. E o desempenho geral do sistema e a capacidade de resposta são muito melhores.
Eu também tentei medir a frequência do TSC nesta amostra usando a instrução __rdtsc. Antes de adicionar as opções do kernel, ele foi calculado para ~ 3,75 GHz, mas depois de aplicar a solução alternativa, ele se tornou ~ 3,60 GHz.
Resultados notáveis de 'dmesg | grep TSC 'depois de mudar as opções do kernel:
[ 0.000000] [Firmware Bug]: TSC ADJUST: CPU0: -2477218568993634 force to 0
[ 0.183572] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU1: 0
[ 0.184601] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU2: 0
[ 0.185638] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU3: 0
[ 0.186669] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU4: 0
[ 0.187698] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU5: 0
[ 0.188724] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU6: 0
[ 0.189807] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU7: 0
[ 0.190802] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU8: 0
[ 0.191845] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU9: 0
[ 0.192869] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU10: 0
[ 0.193901] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU11: 0
[ 0.194928] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU12: 0
[ 0.195960] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU13: 0
[ 0.196986] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU14: 0
[ 0.198070] [Firmware Bug]: TSC ADJUST differs: Reference CPU0: -2477218568993634 CPU15: 0
[ 16.499107] vboxdrv: TSC mode is Invariant, tentative frequency 3600020432 Hz
Sem eles, não há muito mais, exceto a alteração da clocksource. Não há erros nem nada, mas a frequência do TSC é calculada perto de 3,75 GHz.
Tags intel