En informática , el rendimiento de una computadora es la cantidad de trabajo útil que realiza un sistema informático . Fuera de contextos específicos, el rendimiento de una computadora se estima en términos de precisión, eficiencia y velocidad de ejecución de las instrucciones de un programa informático . Cuando se trata de un alto rendimiento de una 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 se puede medir
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 el ámbito informático significa lo mismo que rendimiento en otros contextos, es decir, significa "¿Qué tan bien está haciendo el ordenador el trabajo que se supone que debe hacer?" [1]
El rendimiento del software de computadora , particularmente el tiempo de respuesta de la aplicación de software , es un aspecto de la calidad del software que es importante en las interacciones hombre-computadora .
La ingeniería de desempeño dentro de la ingeniería de sistemas abarca el conjunto de roles, habilidades, actividades, prácticas, herramientas y resultados aplicados en cada fase del ciclo de vida del desarrollo de sistemas, lo que garantiza que se diseñará, implementará y respaldará operativamente una solución para cumplir con los requisitos de desempeño definidos para la solución.
La ingeniería de rendimiento se ocupa continuamente de las compensaciones entre los tipos de rendimiento. En ocasiones, un diseñador de CPU puede encontrar una forma 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 a partir de 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 de aspecto impresionante, por ejemplo, la velocidad de reloj del chip (véase el mito de los megahercios ).
La ingeniería de rendimiento de aplicaciones (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 cada vez más distribuidos, móviles, en la nube y terrestres. Incluye los roles, habilidades, actividades, prácticas, herramientas y resultados que se aplican en cada fase del ciclo de vida de la aplicación y que garantizan que una aplicación se diseñará, implementará y respaldará operativamente para cumplir con los requisitos de rendimiento no funcionales.
Las métricas de rendimiento de la computadora (cosas para 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 instrucciones y aceleración . Hay disponibles evaluaciones comparativas de CPU . [2]
La disponibilidad de un sistema se mide normalmente como un factor de su fiabilidad: a medida que aumenta la fiabilidad, también lo hace la disponibilidad (es decir, menos tiempo de inactividad ). La disponibilidad de un sistema también puede aumentarse mediante la estrategia de centrarse en aumentar la capacidad de prueba y la capacidad de mantenimiento y no en la fiabilidad. Mejorar la capacidad de mantenimiento es generalmente más fácil que la fiabilidad. Las estimaciones de capacidad de mantenimiento (tasas de reparación) también suelen ser más precisas. Sin embargo, debido a que las incertidumbres en las estimaciones de fiabilidad son en la mayoría de los casos muy grandes, es probable que domine el problema de la disponibilidad (incertidumbre de predicción), incluso cuando los niveles de capacidad de mantenimiento son muy altos.
El tiempo de respuesta es la cantidad total de tiempo que se tarda en responder a una solicitud de servicio. En informática, ese servicio puede ser cualquier unidad de trabajo, desde una simple operación de 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 informática (normalmente la arquitectura Intel IA-32 ) para poder ejecutar una gran base de software precompilado y ya existente. Al no estar demasiado informados sobre los benchmarks informáticos, algunos de ellos eligen una CPU concreta en función de la frecuencia de funcionamiento (véase 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 canal ruidoso , la capacidad del canal 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 el concepto de capacidad del canal y proporciona un modelo matemático con el que se puede calcular. El resultado clave establece que la capacidad del canal, tal como se definió 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 el tiempo que transcurre 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 esté observando 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 bidireccional fiables, 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 tránsito" en un momento determinado. En el campo de la interacción hombre-máquina, la latencia perceptible (el retraso entre lo que el usuario ordena y el momento en que la computadora proporciona los resultados) tiene un fuerte efecto en la satisfacción del usuario y la facilidad de uso.
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 el proceso está ordenando. Por ejemplo, supongamos que un proceso ordena que la salida de voltaje de una tarjeta de computadora se configure 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 realiza 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 una respuesta en el peor de los casos. Esto es más fácil de lograr 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 pico, tasa de información o tasa de bits útil 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 tasa de datos máxima 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 velocidad 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 las 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, un bloque de un diagrama de flujo de datos suele tener una única entrada y una única salida, y funciona con paquetes discretos de información. Ejemplos de estos bloques son los módulos FFT o los multiplicadores binarios . Debido a que las unidades de rendimiento son el recíproco 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, lo que simplifica el análisis del sistema.
La escalabilidad es la capacidad de un sistema, red o proceso de manejar una cantidad creciente de trabajo de manera competente o su capacidad de ampliarse para adaptarse a ese crecimiento.
La cantidad de energía eléctrica que utiliza el ordenador ( consumo de energía ). Esto resulta especialmente importante para sistemas con fuentes de energía limitadas, como la energía 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 en sí. [7]
Para las computadoras espaciales, la relación velocidad de procesamiento por vatio es un criterio de rendimiento más útil que la velocidad de procesamiento bruta debido a los recursos limitados 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 poder usarse, este procesamiento adicional impone costos computacionales o de otro tipo a través de la descompresión; esta situación está lejos de ser gratuita. La compresión de datos está sujeta a una compensación de complejidad espacio-temporal.
Esta es una característica de rendimiento importante de los sistemas móviles, desde los teléfonos inteligentes que llevamos en el bolsillo hasta los sistemas portátiles integrados en una nave espacial.
El efecto de la informática sobre el medio ambiente, durante la fabricación y el reciclaje, así como durante el uso. Se toman medidas con el objetivo de reducir los residuos, reducir los materiales peligrosos y minimizar la huella ecológica de una computadora .
Número de transistores en un circuito integrado (CI). El conteo de transistores es la medida más común de la complejidad de un CI.
Debido a que existen muchos 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 Evaluation Corporation y el punto de referencia Certification Mark desarrollado por Embedded Microprocessor Benchmark Consortium EEMBC .
En ingeniería de software, las pruebas de rendimiento se realizan, en general, para determinar el rendimiento de un sistema en términos de capacidad de respuesta y estabilidad bajo una carga de trabajo particular. También pueden servir para investigar, medir, validar o verificar otros atributos de calidad del sistema, como la escalabilidad, la confiabilidad y el uso de recursos.
Las pruebas de rendimiento son un subconjunto de la ingeniería de rendimiento, una práctica informática emergente que busca incorporar el rendimiento en la implementación, el diseño y la arquitectura de un sistema.
En ingeniería de software , la elaboración de perfiles ("elaboración de perfiles de programas", "elaboración de perfiles de software") es una forma de análisis dinámico de programas que mide, por ejemplo, la complejidad espacial (de memoria) o temporal de un programa , el uso de instrucciones específicas o la frecuencia y duración de las llamadas a funciones. El uso más común de la información de elaboración de perfiles es ayudar a la optimización de programas .
La creación de perfiles se logra instrumentando el código fuente del programa o su forma binaria ejecutable mediante una herramienta llamada perfilador (o perfilador de código ). Los perfiladores pueden utilizar distintas técnicas, como métodos basados en eventos, estadísticos, instrumentados y de simulación.
El ajuste del rendimiento es la mejora del rendimiento del sistema . Normalmente 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 de dicha actividad se denomina problema de rendimiento, que puede ser real o previsto. La mayoría de los sistemas responderán a una mayor carga con cierto grado de disminución del rendimiento. La capacidad de un sistema para aceptar una carga mayor se denomina escalabilidad , y modificar un sistema para que pueda soportar 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 característica del software parece realizar su tarea. El concepto se aplica principalmente a aspectos de aceptación del usuario .
El tiempo que tarda una aplicación en iniciarse o un archivo en descargarse no se agiliza mostrando una pantalla de inicio (ver Pantalla de presentación) 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 que sepa que el sistema está procesando 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 parámetros 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 al otro, pero a menudo hay una compensación entre ellos: ¿es mejor, por ejemplo, usar unas pocas instrucciones complicadas que tardan mucho tiempo en ejecutarse o usar instrucciones que se ejecutan muy rápidamente, aunque se necesitan más de ellas 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 enfoca en mejorar el rendimiento al realizar mejoras significativas en f (con técnicas como tuberías más profundas y cachés más rápidos), mientras que (con suerte) no sacrifica demasiado C, lo que lleva a un diseño de CPU demonio de la velocidad. A veces, un diseñador se enfoca en mejorar el rendimiento al realizar mejoras significativas en CPI (con técnicas como ejecución fuera de orden , CPU superescalares , cachés más grandes, cachés con tasas de aciertos mejoradas, predicción de bifurcación mejorada , ejecución especulativa , etc.), mientras que (con suerte) no sacrifica demasiado la frecuencia de reloj, lo que lleva a un diseño de CPU de genio. [10] Para un conjunto de instrucciones determinado (y, por lo tanto, N fijo) y un proceso de semiconductores, el rendimiento máximo de un solo hilo (1/t) requiere un equilibrio entre técnicas de genio y técnicas de corredor de velocidad. [9]