En informática , el rendimiento de la computadora es la cantidad de trabajo útil realizado por un sistema informático . Fuera de contextos específicos, el rendimiento de la computadora se estima en términos de precisión, eficiencia y velocidad de ejecución de instrucciones de programas de computadora . Cuando se trata de un alto rendimiento de la computadora, pueden estar involucrados uno o más de los siguientes factores:
El rendimiento de cualquier sistema informático se puede evaluar en términos técnicos mensurables, utilizando una o más de las métricas enumeradas anteriormente. De esta manera el rendimiento puede ser
Si bien la definición anterior se relaciona con un enfoque científico y técnico, la siguiente definición dada por Arnold Allen sería útil para una audiencia no técnica:
La palabra rendimiento en rendimiento de computadora significa lo mismo que significa rendimiento en otros contextos, es decir, significa "¿Qué tan bien está haciendo la computadora el trabajo que se supone que debe hacer?" [1]
El rendimiento del software informático , en particular el tiempo de respuesta de la aplicación de software , es un aspecto de la calidad del software que es importante en las interacciones entre humanos y computadoras .
La ingeniería de desempeño dentro de la ingeniería de sistemas abarca el conjunto de roles, habilidades, actividades, prácticas, herramientas y entregables aplicados en cada fase del ciclo de vida del desarrollo de sistemas que garantiza que una solución será diseñada, implementada y respaldada operativamente para cumplir con los requisitos de desempeño. definido para la solución.
La ingeniería del desempeño se ocupa continuamente de las compensaciones entre tipos de desempeño. Ocasionalmente, un diseñador de CPU puede encontrar una manera de crear una CPU con un mejor rendimiento general mejorando uno de los aspectos del rendimiento que se presentan a continuación, sin sacrificar el rendimiento de la CPU en otras áreas. Por ejemplo, construir la CPU con transistores mejores y más rápidos .
Sin embargo, a veces llevar un tipo de rendimiento al extremo conduce a una CPU con un peor rendimiento general, porque se sacrificaron otros aspectos importantes para obtener un número impresionante, por ejemplo, la velocidad del chip (ver el mito de los megahercios ).
Application Performance Engineering (APE) es una metodología específica dentro de la ingeniería de rendimiento diseñada para enfrentar los desafíos asociados con el rendimiento de las aplicaciones en entornos de TI móviles, terrestres y de nube cada vez más distribuidos. Incluye los roles, habilidades, actividades, prácticas, herramientas y entregables aplicados en cada fase del ciclo de vida de la aplicación que garantizan que una aplicación será diseñada, implementada y soportada operativamente para cumplir con los requisitos de rendimiento no funcionales.
Las métricas de rendimiento de la computadora (cosas a medir) incluyen disponibilidad , tiempo de respuesta , capacidad del canal , latencia , tiempo de finalización, tiempo de servicio , ancho de banda , rendimiento , eficiencia relativa , escalabilidad , rendimiento por vatio , relación de compresión , longitud de la ruta de instrucción y velocidad . Los puntos de referencia de CPU están disponibles. [2]
La disponibilidad de un sistema generalmente se mide como un factor de su confiabilidad: a medida que aumenta la confiabilidad, también aumenta la disponibilidad (es decir, menos tiempo de inactividad ). La disponibilidad de un sistema también puede aumentar mediante la estrategia de centrarse en aumentar la capacidad de prueba y el mantenimiento y no en la confiabilidad. Mejorar la mantenibilidad es generalmente más fácil que la confiabilidad. Las estimaciones de mantenibilidad (tasas de reparación) también son generalmente más precisas. Sin embargo, debido a que las incertidumbres en las estimaciones de confiabilidad son en la mayoría de los casos muy grandes, es probable que domine el problema de disponibilidad (incertidumbre de predicción), incluso cuando los niveles de mantenibilidad sean muy altos.
El tiempo de respuesta es la cantidad total de tiempo que lleva responder a una solicitud de servicio. En informática, ese servicio puede ser cualquier unidad de trabajo, desde una simple E/S de disco hasta la carga de una página web compleja . El tiempo de respuesta es la suma de tres números: [3]
La mayoría de los consumidores eligen una arquitectura de computadora (normalmente arquitectura Intel IA-32 ) para poder ejecutar una gran base de software preexistente y precompilado. Al estar relativamente desinformados sobre los puntos de referencia de las computadoras, algunos de ellos eligen una CPU particular en función de la frecuencia de funcionamiento (consulte el mito de los megahercios ).
Algunos diseñadores de sistemas que construyen computadoras paralelas eligen las CPU en función de la velocidad por dólar.
La capacidad del canal es el límite superior más estricto de la tasa de información que se puede transmitir de manera confiable a través de un canal de comunicaciones . Según el teorema de codificación de canales ruidosos , la capacidad de un canal determinado es la tasa de información límite (en unidades de información por unidad de tiempo) que se puede lograr con una probabilidad de error arbitrariamente pequeña. [4] [5]
La teoría de la información , desarrollada por Claude E. Shannon durante la Segunda Guerra Mundial , define la noción de capacidad del canal y proporciona un modelo matemático mediante el cual se puede calcular. El resultado clave establece que la capacidad del canal, como se define anteriormente, está dada por el máximo de la información mutua entre la entrada y la salida del canal, donde la maximización es con respecto a la distribución de entrada. [6]
La latencia es un retraso de tiempo entre la causa y el efecto de algún cambio físico en el sistema que se observa. La latencia es el resultado de la velocidad limitada con la que puede tener lugar cualquier interacción física. Esta velocidad es siempre menor o igual a la velocidad de la luz. Por lo tanto, todo sistema físico que tenga dimensiones espaciales distintas de cero experimentará algún tipo de latencia.
La definición precisa de latencia depende del sistema que se observa y de la naturaleza de la estimulación. En las comunicaciones, el límite inferior de latencia está determinado por el medio que se utiliza para las comunicaciones. En los sistemas de comunicación bidireccionales confiables, la latencia limita la velocidad máxima a la que se puede transmitir la información, ya que a menudo hay un límite en la cantidad de información que está "en vuelo" en un momento dado. En el campo de la interacción hombre-máquina, la latencia perceptible (retraso entre lo que el usuario ordena y el momento en que el ordenador proporciona los resultados) tiene un fuerte efecto en la satisfacción y usabilidad del usuario.
Las computadoras ejecutan conjuntos de instrucciones llamados procesos. En los sistemas operativos, la ejecución del proceso se puede posponer si también se están ejecutando otros procesos. Además, el sistema operativo puede programar cuándo realizar la acción que ordena el proceso. Por ejemplo, supongamos que un proceso ordena que la salida de voltaje de una tarjeta de computadora se establezca en alto-bajo-alto-bajo y así sucesivamente a una velocidad de 1000 Hz. El sistema operativo puede optar por ajustar la programación de cada transición (alto-bajo o bajo-alto) en función de un reloj interno. La latencia es el retraso entre la instrucción del proceso que ordena la transición y el hardware que realmente hace la transición del voltaje de alto a bajo o de bajo a alto.
Los diseñadores de sistemas que construyen sistemas informáticos en tiempo real quieren garantizar la respuesta en el peor de los casos. Esto es más fácil de hacer cuando la CPU tiene una latencia de interrupción baja y cuando tiene una respuesta determinista.
En redes de computadoras, el ancho de banda es una medida de la tasa de bits de los recursos de comunicación de datos disponibles o consumidos, expresada en bits por segundo o múltiplos de ella (bit/s, kbit/s, Mbit/s, Gbit/s, etc.).
El ancho de banda a veces define la tasa de bits neta (también conocida como tasa de bits máxima, tasa de información o tasa de bits útiles de la capa física), la capacidad del canal o el rendimiento máximo de una ruta de comunicación lógica o física en un sistema de comunicación digital. Por ejemplo, las pruebas de ancho de banda miden el rendimiento máximo de una red informática. La razón de este uso es que, según la ley de Hartley, la velocidad máxima de datos de un enlace de comunicación física es proporcional a su ancho de banda en hercios, que a veces se denomina ancho de banda de frecuencia, ancho de banda espectral, ancho de banda de RF, ancho de banda de señal o ancho de banda analógico.
En términos generales, el rendimiento es la tasa de producción o la tasa a la que se puede procesar algo.
En las redes de comunicación, el rendimiento es esencialmente sinónimo de consumo de ancho de banda digital. En redes inalámbricas o redes de comunicación celular , la eficiencia espectral del sistema en bit/s/Hz/unidad de área, bit/s/Hz/sitio o bit/s/Hz/celda, es el rendimiento máximo del sistema (rendimiento agregado) dividido por el ancho de banda analógico y alguna medida del área de cobertura del sistema.
En los circuitos integrados, a menudo un bloque en un diagrama de flujo de datos tiene una única entrada y una única salida, y opera con paquetes discretos de información. Ejemplos de tales bloques son los módulos FFT o los multiplicadores binarios . Debido a que las unidades de rendimiento son recíprocas de la unidad de retardo de propagación , que es "segundos por mensaje" o "segundos por salida", el rendimiento se puede utilizar para relacionar un dispositivo computacional que realiza una función dedicada, como un ASIC o un procesador integrado, con un canal de comunicaciones, simplificando el análisis del sistema.
La escalabilidad es la capacidad de un sistema, red o proceso para manejar una cantidad creciente de trabajo de manera capaz o su capacidad de ampliarse para adaptarse a ese crecimiento.
La cantidad de energía eléctrica utilizada por la computadora ( consumo de energía ). Esto resulta especialmente importante para sistemas con fuentes de energía limitadas, como la solar, las baterías y la energía humana.
Los diseñadores de sistemas que construyen computadoras paralelas , como el hardware de Google , eligen las CPU en función de su velocidad por vatio de potencia, porque el costo de alimentar la CPU supera el costo de la CPU misma. [7]
Para las computadoras de vuelos espaciales, la relación de velocidad de procesamiento por vatio es un criterio de rendimiento más útil que la velocidad de procesamiento bruta debido a los limitados recursos de energía a bordo. [8]
La compresión es útil porque ayuda a reducir el uso de recursos, como el espacio de almacenamiento de datos o la capacidad de transmisión. Debido a que los datos comprimidos deben descomprimirse para su uso, este procesamiento adicional impone costos computacionales o de otro tipo a través de la descompresión; esta situación está lejos de ser un almuerzo gratis. La compresión de datos está sujeta a un equilibrio entre la complejidad del espacio-tiempo.
Esta es una característica importante del rendimiento de los sistemas móviles, desde los teléfonos inteligentes que se guardan en el bolsillo hasta los sistemas portátiles integrados en una nave espacial.
El efecto de la informática en el medio ambiente, durante la fabricación y el reciclaje, así como durante el uso. Las medidas se toman con el objetivo de reducir los residuos, reducir los materiales peligrosos y minimizar la huella ecológica de una computadora .
El número de transistores en un circuito integrado (IC). El recuento de transistores es la medida más común de la complejidad de los circuitos integrados.
Debido a que hay tantos programas para probar una CPU en todos los aspectos del rendimiento, se desarrollaron puntos de referencia .
Los puntos de referencia más famosos son los puntos de referencia SPECint y SPECfp desarrollados por Standard Performance Assessment Corporation y el punto de referencia de Marca de Certificación desarrollado por Embedded Microprocessor Benchmark Consortium EEMBC .
En ingeniería de software, las pruebas de rendimiento se realizan, en general, para determinar cómo se desempeña un sistema en términos de capacidad de respuesta y estabilidad bajo una carga de trabajo particular. También puede servir para investigar, medir, validar o verificar otros atributos de calidad del sistema, como escalabilidad, confiabilidad y uso de recursos.
Las pruebas de rendimiento son un subconjunto de la ingeniería de rendimiento, una práctica informática emergente que se esfuerza por incorporar el rendimiento en la implementación, el diseño y la arquitectura de un sistema.
En ingeniería de software , la creación de perfiles ("perfil de programa", "perfil de software") es una forma de análisis dinámico de programas que mide, por ejemplo, la complejidad espacial (memoria) o temporal de un programa , el uso de instrucciones particulares o la frecuencia y duración de las llamadas a funciones. El uso más común de la información de creación de perfiles es ayudar a la optimización del programa .
La creación de perfiles se logra instrumentando el código fuente del programa o su forma ejecutable binaria utilizando una herramienta llamada generador de perfiles (o generador de perfiles de código ). Los perfiladores pueden utilizar varias técnicas diferentes, como métodos basados en eventos, estadísticos, instrumentados y de simulación.
El ajuste del rendimiento es la mejora del rendimiento del sistema . Generalmente se trata de una aplicación informática, pero los mismos métodos se pueden aplicar a los mercados económicos, las burocracias u otros sistemas complejos. La motivación para tal actividad se denomina problema de desempeño, y puede ser real o anticipado. La mayoría de los sistemas responderán al aumento de carga con cierto grado de disminución del rendimiento. La capacidad de un sistema para aceptar una carga mayor se llama escalabilidad , y modificar un sistema para manejar una carga mayor es sinónimo de ajuste del rendimiento.
El ajuste sistemático sigue estos pasos:
El rendimiento percibido, en ingeniería informática, se refiere a la rapidez con la que una función de software parece realizar su tarea. El concepto se aplica principalmente a los aspectos de aceptación del usuario .
La cantidad de tiempo que tarda una aplicación en iniciarse o un archivo en descargarse no se acelera mostrando una pantalla de inicio (consulte Pantalla de bienvenida) o un cuadro de diálogo de progreso del archivo. Sin embargo, satisface algunas necesidades humanas: parece más rápido para el usuario y proporciona una señal visual para hacerle saber que el sistema está manejando su solicitud.
En la mayoría de los casos, aumentar el rendimiento real aumenta el rendimiento percibido, pero cuando el rendimiento real no se puede aumentar debido a limitaciones físicas, se pueden utilizar técnicas para aumentar el rendimiento percibido.
La cantidad total de tiempo ( t ) necesaria para ejecutar un programa de referencia particular es
dónde
Incluso en una máquina, un compilador diferente o el mismo compilador con diferentes opciones de optimización del compilador pueden cambiar N y CPI; el punto de referencia se ejecuta más rápido si el nuevo compilador puede mejorar N o C sin empeorar el otro, pero a menudo hay una compensación. entre ellos: ¿es mejor, por ejemplo, usar algunas instrucciones complicadas que toman mucho tiempo para ejecutarse, o usar instrucciones que se ejecutan muy rápidamente, aunque se necesitan más para ejecutar el punto de referencia?
A menudo se requiere que un diseñador de CPU implemente un conjunto de instrucciones particular y, por lo tanto, no puede cambiar N. A veces, un diseñador se concentra en mejorar el rendimiento realizando mejoras significativas en f (con técnicas como canalizaciones más profundas y cachés más rápidos), mientras (con suerte) no sacrifica demasiado C, lo que lleva a un diseño de CPU que acelera la velocidad. A veces, un diseñador se centra en mejorar el rendimiento realizando mejoras significativas en el CPI (con técnicas como ejecución fuera de orden , CPU superescalares , cachés más grandes, cachés con tasas de acierto mejoradas, predicción de rama mejorada , ejecución especulativa , etc.), mientras ( con suerte) sin sacrificar demasiada frecuencia de reloj, lo que lleva a un diseño de CPU increíble. [10] Para un conjunto de instrucciones dado (y por lo tanto N fijo) y un proceso de semiconductores, el rendimiento máximo de un solo subproceso (1/t) requiere un equilibrio entre técnicas cerebrales y técnicas de carreras rápidas. [9]