¿Cómo diagnostico una desaceleración repentina?

¿Cómo diagnostico una desaceleración repentina?

Ejecutar una tarea particularmente intensiva en mi computadora (Tecra W50) durante más de unos segundos hace que se vuelva muy lenta. El rendimiento no vuelve a la normalidad una vez completada la tarea.

  • La ejecución time python3 -c "for i in range(10000000): pass"imprime 0,2 segundos antes de que la computadora comience a funcionar lenta, pero 2,1 segundos después.

  • Reiniciar soluciona el problema, hasta la próxima vez que ejecute una tarea intensiva.

  • dmesgno muestra nada de las últimas 2 horas

  • htopmuestra un bajo uso de recursos, tanto en términos de CPU como de RAM.

  • No realicé una actualización dist recientemente, pero instalé un nuevo kernel (3.16.0-38-generic)

¿Cómo debo abordar este problema?

EDITAR:

Basado en un comentario revelador de Harald, descarté /proc/cpuinfoantes y después de ejecutar una tarea de computación intensiva. La diferencia es bastante reveladora:

@@ -5,7 +5,7 @@
 model name : Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz
 stepping   : 3
 microcode  : 0x1c
-cpu MHz        : 2800.218
+cpu MHz        : 609.218
 cache size : 6144 KB
 physical id    : 0
 siblings   : 8

(Esto se repite 8 veces con números similares).

Algunos datos más (tomado mientras todo todavía funcionaba rápido):

/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
intel_pstate
/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
3800000
/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
800000
/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
performance powersave

Y llamar a los sensores mientras la tarea se está ejecutando (antes de la desaceleración) produce esto:

$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +99.0°C  (crit = +102.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +99.0°C  (high = +84.0°C, crit = +100.0°C)
Core 0:         +97.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:         +99.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:         +93.0°C  (high = +84.0°C, crit = +100.0°C)
Core 3:         +86.0°C  (high = +84.0°C, crit = +100.0°C)

Unos segundos más tarde baja a 60 y todo es más lento.

Hice algunos tiempos más precisos: el pequeño script de Python de arriba con un cero extra cambia de

real    0m2.869s
user    0m2.868s
sys 0m0.004s

antes de ejecutar cualquier cosa intensiva para

real    0m19.208s
user    0m19.217s
sys 0m0.004s

después de unos segundos de trabajo pesado.

Esto es lo que cpuinfo | grep MHzdice mientras se ejecuta la prueba rápida:

cpu MHz     : 3799.359
cpu MHz     : 3800.015
cpu MHz     : 3156.453
cpu MHz     : 2791.250
cpu MHz     : 3623.484
cpu MHz     : 3120.687
cpu MHz     : 2887.828
cpu MHz     : 3129.656

y mientras se ejecuta la prueba lenta:

cpu MHz     : 608.015
cpu MHz     : 599.921
cpu MHz     : 610.531
cpu MHz     : 590.406
cpu MHz     : 642.906
cpu MHz     : 576.515
cpu MHz     : 606.484
cpu MHz     : 593.468

Los horarios no parecen cambiar demasiado después echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct:

real    0m18.938s
user    0m18.909s
sys 0m0.036s

tampoco cambian después echo 100:

real    0m20.201s
user    0m20.195s
sys 0m0.016s

El problema no aparece en 3.13.0-37-generic. El resultado de sensorssigue siendo el anterior, pero el rendimiento de la prueba de Python pequeño no cambia antes y después de la prueba. La salida de cpuinfoes la siguiente:

cpu MHz     : 800.000
cpu MHz     : 2801.000
cpu MHz     : 800.000
cpu MHz     : 800.000
cpu MHz     : 800.000
cpu MHz     : 800.000
cpu MHz     : 800.000
cpu MHz     : 800.000

lo cual tiene sentido, ya que la prueba es de un solo subproceso. En ese núcleo, algunas cosas también son diferentes:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
acpi-cpufreq
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
2801000
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
800000
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
conservative ondemand userspace powersave performance 

También capturé la salida del turbostato un poco antes, durante y después de una tarea de computación intensiva en el intel_pstatecontrolador:

Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 9 0,57 1662 2793 0 0,85 0,01 0,05 98,53 45 48 95,66 0,00 0,00 0,00 2,35 0,06 0,00
   0 0 19 1,18 1643 2793 29 0,32 0,00 0,00 98,50 45 48 95,66 0,00 0,00 0,00 2,35 0,06 0,00
   0 1 2 0,15 1643 2793 29 1,35
   1 2 7 0,45 1476 2793 29 0,85 0,05 0,18 98,47 43
   1 3 10 0,59 1654 2793 29 0,71
   2 4 8 0,49 1644 2794 29 0,23 0,00 0,00 99,28 43
   2 5 3 0,18 1624 2794 29 0,54
   3 6 5 0,34 1475 2794 29 1,80 0,00 0,00 97,85 43
   3 7 22 1,19 1824 2794 29 0,95
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 2142 60,38 3547 2794 0 4,77 0,07 0,15 34,64 89 89 30,27 0,00 0,00 0,00 36,95 30,53 0,00
   0 0 2138 60,55 3530 2794 32 3,22 0,02 0,17 36,03 80 89 30,27 0,00 0,00 0,00 36,95 30,53 0,00
   0 1 2153 60,36 3568 2794 32 3,41
   1 2 2144 60,46 3547 2794 32 6,65 0,12 0,04 32,73 89
   1 3 2127 60,10 3539 2794 32 7,01
   2 4 2113 59,67 3542 2794 32 3,95 0,07 0,02 36,29 78
   2 5 2160 60,52 3569 2794 32 3,10
   3 6 2133 59,95 3558 2794 32 6,13 0,07 0,35 33,49 72
   3 7 2163 61,41 3522 2794 32 4,68
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 3548 98,89 3588 2794 0 1,11 0,00 0,00 0,00 91 91 0,00 0,00 0,00 0,00 56,62 47,73 0,00
   0 0 3542 98,73 3588 2794 32 1,27 0,00 0,00 0,00 84 91 0,00 0,00 0,00 0,00 56,62 47,73 0,00
   0 1 3540 98,67 3588 2794 32 1,33
   1 2 3553 99,02 3588 2794 32 0,98 0,00 0,00 0,00 91
   1 3 3582 99,84 3588 2794 32 0,16
   2 4 3518 98,06 3588 2794 32 1,94 0,00 0,00 0,00 84
   2 5 3563 99,31 3588 2794 32 0,69
   3 6 3586 99,95 3588 2794 32 0,05 0,00 0,00 0,00 78
   3 7 3499 97,53 3588 2794 32 2,47
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 3565 99,30 3590 2794 0 0,70 0,00 0,00 0,00 95 95 0,00 0,00 0,00 0,00 56,53 47,58 0,00
   0 0 3570 99,46 3590 2794 27 0,54 0,00 0,00 0,00 89 95 0,00 0,00 0,00 0,00 56,53 47,58 0,00
   0 1 3574 99,57 3590 2794 27 0,43
   1 2 3589 99,98 3590 2794 27 0,02 0,00 0,00 0,00 95
   1 3 3563 99,26 3590 2794 27 0,74
   2 4 3519 98,01 3590 2794 27 1,99 0,00 0,00 0,00 87
   2 5 3589 99,98 3590 2794 27 0,02
   3 6 3558 99,11 3590 2794 27 0,89 0,00 0,00 0,00 80
   3 7 3556 99,05 3590 2794 27 0,95
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 2861 98,83 2895 2794 0 1,17 0,00 0,00 0,00 93 93 0,00 0,00 0,00 0,00 46,17 38,07 0,00
   0 0 2854 98,57 2896 2794 43 1,43 0,00 0,00 0,00 89 93 0,00 0,00 0,00 0,00 46,17 38,07 0,00
   0 1 2854 98,70 2891 2794 43 1,30
   1 2 2853 98,57 2895 2794 43 1,43 0,00 0,00 0,00 93
   1 3 2892 99,79 2898 2794 43 0,21
   2 4 2865 98,92 2896 2794 43 1,08 0,00 0,00 0,00 87
   2 5 2821 97,81 2884 2794 43 2,19
   3 6 2874 99,17 2898 2794 43 0,83 0,00 0,00 0,00 83
   3 7 2873 99,15 2898 2794 43 0,85
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 2834 98,72 2871 2794 0 1,27 0,00 0,00 0,00 97 97 0,00 0,00 0,00 0,00 46,45 38,38 0,00
   0 0 2823 98,37 2870 2794 50 1,63 0,00 0,00 0,00 95 97 0,00 0,00 0,00 0,00 46,45 38,38 0,00
   0 1 2842 99,00 2871 2794 50 1,00
   1 2 2839 98,80 2873 2794 50 1,20 0,00 0,00 0,00 97
   1 3 2868 99,72 2876 2794 50 0,28
   2 4 2817 98,17 2869 2794 50 1,81 0,01 0,01 0,00 93
   2 5 2813 98,16 2866 2794 50 1,82
   3 6 2832 98,61 2872 2794 50 1,39 0,00 0,00 0,00 88
   3 7 2841 98,95 2871 2794 50 1,05
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 2172 98,67 2202 2793 0 1,33 0,00 0,00 0,00 95 95 0,00 0,00 0,00 0,00 34,06 26,79 0,00
   0 0 2171 97,75 2221 2793 60 2,25 0,00 0,00 0,00 93 95 0,00 0,00 0,00 0,00 34,06 26,79 0,00
   0 1 2156 98,42 2190 2793 60 1,57
   1 2 2175 98,74 2202 2793 60 1,26 0,00 0,00 0,00 95
   1 3 2180 99,24 2197 2793 60 0,76
   2 4 2173 98,73 2201 2793 60 1,27 0,00 0,00 0,00 93
   2 5 2161 98,52 2194 2794 60 1,48
   3 6 2181 98,88 2206 2794 60 1,12 0,00 0,00 0,00 87
   3 7 2180 99,08 2200 2794 60 0,92
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 2415 98,38 2455 2793 0 1,61 0,00 0,00 0,01 70 70 0,00 0,00 0,00 0,00 38,87 31,59 0,00
   0 0 2377 97,24 2444 2793 54 2,73 0,00 0,00 0,03 68 70 0,00 0,00 0,00 0,00 38,87 31,59 0,00
   0 1 2392 97,66 2449 2793 54 2,31
   1 2 2449 99,32 2466 2793 54 0,68 0,00 0,00 0,00 70
   1 3 2418 98,61 2452 2793 54 1,39
   2 4 2437 99,00 2462 2793 54 1,00 0,00 0,00 0,00 66
   2 5 2393 97,79 2447 2793 54 2,21
   3 6 2426 98,58 2461 2793 54 1,42 0,00 0,00 0,00 68
   3 7 2430 98,82 2459 2793 54 1,18
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 1626 98,64 1648 2794 0 1,36 0,00 0,00 0,00 66 66 0,00 0,00 0,00 0,00 24,97 18,61 0,00
   0 0 1628 98,45 1654 2794 41 1,55 0,00 0,00 0,00 63 66 0,00 0,00 0,00 0,00 24,97 18,61 0,00
   0 1 1648 99,49 1656 2794 41 0,51
   1 2 1630 98,82 1650 2794 41 1,18 0,00 0,00 0,00 66
   1 3 1607 98,05 1639 2794 41 1,95
   2 4 1637 98,85 1656 2794 41 1,15 0,00 0,00 0,00 63
   2 5 1.638 99,18 1.652 2.794 41 0,82
   3 6 1645 99,25 1657 2794 41 0,75 0,00 0,00 0,00 64
   3 7 1571 97,01 1620 2794 41 2,99
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 594 99,29 598 2794 0 0,71 0,00 0,00 0,00 63 63 0,00 0,00 0,00 0,00 7,26 2,11 0,00
   0 0 600 98,85 607 2794 9 1,15 0,00 0,00 0,00 61 63 0,00 0,00 0,00 0,00 7,26 2,11 0,00
   0 1 585 99,28 590 2 794 9 0,72
   1 2 604 99,58 607 2794 9 0,42 0,00 0,00 0,00 63
   1 3 582 98,72 590 2 794 9 1,28
   2 4 605 99,71 607 2794 9 0,29 0,00 0,00 0,00 60
   2 5 589 99,86 590 2 794 9 0,14
   3 6 598 98,49 607 2794 9 1,51 0,00 0,00 0,00 59
   3 7 589 99,87 589 2 794 9 0,13
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 368 61,51 598 2794 0 3,20 0,26 1,62 33,41 58 58 25,93 0,00 0,00 0,00 5,52 1,30 0,00
   0 0 369 60,85 607 2794 9 0,78 0,28 2,22 35,86 58 58 25,93 0,00 0,00 0,00 5,52 1,30 0,00
   0 1 349 59,17 590 2 794 9 2,46
   1 2 365 60,08 607 2794 9 3,01 0,60 0,16 36,15 58
   1 3 359 60,87 590 2 794 9 2,21
   2 4 376 61,97 607 2794 9 2,48 0,09 4,07 31,40 56
   2 5 351 59,60 590 2 794 9 4,84
   3 6 376 61,86 607 2794 9 7,83 0,07 0,02 30,23 56
   3 7 398 67,65 589 2794 9 2,03
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 7 1,11 603 2794 0 1,28 0,02 0,02 97,57 54 56 91,75 0,00 0,00 0,00 2,43 0,03 0,00
   0 0 17 2,77 609 2794 9 0,49 0,05 0,03 96,65 54 56 91,75 0,00 0,00 0,00 2,43 0,03 0,00
   0 1 1 0,20 640 2794 9 3,07
   1 2 6 0,95 615 2794 9 3,56 0,02 0,03 95,45 54
   1 3 20 3,39 585 2794 9 1,11
   2 4 1 0,22 659 2794 9 0,31 0,00 0,00 99,47 53
   2 5 1 0,21 634 2794 9 0,32
   3 6 2 0,29 628 2794 9 1,01 0,00 0,00 98,70 54
   3 7 5 0,89 604 2794 9 0,41
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 8 1,38 602 2794 0 1,68 0,02 0,01 96,92 53 55 89,75 0,00 0,00 0,00 2,45 0,03 0,00
   0 0 9 1,49 613 2794 9 0,55 0,05 0,00 97,90 53 55 89,75 0,00 0,00 0,00 2,45 0,03 0,00
   0 1 1 0,16 650 2794 9 1,89
   1 2 13 2,14 609 2794 9 3,66 0,02 0,00 94,19 52
   1 3 20 3,42 584 2794 9 2,37
   2 4 8 1,30 612 2794 9 0,52 0,00 0,03 98,14 51
   2 5 2 0,25 627 2794 9 1,58
   3 6 2 0,35 635 2794 9 2,21 0,01 0,00 97,44 52
   3 7 11 1,92 597 2794 9 0,64
Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
   - - 8 1,26 601 2794 0 1,45 0,02 0,01 97,26 52 54 90,61 0,00 0,00 0,00 2,40 0,03 0,00
   0 0 6 0,93 622 2794 9 0,37 0,01 0,00 98,69 52 54 90,61 0,00 0,00 0,00 2,40 0,03 0,00
   0 1 1 0,15 653 2794 9 1,16
   1 2 8 1,23 611 2794 9 4,54 0,00 0,01 94,21 51
   1 3 26 4,41 584 2794 9 1,37
   2 4 11 1,76 611 2794 9 0,48 0,03 0,05 97,68 50
   2 5 2 0,30 621 2794 9 1,94
   3 6 2 0,30 642 2794 9 1,23 0,02 0,00 98,45 50
   3 7 6 1,04 602 2794 9 0,50

Alguna información adicional (después de ejecutar una tarea intensiva):

10:00:26 /sys/clase/térmico
$ sudo grep -r . *
dispositivo_enfriamiento0/tipo:Procesador
dispositivo_enfriamiento0/potencia/control:auto
Cooling_device0/power/async: deshabilitado
Cooling_device0/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento0/power/runtime_active_kids:0
dispositivo_enfriamiento0/power/runtime_active_time:0
grep: Cooling_device0/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device0/power/runtime_status: no compatible
dispositivo_enfriamiento0/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento0/power/runtime_suspended_time:0
dispositivo_enfriamiento0/estado_cur:0
dispositivo_enfriamiento0/estado_max:10
dispositivo_enfriamiento1/tipo:Procesador
dispositivo_enfriamiento1/potencia/control:auto
dispositivo_enfriamiento1/potencia/async: deshabilitado
dispositivo_enfriamiento1/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento1/potencia/runtime_active_kids:0
dispositivo_enfriamiento1/power/runtime_active_time:0
grep: Cooling_device1/power/autosuspend_delay_ms: error de entrada/salida
dispositivo_enfriamiento1/power/runtime_status:no admitido
dispositivo_enfriamiento1/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento1/potencia/tiempo_ejecución_suspendido:0
dispositivo_enfriamiento1/estado_cur:0
dispositivo_enfriamiento1/estado_max:10
dispositivo_enfriamiento2/tipo:Procesador
dispositivo_enfriamiento2/potencia/control:auto
Cooling_device2/power/async: deshabilitado
Cooling_device2/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento2/potencia/runtime_active_kids:0
dispositivo_enfriamiento2/power/runtime_active_time:0
grep: Cooling_device2/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device2/power/runtime_status: no compatible
dispositivo_enfriamiento2/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento2/power/runtime_suspended_time:0
dispositivo_enfriamiento2/estado_cur:0
dispositivo_enfriamiento2/estado_max:10
dispositivo_enfriamiento3/tipo:Procesador
dispositivo_enfriamiento3/potencia/control:auto
Cooling_device3/power/async: deshabilitado
Cooling_device3/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento3/power/runtime_active_kids:0
dispositivo_enfriamiento3/power/runtime_active_time:0
grep: Cooling_device3/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device3/power/runtime_status: no compatible
dispositivo_enfriamiento3/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento3/power/runtime_suspended_time:0
dispositivo_enfriamiento3/estado_cur:0
dispositivo_enfriamiento3/estado_max:10
dispositivo_enfriamiento4/tipo:Procesador
dispositivo_enfriamiento4/potencia/control:auto
Cooling_device4/power/async: deshabilitado
Cooling_device4/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento4/power/runtime_active_kids:0
dispositivo_enfriamiento4/power/runtime_active_time:0
grep: Cooling_device4/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device4/power/runtime_status: no compatible
dispositivo_enfriamiento4/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento4/power/runtime_suspended_time:0
dispositivo_enfriamiento4/estado_cur:0
dispositivo_enfriamiento4/max_state:10
dispositivo_enfriamiento5/tipo:Procesador
dispositivo_enfriamiento5/potencia/control:auto
Cooling_device5/power/async: deshabilitado
Cooling_device5/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento5/potencia/runtime_active_kids:0
dispositivo_enfriamiento5/power/runtime_active_time:0
grep: Cooling_device5/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device5/power/runtime_status: no compatible
dispositivo_enfriamiento5/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento5/power/runtime_suspended_time:0
dispositivo_enfriamiento5/estado_cur:0
dispositivo_enfriamiento5/estado_max:10
dispositivo_enfriamiento6/tipo:Procesador
dispositivo_enfriamiento6/potencia/control:auto
Cooling_device6/power/async: deshabilitado
Cooling_device6/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento6/power/runtime_active_kids:0
dispositivo_enfriamiento6/power/runtime_active_time:0
grep: Cooling_device6/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device6/power/runtime_status: no compatible
dispositivo_enfriamiento6/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento6/power/runtime_suspended_time:0
dispositivo_enfriamiento6/estado_cur:0
dispositivo_enfriamiento6/max_state:10
dispositivo_enfriamiento7/tipo:Procesador
dispositivo_enfriamiento7/potencia/control:auto
Cooling_device7/power/async: deshabilitado
Cooling_device7/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento7/power/runtime_active_kids:0
dispositivo_enfriamiento7/power/runtime_active_time:0
grep: Cooling_device7/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device7/power/runtime_status: no compatible
dispositivo_enfriamiento7/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento7/power/runtime_suspended_time:0
dispositivo_enfriamiento7/estado_cur:0
dispositivo_enfriamiento7/max_state:10
dispositivo_enfriamiento8/tipo:LCD
dispositivo_enfriamiento8/potencia/control:auto
Cooling_device8/power/async: deshabilitado
Cooling_device8/power/runtime_enabled: deshabilitado
Cooling_device8/power/runtime_active_kids:0
dispositivo_enfriamiento8/power/runtime_active_time:0
grep: Cooling_device8/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device8/power/runtime_status: no compatible
dispositivo_enfriamiento8/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento8/power/runtime_suspended_time:0
dispositivo_enfriamiento8/estado_cur:0
dispositivo_enfriamiento8/max_state:100
dispositivo_enfriamiento9/tipo:intel_powerclamp
dispositivo_enfriamiento9/potencia/control:auto
Cooling_device9/power/async: deshabilitado
Cooling_device9/power/runtime_enabled: deshabilitado
dispositivo_enfriamiento9/power/runtime_active_kids:0
dispositivo_enfriamiento9/power/runtime_active_time:0
grep: Cooling_device9/power/autosuspend_delay_ms: error de entrada/salida
Cooling_device9/power/runtime_status: no compatible
dispositivo_enfriamiento9/potencia/uso_tiempo de ejecución:0
dispositivo_enfriamiento9/power/runtime_suspended_time:0
dispositivo_enfriamiento9/estado_cur:-1
dispositivo_enfriamiento9/estado_max:50
zona_térmica0/modo:habilitado
zona_térmica0/temp:83000
zona_termal0/tipo:acpitz
Thermal_zone0/potencia/control:auto
Thermal_zone0/power/async: deshabilitado
Thermal_zone0/power/runtime_enabled: deshabilitado
Thermal_zone0/power/runtime_active_kids:0
Thermal_zone0/power/runtime_active_time:0
grep: Thermal_zone0/power/autosuspend_delay_ms: error de entrada/salida
Thermal_zone0/power/runtime_status: no compatible
Thermal_zone0/power/runtime_usage:0
Thermal_zone0/power/runtime_suspended_time:0
grep: Thermal_zone0/emul_temp: Permiso denegado
zona_termal0/punto_viaje_0_temp:102000
zona_térmica0/punto_de_viaje_0_tipo:crítico
Thermal_zone0/policy:step_wise
zona_térmica0/pasivo:0
zona_térmica1/temp:51000
zona_térmica1/tipo:x86_pkg_temp
Thermal_zone1/potencia/control:auto
Thermal_zone1/power/async: deshabilitado
Thermal_zone1/power/runtime_enabled: deshabilitado
Thermal_zone1/power/runtime_active_kids:0
Thermal_zone1/power/runtime_active_time:0
grep: Thermal_zone1/power/autosuspend_delay_ms: error de entrada/salida
Thermal_zone1/power/runtime_status: no compatible
zona_térmica1/potencia/uso_tiempo de ejecución:0
Thermal_zone1/power/runtime_suspended_time:0
grep: Thermal_zone1/emul_temp: Permiso denegado
zona_térmica1/punto_viaje_0_temp:0
zona_térmica1/punto_de_viaje_0_tipo:pasivo
zona_termal1/punto_viaje_1_temp:0
zona_térmica1/punto_de_viaje_1_tipo:pasivo
zona_térmica1/política:paso_sabio

Y la salida deturbostat -d sleep 10

$ sudo ~/dls/turbostat -d dormir 10
versión turbostato 4.7 17 de junio de 2015 - Len Brown
CPUID(0): niveles de CPUID Intel genuinos de 13; familia:modelo:paso a paso 0x6:3c:3 (6:60:3)
CPUID(6): APERF, DTS, PTM, EPB
RAPL: 5578 seg. Rango de contador Joule, a 47 vatios
CPU5: MSR_NHM_PLATFORM_INFO: 0x80838f3011c00
8 * 100 = frecuencia de eficiencia máxima de 800 MHz
28 * 100 = frecuencia base de 2800 MHz
cpu5: MSR_IA32_POWER_CTL: 0x0004005d (promoción automática C1E: deshabilitada)
cpu5: MSR_TURBO_RATIO_LIMIT: 0x24242526
36 * 100 = 3600 MHz máx. turbo 4 núcleos activos
36 * 100 = 3600 MHz máx. turbo 3 núcleos activos
37 * 100 = 3700 MHz máx. turbo 2 núcleos activos
38 * 100 = 3800 MHz máximo turbo 1 núcleos activos
cpu5: MSR_CONFIG_TDP_NOMINAL: 0x0000001c (base_ratio=12)
CPU5: MSR_CONFIG_TDP_LEVEL_1: 0x00000000 ()
cpu5: MSR_CONFIG_TDP_LEVEL_2: 0x00000000 ()
cpu5: MSR_CONFIG_TDP_CONTROL: 0x80000000 (bloqueo = 1)
cpu5: MSR_TURBO_ACTIVATION_RATIO: 0x00000000 (MAX_NON_TURBO_RATIO=0 bloqueo=0)
cpu5: MSR_NHM_SNB_PKG_CST_CFG_CTL: 0x1e008405 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, bloqueado: pkg-cstate-limit=5: pc7s)
cpu0: MSR_IA32_ENERGY_PERF_BIAS: 0x00000006 (equilibrado)
cpu0: MSR_CORE_PERF_LIMIT_REASONS, 0x38210000 (Activo:) (Registrado: Transiciones, MultiCoreTurbo, PkgPwrL2, Auto-HWP, PROCHOT,)
cpu0: MSR_GFX_PERF_LIMIT_REASONS, 0x00000000 (Activo:) (Registrado:)
cpu0: MSR_RING_PERF_LIMIT_REASONS, 0x0c000000 (Activo:) (Registrado: PkgPwrL1, PkgPwrL2,)
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0,125000 vatios, 0,000061 julios, 0,000977 seg.)
cpu0: MSR_PKG_POWER_INFO: 0x00000178 (TDP de 47 W, RAPL 0 - 0 W, 0,000000 seg.)
cpu0: MSR_PKG_POWER_LIMIT: 0x4281d600dc8178 (desbloqueado)
cpu0: Límite de PKG n.º 1: habilitado (47,000000 vatios, 28,000000 segundos, abrazadera deshabilitada)
cpu0: Límite de PKG n.º 2: habilitado (58,750000 vatios, 0,002441* seg., abrazadera deshabilitada)
CPU0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (desbloqueado)
cpu0: Límite de núcleos: DESactivado (0,000000 vatios, 0,000977 segundos, abrazadera DESactivada)
CPU0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (desbloqueado)
cpu0: Límite GFX: DESactivado (0,000000 vatios, 0,000977 segundos, abrazadera DESactivada)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x00641000 (100 C)
CPU0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88310808 (51 C)
CPU0: MSR_IA32_THERM_STATUS: 0x88310808 (51 C +/- 1)
CPU2: MSR_IA32_THERM_STATUS: 0x88340808 (48 C +/- 1)
CPU4: MSR_IA32_THERM_STATUS: 0x88340808 (48 C +/- 1)
CPU6: MSR_IA32_THERM_STATUS: 0x88330808 (49 C +/- 1)
    Núcleo CPU Promedio_MHz %Ocupado Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Paquete%pc2 Paquete%pc3 Paquete%pc6 Paquete%pc7 PaqueteWatt CorWatt GFXWatt
       - - 4 0,72 612 2794 0 1,10 0,02 0,01 98,16 51 53 93,95 0,00 0,00 0,00 2,26 0,02 0,00
       0 0 8 1,23 617 2794 18 1,48 0,03 0,01 97,26 51 53 93,95 0,00 0,00 0,00 2,26 0,02 0,00
       0 1 3 0,55 602 2794 18 2,16
       1 2 12 1,93 609 2794 18 0,76 0,05 0,02 97,24 49
       1 3 5 0,84 598 2794 18 1,85
       2 4 2 0,32 637 2794 18 0,87 0,00 0,00 98,81 49
       2 5 2 0,26 616 2794 18 0,92
       3 6 3 0,42 628 2794 18 0,25 0,00 0,00 99,32 50
       3 7 1 0,19 630 2794 18 0,49
10.003772 seg

Salida de sudo rdmsr -a 0x19aantes de ejecutar una tarea intensiva:

$ sudo rdmsr -a 0x19a
0
0
0
0
0
0
0
0

Después:

$ sudo rdmsr -a 0x19a
1c
1c
1c
1c
1c
1c
1c
1c

No hay nada kern.logsobre las temperaturas.

Respuesta1

Me gustaría intentar ayudarte con tu problema.
Me gustaría que intentara ayudarme a comprender mejor su problema específico.

La condición en la que un procesador Intel relativamente reciente se bloquea en alrededor de 600 MHz, donde el pstate mínimo para el paquete es 800 MHz, se ha observado muchas veces. Sin embargo, solo soy consciente de la condición que ocurre después de reanudar una suspensión a una embestida. Además, la condición (de aproximadamente el 75% de lo solicitado, no el bloqueo a esa frecuencia) se ha atribuido (correcta o incorrectamente) a un problema de BIOS, particularmente en el Dell E6320.

EDITAR: Teoría: con la versión actual del controlador intel_pstate, cualquier activación de la regulación térmica a través de la modulación del reloj dará como resultado que la frecuencia de la CPU informada se bloquee en una frecuencia muy baja.
El controlador acpi-cpufreq no sufre este problema. Tenga en cuenta que un conjunto de parches propuesto para el controlador intel_pstate tampoco sufre este problema.
Además de los datos deseados del turbostato, un registro MSR adicional ayudará a confirmar o desmentir esta teoría.

¿Estaría dispuesto a realizar estas pruebas y editar los resultados en su pregunta?

. Después de reducir la velocidad. Haz tu time python3 -c "for i in range(10000000): pass"prueba. Hazlo unas 10 o 100 veces más largo y, mientras esté funcionando, hazlo grep MHz /proc/cpuinfo. ¿Están todas las CPU atascadas en alrededor de 600MHz? (En su publicación original no me queda claro si los 600 MHz se debían simplemente a que estaban inactivos o si están atascados allí).

. Después de un nuevo arranque, y antes de cualquier tarea intensiva, ¿su pequeña herramienta de prueba se ejecuta más rápido que 0,2 segundos (quizás use 10 o 100 veces más para extraer dígitos más significativos)? ¿Y qué frecuencias de CPU obtienes? IE eran los 2800 MHz que ya mencionaste, aproximadamente 0,75 X 3800 MHz. o la CPU realmente llegará a 3800 MHz (dependiendo de la actividad de otras CPU y si el turbo está habilitado).

. Para evitar el bloqueo de frecuencia, se agregó un parche al controlador intel_pstate a partir de la serie 4.2RC (versión candidata). Si el resultado de la prueba 1 anterior fue que la frecuencia está bloqueada, ¿estaría dispuesto a probar el kernel?4.3RC4. Es posible que no se desbloquee en su caso, porque el problema (a diferencia del problema del BIOS) estaba relacionado con la suspensión.

. Si el resultado de la prueba 1 anterior es que la frecuencia está bloqueada, ¿esto la desbloquea?:

$ echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
50

espere 5 segundos para asegurarse de que todas las CPU estén activadas. Una CPU inactiva puede tardar hasta 4 segundos en ejecutar un pase a través del controlador intel_pstate.

$ echo "100" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
100

Y si lo desbloquea, ¿se queda aproximadamente en 0,75 veces lo que debería ser?

Verifique también la configuración de su BIOS. Sin embargo, no sé qué estarías buscando.

Revise también su /var/log/kern.logarchivo para detectar cualquier mensaje relacionado con la temperatura.

Será útil proporcionar el resultado de la desaceleración antes y después de:

sudo turbostat -d sleep 10

o, para versiones anteriores de turbostato, aún podría ser:

sudo turbostat -v sleep 10

También se necesita otro registro MSR ( sudo modprobe msrprimero se necesita uno por arranque):

sudo rdmsr -a 0x19a

También se necesita el resultado de:

cd /sys/class/thermal
grep -r . *

Es posible que necesites instalar el linux-toolspaquete para obtener turbostat, y si esa versión de turbostat no es lo suficientemente nueva, es posible que tengas que hacer una sudo modprobe msrprimero.

Según sus pruebas, la raíz del problema parece ser que su procesador se está sobrecalentando y se está reduciendo por sí solo para protegerse. Sin embargo, parece bloquearse en esta condición y no recuperarse. Me gustaría mucho entender por qué, y las pruebas del turbostato mencionadas anteriormente me darán una idea. En particular (creo) estamos interesados ​​en comprender y decodificar la MSR_IA32_PACKAGE_THERM_STATUSlínea para las diferentes condiciones y diferentes factores. También estamos interesados ​​en comprender y decodificar el IA32_CLOCK_MODULATION MSR (0x19A).

Según sus pruebas, parece que el problema solo está presente con el controlador de escalado de frecuencia intel_pstate y no con el controlador de escalado de frecuencia acpi cpufreq. Pensé que el controlador intel_pstate se usaba de forma predeterminada desde hace algún tiempo.

Si solo desea continuar con las cosas, puede desactivar el uso del controlador de escala de frecuencia intel_pstate. Edite el archivo /etc/default/grub, quizás haciendo una copia primero, y agréguelo intel_pstate=disablea la GRUB_CMDLINE_LINUX_DEFAULTlínea. Aquí hay un ejemplo de una de mis computadoras:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 intel_pstate=disable net.ifnames=1 biosdevname=0 crashkernel=384M-:128M"

Tendrás que hacer la edición como sudo y tendrás que ejecutarla sudo update-grubdespués y luego reiniciar.

Sin embargo, le agradecería mucho que, cuando los tiempos lo permitan, continuara ayudando a investigar el problema con el controlador intel_pstate, ya que ninguna computadora a la que tengo acceso tiene el problema.

Si tiene problemas con el paquete linux-tools, hay un turbostato en mi sitio web que debería funcionar. doble u doble u doble u punto smythies punto com /~doug/linux/intel_pstate/energy/turbostat. También está incluido en el código fuente del kernel, sólo tendrías que compilarlo.

EDITAR: Observaciones de las 14 muestras de turbostato:

Las 14 muestras de turbostato muestran problemas relacionados con la temperatura. La temperatura inactiva parece un poco alta, al igual que la frecuencia del reloj de la CPU inactiva. Parece haber algún grado variable de estrangulamiento térmico antes del estado bloqueado. Resumen de las 14 muestras:

Sample CPU Avg_MHz   %Busy Bzy_MHz TSC_MHz  CPU%c7  PkgTmp PkgWatt CorWatt Throttled  Comment
   1     -       9    0.57    1662    2793   98.53      48    2.35    0.06  no        High idle temp and Bzy clock
   2     -    2142   60.38    3547    2794   34.64      89   36.95   30.53  no
   3     -    3548   98.89    3588    2794    0.00      91   56.62   47.73  no
   4     -    3565   99.30    3590    2794    0.00      95   56.53   47.58  no        Very high Temp
   5     -    2861   98.83    2895    2794    0.00      93   46.17   38.07  yes X 29
   6     -    2834   98.72    2871    2794    0.00      97   46.45   38.38  yes X 29
   7     -    2172   98.67    2202    2793    0.00      95   34.06   26.79  yes X 22  More Thermal throttling
   8     -    2415   98.38    2455    2793    0.01      70   38.87   31.59  yes X 25  Less Thermal throttling
   9     -    1626   98.64    1648    2794    0.00      66   24.97   18.61  yes X 16  More Thermel throttling
  10     -     594   99.29     598    2794    0.00      63    7.26    2.11  yes X 6   Locked up state
  11     -     368   61.51     598    2794    3.41      58    5.52    1.30  yes X 6
  12     -       7    1.11     603    2794    7.57      56    2.43    0.03  yes X 6   
  13     -       8    1.38     602    2794    6.92      55    2.45    0.03  yes X 6
  14     -       8    1.26     601    2794   97.26      54    2.40    0.03  yes X 6   High idle temperature 

Respuesta2

El BIOS de su sistema utiliza la modulación de reloj como método para protegerse de la sobrecarga térmica. Si bien se quiere reducir el rendimiento del sistema en una pequeña cantidad, el 75% del máximo nominal, en realidad el rendimiento se está restringiendo al 75% del mínimo. Además, parece que una vez que se activa la modulación del reloj, nunca se reinicia. En su forma actual, el controlador de escalado de frecuencia de la CPU intel_pstate es fundamentalmente incompatible con la modulación de reloj y siempre llevará el pstate objetivo al mínimo independientemente de la carga real. Sin embargo, el controlador de escalado de CPU acpi-cpufreq funciona bien con la modulación de reloj y es el controlador recomendado para usted.

¿Es esa toda la historia? No. Creo que a partir del Kernel 4.5, el controlador intel_pstate tiene algunos cambios basados ​​en la identificación de la CPU, de modo que algunos procesadores se controlarán mediante algoritmos basados ​​en la carga, que son compatibles con la modulación del reloj, y algunos procesadores se controlarán mediante algoritmos basados ​​en el rendimiento. , que no son compatibles con la modulación de reloj. Su procesador, ID=0X3C, seguirá basándose en el rendimiento.

información relacionada