Uso aceptable de CPU para 4 core 3.4gHz i7

6

Creando una aplicación de kiosco para Mac y estoy probando el rendimiento y el uso de la CPU. El monitor de actividad muestra un total de aproximadamente 90 a 150% de uso de CPU para los procesos de kiosco siempre activos.

Mi primera confusión es cómo el uso de la CPU puede ser superior al 100%, pero entiendo que está relacionado con el número de núcleos.

Entonces, mi pregunta es, ¿es aceptable el uso de CPU total del 150% para un mac basado en quiosco con aplicaciones 24-7 que se ejecutan constantemente? ¿O es demasiado alto?

addendum > La aplicación procesa el video constantemente, la única 'interacción' es la transmisión de video proveniente de una cámara web.

    
pregunta Bachalo 11.10.2015 - 18:53

3 respuestas

6

El cero es ideal

Idealmente, su aplicación de kiosco debería usar 0% de CPU cuando no se use activamente . Es poco probable que logre esto sin un esfuerzo considerable, pero incluso un objetivo de 5 a 10% de uso es bueno.

Con un uso de CPU constante del 150%, es probable que la aplicación sea considerada defectuosa por los revisores de la Mac App Store de Apple, y por muchos clientes.

Sugerencias: descarga al marco derecho

Si tu aplicación de kiosco está animando o mostrando contenido en movimiento, como anuncios o películas, haz todo lo que puedas con AVFoundation / QuickTime. Esto normalmente descargará el procesamiento a la GPU y permitirá que la CPU esté inactiva.

Para otras animaciones, asegúrese de adoptar CoreGraphics y CoreAnimation. Mejorarán drásticamente el impacto energético de su aplicación.

Guía de eficiencia energética para aplicaciones Mac

Estudie Guía de eficiencia energética de Apple para aplicaciones de Mac . La introducción expone las intenciones de Apple:

  

Tu obligación como desarrollador

     

Incluso las pequeñas ineficiencias en las aplicaciones se acumulan en todo el sistema, lo que afecta significativamente la vida de la batería, el rendimiento, la capacidad de respuesta y la temperatura. Como desarrollador de aplicaciones, tiene la obligación de asegurarse de que su aplicación se ejecute de la manera más eficiente posible. Use las API recomendadas para que el sistema pueda tomar decisiones inteligentes sobre la mejor manera de administrar su aplicación y los recursos que utiliza. Siempre que sea posible, evite actualizaciones innecesarias a la interfaz de usuario y la E / S. Las operaciones que consumen mucha energía deben estar bajo el control del usuario. Si un usuario inicia un render iMovie grande, un trabajo por lotes de Automator, una conversión de Compressor o una compilación de Xcode, por ejemplo, el usuario no debería sorprenderse si la actividad consume energía. Intente que su aplicación esté totalmente inactiva cuando no responde a las sugerencias del usuario.

Utilice las herramientas de desarrollo para perfilar el impacto energético de su aplicación y pregunte en Stack Overflow para encontrar formas de reducir la carga de CPU. Buena suerte!

    
respondido por el Graham Miln 11.10.2015 - 20:09
1

El 150% del total de la CPU, por supuesto, no solo sería totalmente inaceptable, sino físicamente imposible.
Sé que la mayoría de los deportistas parecen pensar que pueden dar al menos el 110% cada vez que son entrevistados, pero nadie les señaló los hechos simples, supongo ;-)

El Monitor de actividad muestra el uso de la CPU de las aplicaciones individuales por núcleo [incluidos los núcleos virtuales], por lo que el 150% es en realidad (para un i7, con 4 núcleos + hyperthreading) 150 / 8 = 18.75% de la capacidad total de la máquina.

El total de System + User debajo de las cifras individuales es una representación más precisa del uso general de la máquina & Un resumen rápido de las cifras le da una idea aproximada de que este es, de hecho, el verdadero estado de las cosas.

Tomando esto como ejemplo, los porcentajes visibles suman alrededor de 120, sin embargo, la cifra de Usuario de Sistema + es solo 5.3%. Tengo 24 núcleos virtuales [2 x 6-core CPUs + hyperthreading] por lo que 120/24 = 5 [lo suficientemente cerca para explicar los procesos más abajo en la lista]

Con un 18,75% de la capacidad total de la máquina, no creo que valga la pena el esfuerzo de optimización, a menos que otro proceso necesite una parte significativa de la capacidad restante.

    
respondido por el Tetsujin 11.10.2015 - 19:13
0

A menos que tenga un problema, no lo optimice prematuramente sería mi consejo. El hardware se ejecutará al 100% de uso (o al 800% de un solo hilo en la carcasa de su hardware) sin ningún efecto negativo y, a menos que tenga efectos de bloqueo, sus animaciones y funciones de quiosco ni siquiera se degradarán cuando la CPU esté totalmente ocupada 24/7 .

Si hay poca ventaja para reducir la CPU, anímate, pero el i7 tiene 4 núcleos físicos y calcula la carga de la CPU contra 8 núcleos virtuales. ¿Su hardware llega al 800% idealmente y actualmente solo está al 150%? Parece que sus especificaciones para hardware son más que excesivas para una situación de kiosco de un solo uso. Si ha elegido una pila de tecnología y está contento con el contenido del kiosco en términos de animación, la capacidad para realizar la tarea que está "contratando" es para realizar, no me preocuparía ninguna "mejor práctica" impuesta externamente, incluso si es Las pautas de Apple para ser un codificador eficiente (que son EXCELENTES por la manera).

En cualquier sistema, es posible que desee planear no exceder el 80% de utilización si no puede comparar, medir, reaccionar y corregir los usos de ráfaga. Esta es una guía, y por supuesto, cuando puede hacerlo mejor, debería hacerlo.

Supondré que realmente tiene implementadas herramientas de acceso remoto para impulsar las actualizaciones y que puede medir la CPU a lo largo del tiempo y reaccionar, pero la interactividad del kiosco parece baja en "perdemos dinero" cuando el sistema se retrasa.

  • ¿Cuánto tiempo interactúa un usuario con el quiosco?
  • ¿Se gana o se gana dinero y a qué tasa se estima?
  • ¿Qué sucede con el sistema cuando se enlaza con la CPU (debido a procesos en segundo plano o cambios en la aplicación)?

Cualquier "mejor práctica" es realmente un punto de partida para que evalúes las cosas. No hay razón para no dejar una computadora con 100% de utilización si el subproceso principal no está bloqueado y el sistema en general se degrada con gracia.

    
respondido por el bmike 11.10.2015 - 20:34

Lea otras preguntas en las etiquetas