Problemas graves de rendimiento al usar Expose en Catalina

Resumen

Tengo un problema en el que usar Expose para arrastrar una ventana de un espacio a otro provoca una desaceleración enorme que parece casi cómica, como si la máquina se convirtiera en un tablero de ouija y cargara picos fácilmente a más de 200 (!) durante el tiempo que dura a través de "ataques"

Aquí hay un video de la incidencia de este problema.

Condiciones

  1. Nueva instalación de Catalina
  2. MacBook 12,1 con CPU i7 de doble núcleo a 3,1 GHz, 16 GB de RAM y SSD de 1 TB
  3. Actualmente en el proceso de "construir desde cero" e instalar mi software y herramientas prescritos

Tutorial del problema

  1. Invoco las Pantallas en el encabezado de cada "Escritorio" usando Expose e intento mover una ventana de una Pantalla a otra

  2. El comportamiento de mover una ventana mientras la arrastro tiene acción donde el retraso de los movimientos de arrastre entra en un estado de cámara lenta fantasmal. donde el movimiento sigue una especie de patrón "poseído".

  3. A medida que se desarrollan las interacciones de la interfaz de usuario de mi cola, parece que tiene una mente propia. (Toda la interacción adicional de la interfaz de usuario parece ignorarse, pero en realidad se está poniendo en cola y continuará ejecutándose a una fracción de la velocidad en tiempo real).
  4. Necesito detenerme y esperar a que se completen todas esas acciones de entrada. Esto puede llevar varios minutos, a veces más de 15 si trato de hacer cosas como hacer clic en un ícono en el Dock, mover una ventana dentro de un espacio específico u otra cosa que haría un usuario frustrado mientras su máquina parece no responder.

Efectos secundarios

Pico de carga masiva

La razón inmediata de esto parecería que la carga del sistema, que ya se estaba ejecutando entre 3 y 4 (la computadora tiene 4 CPU efectivas, por lo que justo debajo de la eficiencia nominal cuando está efectivamente inactiva por la entrada humana, se disparará a un número muy alto ( más de 100 o 200 mientras realiza estas payasadas) y la carga tardará varios minutos en "estabilizarse" después de que se detengan los efectos de cámara lenta, y eso es solo para que baje de 200 a aproximadamente 25 donde se estabilizará por fácilmente otros otros 10 minutos.

Puesta en cola de los procesos del sistema

Como todavía estoy en el proceso de construir mi computadora desde cero en base a un documento de plantilla de compilación que hice para instalar manualmente la configuración de mis herramientas de software en una máquina nueva, esto me parece enormemente desconcertante.

Detalles de construcción

  1. Use actualizado para ser compatible con Catalina con cosas como DeviceKit
  2. Algunas herramientas de código abierto requieren una autorización de seguridad explícita incluso para instalar, pero parecen excepciones inocuas que no requieren controladores de kernel adicionales y espero que cumplan con las normas en enero.
  3. No utilizo "programas basura" que podrían bordear fácilmente el Malware (como "protección antivirus").
  4. Yo uso brew cask installo cualquier software que pueda.
  5. Para cualquier otra cosa, uso la App Store.

Conclusiones iniciales

No tengo idea si estas aplicaciones tienen alguna correlación con este comportamiento o no. Cuando esto sucede, a menudo surgen procesos del sistema y consumen más del 50% de la CPU, pero lo atribuyo al hecho de que están en cola debido a la carga absurdamente alta y más un síntoma que una causa de mis problemas. Incluso renuncié a Chrome para Safari en un intento de hacer un mejor uso de los recursos compartidos y minimizar las desviaciones del nido de Apple. Ya activé "Reducir movimiento" y "Reducir transparencia" para Accesibilidad -> Pantalla, pero no tuvo ningún impacto.

¿Posible problema de calor?

Una teoría que tenía era que mis ventiladores están sucios y no enfrían bien mi CPU. Tuve problemas de rendimiento cuando esta máquina ejecutaba Mojave con bloqueos de 30 a 90 segundos, pero dado que la actualicé a través de al menos 3 versiones del sistema operativo, lo atribuí a KEXT cruft u otro software basura que usaba cuando era menos cuidadoso . Los ventiladores giran bien cuando las CPU se calientan, pero la temperatura del núcleo de la CPU oscila entre 70 °C y 80 °C incluso cuando la carga es inferior a 4. Por lo tanto, me pregunto si todo esto es simplemente un recorte de la CPU por el calor, pero No sé dónde la temperatura inducirá este mecanismo de seguridad. Si simplemente no puedo descartar el flujo de aire bloqueado, abriré este bebé y le daré una ráfaga de aire enlatado, pero dado que reemplacé los ventiladores y la batería hace solo 14 meses, sería sorprendente ya que no trabajo en una fábrica de pelusa.

Lo que espero lograr publicando esto

En cualquier caso, aunque no espero que nadie identifique por qué Expose se está comportando de esta manera (aunque estaría agradecido por algunos consejos para solucionar problemas, ya que solo llevo unos días usando Catalina). Lo que esperaba era si alguien estaba consciente de cómo podría desactivar cualquiera de las funciones de animación gratuitas introducidas por Catalina que podrían estar exacerbando este problema.

Actualización 11/11/19 17:20

Después de ejecutar en modo seguro y cargar casi todas las aplicaciones, no pude replicar el problema, aunque definitivamente se vieron afectadas cosas como el desplazamiento. No parecía haber ningún problema de temperatura y los picos de más de 90 ° disminuyeron rápidamente, por lo que, a menos que se trate de un problema de acumulación lenta de calor, no creo que sea eso.

Una cosa que no mencioné fue que cuando ocurrió este problema, había 3,7 GB en el espacio de intercambio de 5 GB. Iniciar la máquina normalmente y ejecutar las aplicaciones como lo hice en modo seguro tampoco recreó esos problemas, pero el intercambio aún no se usa. Debería haber notado esto, pero en el pasado, correlacioné la lentitud de la animación Expose con cuánto hay en intercambio.

Mi nueva teoría es que se está produciendo una fuga de memoria que consume memoria virtual y que la lentitud y la carga son el resultado de una paginación incesante. Creo que solo podré corroborar esto después de dejar que mi máquina tenga un tiempo de actividad de más de uno o dos días con muchas aplicaciones abiertas para poder ver. Entonces puedo identificar qué aplicaciones tienen las tasas de página más altas.

Actualización 12/11/19 01:54

Después de abrirlo y no ver mucho polvo, levanté la placa de enfriamiento para verificar la pasta térmica que estaba seca y apenas presente. Agregué un poco de pasta fresca después de limpiar ambas superficies, pero no estoy seguro de si usé demasiado o si las superficies no estaban lo suficientemente limpias, pero encuentro que las temperaturas parecen aumentar a más de 100 ° C ocasionalmente y en general se calienta más, aunque el calor los picos son solo instantáneos.

Ejecuté GeekBench tanto antes como después, tanto en modo seguro como normal, y los resultados de rendimiento fueron efectivamente los mismos. Los resultados son en realidad un poco más altos que los puntos de referencia establecidos para mi modelo. Parece terriblemente caliente pero no está afectando el rendimiento. Habiendo leído artículos que indican que el i7 puede operar de manera segura a 100°C (aunque algunas autoridades dicen que es demasiado caliente para cualquier duración).

Instalé Intel Power Gadget y muestra que mi reloj excedente es de aproximadamente 2,45 GHz, pero alcanza un máximo de 3,1 GHz, por lo que no creo que se esté recortando. Aún así, el misterio del rendimiento abunda, pero una cosa es segura: ¡se necesitan días, si no semanas, para que se complete toda la limpieza de Catalina en los medios y las imágenes!

Respuestas (2)

Es muy probable que tenga un error de hardware, como que los ventiladores no funcionen, la pasta térmica no se haya aplicado correctamente, las rejillas de ventilación estén bloqueadas o similar.

Un promedio de carga de 3-4 cuando la máquina está inactiva definitivamente no es normal. Su máquina es una máquina de doble núcleo: HyperThreading realmente no hace que sea sensato contar eso como 4 núcleos (no es tan bueno como los núcleos separados). Una carga promedio. de 3-4 significa que la computadora está muy cargada.

El promedio de carga alto podría provenir de la limitación térmica (ya sea a través de kernel_task que obliga a la CPU a dormir, o simplemente a la limitación de frecuencia). También podría provenir de otras fuentes, como un disco que funciona mal, aunque lo más probable es que también experimente otros problemas.

Recomendaré arrancar en el modo de recuperación de Internet para verificar si todavía tiene un promedio de carga alto y un rendimiento lento allí. Si lo hace, entonces no es un problema de software.

El calor es mi teoría de funcionamiento, así como lo he visto antes. Es solo que parece que acabo de abordar este problema que me hizo dudar. El SSD se ejecutó completamente a través de Disk First Aid, pero sin SMART no puedo decir si es realmente saludable, solo haga una evaluación subjetiva como usted dijo. Dado que este es el comportamiento del sistema, el modo de recuperación debería haber sido algo que ya probé. ¡Gracias!
Estoy ejecutando en modo seguro y tengo una gran cantidad de aplicaciones en ejecución para tratar de que mi máquina tenga que paginar la memoria y aumentar la temperatura de la CPU, pero generalmente se mantienen por debajo de 70 ° cuando dejo de ejercer la CPU con la actividad del usuario. Aun así, cuando ejecuto la prueba de CPU en el banco geek que hace que la temperatura de la CPU suba más de 90 °, mientras que la interfaz de usuario se retrasa un poco, es quizás una fracción de segundo. Nunca se acerca a los minutos de retraso que estaba experimentando en modo normal como lo demuestra ese video. Además, dado que la CPU se enfría muy rápidamente después de presionarla con fuerza, no creo que el flujo de aire sea el problema.
Entonces, ¿está diciendo que si ejecuta en modo seguro, el problema desaparece? - Entonces, lo más probable es que el problema se deba a las extensiones del kernel o a los periféricos que ha conectado a su Mac. Consulte el Informe del sistema para obtener una lista de las extensiones del kernel. ¿Tiene instaladas extensiones del kernel de terceros?
No es que desaparezca, es que el problema tarda unos días en desarrollarse. Todavía veo una correlación con el calor y la carga. Instalé Intel Power Gadget que rastrea la velocidad del reloj y la temperatura del CPI principal (que agrega la métrica de la velocidad del reloj a otras herramientas como los menús de iStats) y descubrí que cuando las temperaturas rondaban los 100 ° C, la velocidad del reloj bajaba de 3.1 a 1.2. Desde que actualicé la pasta térmica de la CPU, la temperatura promedio es más baja, pero los picos son mucho más altos que antes. Eso es algo que no entiendo, tal vez una anomalía del sensor.
¿O tal vez un problema más general con sus ventiladores o rejillas de ventilación? ... Si supera regularmente los 100C, diría que es muy sospechoso. La temperatura de unión de su CPU es de 105C.

Acciones tomadas

Mi solución involucró lo siguiente:

  1. Limpieza de ventiladores y vías respiratorias
  2. Sustitución de la pasta térmica
  3. Agregar monitoreo de temperatura y velocidad del ventilador
  4. Aumentar las velocidades generales de los ventiladores usando reglas personalizadas sobre los valores predeterminados del sistema

Limpieza del hardware

Desarmé mi MacBookPro y descubrí que había un poco de polvo acumulado en el ventilador y aproximadamente el 10 % de las aletas del disipador de calor estaban bloqueadas con pelusa. También había algunas motas de polvo y puntos al azar en el tablero y en los bolsillos del chasis. No parecía mucho polvo, pero lo exploté con aire comprimido de todos modos.

Del mismo modo, estaba encantado de que todavía tuviera un nuevo tubo de pasta térmica en el juego de herramientas de mi computadora. Después de desatornillar la cincha de la placa del disipador de calor del núcleo de la CPU, vi que la pasta vieja estaba casi seca y muy anémica. Usé un paño seco para limpiar ambas superficies y apliqué pasta fresca y la volví a apretar. Sin embargo, es posible que haya usado demasiada pasta ya que había un exceso exprimido por los lados. La cincha estaba lo más apretada posible sin apretar demasiado y correr el riesgo de pelar las cabezas, cortar los tornillos o arrancar la rosca. El objetivo era garantizar que no hubiera forma de que quedaran burbujas de aire atrapadas en la pasta que pudieran calentarse y reducir el área de la superficie donde la pasta entraba en contacto con ambas superficies.

Software

Antes de abordar el tema del enfriamiento, agregué y configuré tres utilidades:

Lecturas y controles de temperatura/ventilador: Menús iStat / Control de ventilador de Mac

Ambas utilidades tienen la capacidad de medir la velocidad del ventilador y la temperatura de la CPU, ambas tienen una versión de prueba, pero iStat Menus lee alrededor de dos docenas de otros sensores de temperatura en todo el sistema, mientras que MFC solo lee la temperatura del núcleo de la CPU. Si bien primero usé MFS, luego descubrí que iSM es la mejor opción en general, ya que tiene una utilidad mucho más allá de la administración de temperatura y ventiladores, por lo que pagué $ 10 para usarlo como una pantalla de métrica general.

MFC tiene un control de ventilador limitado en el modo de prueba, mientras que los menús de iStat son completamente funcionales, donde puede crear reglas de velocidad de ventilador personalizadas para que pueda probarlo antes de comprarlo para ver si es para usted. Además, para ser justos, iSM y MFC no son realmente comparables en alcance, ya que iSM le permite crear gráficos personalizables extensos para casi todas las métricas imaginables del sistema.

Además, iSM parece medir estadísticas que ya se informan de forma muy similar /proca Linux. Para probar, al ejecutar con y sin iSM, vi poca variación en el rendimiento (usando el Monitor de actividad, que no recomiendo ejecutar indefinidamente ya que usa muchos recursos en términos relativos). Incluso la huella de memoria de los elementos de la interfaz de usuario de iSM es de solo 35 MB, menos de 1/4 del Monitor de actividad, que también puede aumentar la carga de la CPU, lo que lo hace inapropiado como un monitor de tiempo completo como lo es iSM.

Si bien todavía tengo MFS instalado, realmente no lo uso a favor de iSM. Lo guardo en caso de que necesite tener un controlador de ventilador/velocímetro potencialmente más liviano que el iSM, pero aún no lo he necesitado.

Medición del reloj de la CPU: Intel Power Gadget

Además de iSM, Intel Power Gadget brinda visibilidad de la velocidad variable de la CPU, que en realidad fluctúa constantemente según la demanda del sistema. No estoy seguro de que esta herramienta registre "recorte" como resultado del sobrecalentamiento, pero no puedo imaginar por qué no lo haría. Al igual que iSM, también proporciona amplias funciones gráficas. Además, proporciona una nueva métrica de la velocidad de la CPU como un punto de datos que iSM ahora incluye en las métricas de la CPU y aparece justo al lado de la temperatura del núcleo de la CPU para facilitar el seguimiento. Ni siquiera es necesario que la herramienta esté ejecutándose para leer esto: ¡se agrega al resto de las métricas del sistema que iStat puede leer! Este fue un gran descubrimiento y agregó una métrica crucial de la que carecía antes.

Resultados

Para establecer un punto de referencia de velocidad, utilicé Geekbench 5 para obtener una línea de base antes y después de la limpieza y el ajuste del sistema de refrigeración. También lo ejecuté en modo seguro y en modo normal (con la menor ejecución posible, aunque esto no fue una prueba pura, ya que cosas como el fotoanálisis a menudo funcionaban en segundo plano). Aún así, lo que encontré fue muy sorprendente: si bien el rendimiento mejoró drásticamente cuando se controló el calor, las mediciones después de la limpieza mostraron que la CPU alcanzó temperaturas más altas en los picos. Tengo una hipótesis de por qué, sin embargo.

Mejoras de rendimiento

Antes de limpiar el sistema de enfriamiento y agregar pasta fresca, las pruebas de banco mostraron clasificaciones de CPU simple/múltiple en alrededor de 700/1775 al inicio, tanto antes como después de la limpieza. Hacer funcionar los ventiladores al máximo en todo momento en lugar de limpiar el enfriamiento no cambió el rendimiento de manera apreciable. Además, esa medida en realidad está justo por encima del promedio declarado de Geekbench para mi máquina. (Las pruebas de modo seguro en realidad fueron entre un 5 y un 10 % más lentas).

Mientras esperaba que mi máquina se ralentizara por el calor o la hinchazón del uso de intercambio y el desgaste de las entradas y salidas de página, el hecho de que había impuesto reglas de velocidad de ventilador más agresivas con iSM parecía mantener los picos de calor bajo control. Además, después de la limpieza, incluso si devuelvo las reglas de velocidad del ventilador a los valores predeterminados del sistema como antes, no pude recrear los problemas de bloqueo a pesar de que la temperatura de la CPU informaba que era de 10°C para una carga alta sostenida. Parecería que la CPU puede calentarse más que el pensamiento anterior para que la CPU se corte porque pude ver que la velocidad de mi CPU estaba en modo "turbo" a 3,4 GHz cuando ejecuté una prueba de CPU de GB. Incluso bajo coacción extrema con configuraciones de ventilador que permiten que la CPU alcance temperaturas de más de 100 °C durante más de 30 segundos, las mejoras en el rendimiento general fueron profundas y la máquina solo en una usabilidad anecdótica. Los desagradables problemas con Expose/Mission Control no se repitieron.

Picos aparentes de alta temperatura

Es cierto que hay una anomalía que inicialmente no tenía sentido. Antes de limpiarlo y simplemente hacer funcionar el ventilador a la velocidad máxima, las temperaturas de la CPU tenían un piso alto incluso en reposo de 65°-75°C, pero la temperatura máxima medida nunca parecía superar los 90°C. Después de la limpieza, el comportamiento de la medición fue muy diferente. Si bien la temperatura del piso en reposo era más baja con los valores predeterminados del ventilador cuando estaba inactivo (a veces tan bajo como 40 °C), noté que la temperatura del núcleo de la CPU fluctúa enormemente con la carga (y las velocidades de la CPU) donde antes las mediciones mostraban una temperatura mucho más gradual. cambiar a pesar de que el sondeo y la actualización de la medición fueron los mismos. Además, aparte del calentamiento y enfriamiento más rápido de los sensores, las lecturas máximas ocasionalmente alcanzaron un máximo de más de 100 ° cuando nunca antes se informó que estaba tan caliente.

Conclusiones

  1. Está claro que el enfriamiento deficiente fue el factor principal en el bajo rendimiento de mi máquina, aunque decir eso es una simplificación excesiva de los resultados que vi. Por un lado, creo que las medidas que tomé antes de limpiar y pegar no fueron exactas ni precisas debido a la acumulación de polvo. Es posible que las temperaturas extremadamente altas que son proporcionales a las velocidades cambiantes de la CPU que varían con la carga de trabajo de las máquinas, las mejoras de rendimiento no coincidan con esta posibilidad. Dado que los sensores de temperatura son los que usa la máquina para regular la CPU, es posible que la disparidad esté causando algunos problemas. Una vez que los sensores pudieron informar con precisión y precisión, el rendimiento general estuvo más cerca del diseño previsto.
  2. Además de la limpieza física, el funcionamiento con velocidades de ventilador más rápidas hizo maravillas para mejorar el enfriamiento tal como cabría esperar antes de la limpieza; sin embargo, con un canal de enfriamiento limpio, los efectos fueron mucho más evidentes. Si bien parece mantener a raya los problemas relacionados con el calor funcionando a toda velocidad casi constantemente antes de la limpieza, después de la limpieza pude relajar las reglas sustancialmente y controlar el calor se logró mucho más fácilmente sabiendo que las temperaturas reales versus las medidas no estaban en disparidad.
  3. Por lo tanto, mi hipótesis de ejecución para la volatilidad de la temperatura es que las lecturas de los sensores de temperatura de la CPU están fuera del código de la CPU y se han enturbiado por la acumulación de polvo. Después de ser limpiados, esto puede haberles permitido ser más precisos y precisos. Puede ser que los picos de temperatura más altos simplemente no se mantuvieran lo suficiente como para leerlos de antemano, ya que el polvo aisló las sondas. Sin saber dónde están las sondas del sensor que miden físicamente las temperaturas de la CPU, no puedo decir si esto retiene el agua o no.
  4. Finalmente, después de limpiar y ajustar las reglas del ventilador, la carga del sistema, aunque a menudo alcanzaba picos de 30 o 40, no era tan terrible como para detener la máquina. Los picos de carga elevados son solo una realidad en las Mac más antiguas, pero ahora sé que no tienen por qué ser paralizantes. Antes de limpiar y enfriar, parecía que los problemas de animación de control de Expose/Mission se activaban cuando la carga era superior a 100. Ahora, las cargas pueden llegar a 40 si lo empujo y está paginando como loco, pero incluso cuando la máquina está en 3,4 GHz y los ventiladores están al máximo bajo grandes cargas de CPU y E/S y donde se pagina a una velocidad de 8 MB/segundo, los impactos en el rendimiento dejan mi máquina todavía utilizable aunque un poco lenta en la interfaz de usuario.

TL;DR: Sacar el polvo del sistema de enfriamiento y aumentar las velocidades del ventilador como umbrales de temperatura específicos es lo que se necesitó para que mi máquina volviera a su estado saludable. Además, la CPU i7 tiene una frecuencia de reloj variable que es una característica de ahorro de energía, no solo un acelerador para cuando el calor aumenta, al menos no en condiciones normales de funcionamiento. Agregar algunas buenas métricas que no gravan el sistema es crucial para ver algo más que una mejora anecdóticamente notable e iState Menus parece una excelente opción si tiene hambre de datos. Existen herramientas de código abierto y de línea de comandos más livianas para los puristas.

Espero que este extenso desglose haya sido útil. Descubrí que valía la pena entrar en todos los detalles, incluso si había alguna redundancia.