# Rendimiento del equipo

El rendimiento del Sistema de Información o de la computadora es la cantidad de trabajo realizado por un sistema informático. Dependiendo del contexto, un alto rendimiento de equipo puede incluir uno o más de los siguientes:
* Tiempo de respuesta corto para una determinada pieza de trabajo
* Alto throughput (tasa de procesamiento de trabajo)
* Baja utilización de recursos computacionales
* Alta disponibilidad del sistema de computación o de la aplicación
* Rápida (o muy compacta)compresión y descompresión de datos
* Gran ancho de banda
* Tiempo corto de transmisión de datos

## Definiciones técnicas y no técnicas

El desarrollo de cualquier sistema informático puede ser evaluado en medibles términos técnicos, utilizando uno o más de los parámetros mencionados anteriormente. De esta manera el rendimiento puede ser
* En comparación con respecto a otros sistemas o el mismo sistema antes / después de los cambios
* En términos absolutos, por ejemplo, para el cumplimiento de una obligación contractual
Mientras que la definición anterior se refiere a un enfoque científico, técnico, la siguiente definición dada por Arnold Allen sería útil para una audiencia no técnica:
   La palabra rendimiento en el rendimiento del equipo significa lo mismo que significa que el rendimiento en otros contextos, es decir, que significa "¿Qué tan bien está haciendo el equipo el trabajo que se supone que haga?"

### Como un aspecto de la calidad del software

El rendimiento del software, particularmente el tiempo de respuesta de la aplicación informática, es un aspecto de la calidad de software que es importante en la interacción persona-computadora.

## Ingeniería de rendimiento

La ingeniería de rendimiento dentro de la ingeniería de sistemas, abarca el conjunto de las funciones, habilidades, actividades, prácticas, herramientas y productos aplicados en cada fase del ciclo de vida de desarrollo de sistemas que aseguran que una solución será diseñada, implementada y operativa soportada para cumplir con el desempeño de requisitos definidos para la solución.
La ingeniería de rendimiento continuamente se ocupa de compensaciones entre los tipos de rendimiento. De vez en cuando un diseñador de CPU puede encontrar una manera de hacer una CPU con un mejor rendimiento general mediante la mejora de uno de los aspectos del rendimiento, se presenta a continuación, sin sacrificar el rendimiento de la CPU en otras áreas. Por ejemplo, la construcción de la CPU de transistores mejores, más rápidos.
Sin embargo, a veces empujando un tipo de rendimiento a un extremo conduce a una CPU con un peor rendimiento general, debido a que otros aspectos importantes se sacrificaron para obtener un número de aspectos impresionantes, por ejemplo, la frecuencia del reloj del chip (véase el mito del megahercio).

### Ingeniería de rendimiento de las aplicaciones

Ingeniería de rendimiento de aplicaciones (APE) es una metodología específica dentro de la ingeniería de rendimiento diseñada para cumplir con los retos asociados con el rendimiento de aplicaciones en el móvil cada vez distribuida, la nube y entornos de TI terrestres. Incluye las funciones, habilidades, actividades, prácticas, herramientas y productos aplicados en todas las fases del ciclo de vida de aplicaciones que aseguran una aplicación se ha diseñado, implementado y sistema operativo soportado para cumplir con los requisitos de rendimiento no funcionales.

## Aspectos del rendimiento

Las métricas de rendimiento del equipo (lo que se puede medir) incluyen disponibilidad, tiempo de respuesta, capacidad de canal, latencia, completion time, service time, ancho de banda, throughput, eficiencia, escalabilidad, rendimiento por vatio, ratio de compresión, instrucción de longitud de la trayectoria y aumento de velocidad. Los puntos de referencia de la CPU están disponibles.

### Disponibilidad

La disponibilidad de un sistema se mide típicamente como un factor de su fiabilidad - a medida que aumenta la fiabilidad, lo mismo ocurre con la disponibilidad (es decir, menos tiempo de inactividad). La disponibilidad de un sistema también puede aumentarse mediante la estrategia de centrarse en el aumento de la capacidad de prueba y facilidad de mantenimiento y no en la fiabilidad. La mejora de la mantenibilidad es generalmente más fácil que la fiabilidad. estimaciones de mantenibilidad (tasas de reparación) también son generalmente más precisa. Sin embargo, debido a las incertidumbres en las estimaciones de fiabilidad son en la mayoría de los casos muy grande, es probable que dominar el problema de disponibilidad (predicción de incertidumbre), incluso mientras que los niveles de mantenibilidad son muy altos.

### Tiempo de respuesta

El tiempo de respuesta es la cantidad total de tiempo que se necesita para responder a una solicitud de servicio. En informática, que el servicio puede ser cualquier unidad de trabajo desde un disco sencillo IO a la carga de una compleja página web. El tiempo de respuesta es la suma de tres números:
* Tiempo de servicio - ¿Cuánto tiempo se tarda en hacer el trabajo solicitado.
* El tiempo de espera - ¿Por cuánto tiempo la solicitud tiene que esperar a que las solicitudes en cola por delante de él antes de que llegue a funcionar.
* El tiempo de transmisión - El tiempo que tarda en pasar la petición al equipo haciendo el trabajo y la respuesta al solicitante.

### Velocidad de procesamiento

La mayoría de los consumidores eligen una arquitectura de ordenador (normalmente arquitectura Intel IA32) para ser capaz de ejecutar una gran cantidad de software preexistente, pre-compilados. Al estar relativamente desinformados sobre los puntos de referencia de ordenador, algunos de ellos recoger una CPU particular, sobre la base de la frecuencia de operación (véase mito de megahercios).
Algunos diseñadores de sistemas de que construyen ordenadores paralelos recogen las CPU en función de la velocidad por dólar.

### Capacidad del canal

La capacidad del canal es el límite superior más apretado de la tasa de información que puede ser transmitida de forma fiable por un canal de comunicación. Por el teorema de Shannon-Hartley, la capacidad de canal de un canal dado es la tasa de información limitante (en unidades de información por unidad de tiempo) que se puede lograr con una probabilidad de error arbitrariamente pequeño.
La teoría de la información, desarrollada por Claude E. Shannon durante la Segunda Guerra Mundial, define el concepto de capacidad de canal y proporciona un modelo matemático por el cual se puede calcular la misma. El resultado clave indica que la capacidad del canal, como se definió anteriormente, viene dado por el máximo de la información mutua entre la entrada y salida del canal, donde la maximización es con respecto a la distribución de entrada.

### Latencia

La latencia es un que tiempo de retraso entre la causa y el efecto de algún cambio físico en el sistema siendo observado. La latencia es el resultado de la velocidad limitada con la que cualquier interacción física puede tener lugar. Esta velocidad es siempre menor o igual a la velocidad de la luz. Por lo tanto, cada sistema físico que tiene dimensiones espaciales diferentes de cero experimentará algún tipo de latencia.
La definición precisa de latencia depende del sistema que se observa y la naturaleza de la estimulación. En las comunicaciones, el límite inferior de la latencia se determina por el ser medio utilizado para las comunicaciones. En sistemas de comunicación de dos vías fiables, la latencia limita la velocidad máxima que puede transmitirse la información, ya que es a menudo un límite en la cantidad de información que es "en vuelo" en cualquier momento. En el campo de la interacción hombre-máquina, la latencia perceptible (retraso entre lo que los comandos de usuario y cuando el equipo ofrece los resultados) tiene un fuerte efecto sobre la satisfacción del usuario y la usabilidad.
Las computadoras ejecutan conjuntos de instrucciones llamadas un proceso. En los sistemas operativos, la ejecución del proceso se puede posponer si otros procesos también se están ejecutando. Además, el sistema operativo puede programar el momento para realizar la acción que el proceso está al mando. Por ejemplo, supongamos que ordena un proceso que la salida de tensión de una tarjeta de computadora puede ajustar alto-bajo-alto-bajo y así sucesivamente, a razón de 1000 Hz. El sistema operativo puede elegir ajustar la programación de cada transición (de mayor a menor o de menor a mayor) en función de un reloj interno. La latencia es el retraso entre la instrucción de proceso al mando de la transición y el hardware de hecho la transición de la tensión de mayor a menor o de menor a mayor.
Los diseñadores de sistemas que construyen sistemas de tiempo real quieren garantizar la respuesta del peor caso. Esto es fácil de hacer cuando la CPU tiene una baja latencia de interrupción y cuando se tiene la respuesta determinista.

### Ancho de banda

En las 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 velocidad binaria neta (aka. Tasa máxima de bits, velocidad de información, o capa física por tasa de bits útil), 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 de datos máxima de un enlace de comunicación físico es proporcional a su ancho de banda en hertzios, que a veces se denomina ancho de banda de frecuencia, ancho de banda espectral, el ancho de banda RF, ancho de banda de la señal o ancho de banda analógico.

### Rendimiento

En términos generales, throughput es la tasa de producción o la velocidad a la que algo se puede procesar.
En las redes de comunicación, throughput es esencialmente sinónimo con el consumo de ancho de banda digital. En las redes inalámbricas o redes de comunicación celular, la eficiencia espectral del sistema en bits / s / Hz / unidad de área, bit / s / Hz / sitio o bit / s / Hz / célula, es el sistema el máximo throughput (throughput total) dividida por el ancho de banda analógico y alguna medida del área de cobertura del sistema.
En circuitos integrados, a menudo un bloque en un diagrama de flujo de datostiene una sola entrada y una sola salida, y operar en paquetes discretos de información. Ejemplos de tales bloques son módulos de FFT o multiplicadores binarios. Debido a que las unidades de rendimiento son el inverso de la unidad de retardo, 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 procesador integrado de un canal de comunicaciones, lo que simplifica el análisis del sistema.

### Escalabilidad

La escalabilidad es la capacidad de un sistema, de red, o un proceso para manejar una cantidad creciente de trabajo de una manera capaz o su capacidad para ser ampliada para adaptarse a que el crecimiento

### Consumo de energía

La cantidad de electricidad usada por la computadora. Esto es especialmente importante para los sistemas con fuentes de energía limitados, tales como, baterías, energía humana, solares.

#### Rendimiento por vatio

Los diseñadores de sistemas que construyen computadoras paralelas, como el hardware de Google, recogen las CPU en función de su velocidad por vatio de potencia, debido a que el costo de la alimentación de la CPU es mayor que el coste de la propia CPU.

### Compresión de datos

La compresión es útil porque ayuda a reducir el uso de recursos, como el espacio de almacenamiento de datos o capacidad de transmisión. Debido a que los datos comprimidos deben ser descomprimidos de usar, este procesamiento adicional impone costes computacionales u otros a través de descompresión; esta situación está lejos de ser un almuerzo gratis. La compresión de datos está sujeta a un espacio-tiempo de la complejidad disyuntiva.

### Tamaño y peso

Esta es una importante característica de rendimiento de los sistemas móviles, desde los teléfonos inteligentes que guardas en el bolsillo para los sistemas embebidos portátiles en una nave espacial.

### Impacto medioambiental

El efecto de un equipo o equipos en el medio ambiente, durante la fabricación y el reciclado, así como durante el uso. Las medidas se toman con los objetivos de reducción de residuos, la reducción de materiales peligrosos, y minimizar la huella ecológica de una computadora.

## Benchmarks

Debido a que hay tantos programas para poner a prueba una CPU en todos los aspectos de rendimiento, se desarrollaron los benchmarks.
Los benchmarks más famosos son los benchmarks SPECint y SPECfp desarrollados por Standard Performance Evaluation Corporation y el benchmark ConsumerMark desarrollado por el Embedded Microprocessor Benchmark Consortium EEMBC.

## Pruebas de rendimiento del software

En la ingeniería de software, las pruebas de rendimiento se encuentran en pruebas generalmente llevadas a cabo para determinar cómo un sistema lleva a cabo en términos de respuesta y la estabilidad bajo una carga de trabajo en particular. También puede servir para investigar, medir, validar o verificar otros atributos de calidad del sistema, tales como la escalabilidad, la fiabilidad y el uso de recursos.
Las pruebas de rendimiento es un subconjunto de ingeniería de rendimiento, una práctica emergente de la informática que se esfuerza para construir el rendimiento en la aplicación, el diseño y la arquitectura de un sistema.

### Análisis de rendimiento de software

En la ingeniería de software, perfiles ("perfil del programa", "perfil de software") es una forma de análisis dinámico de software que mide, por ejemplo, el espacio (memoria) o complejidad de tiempo de un programa, el uso de las instrucciones particulares, or frequency and duration of function calls. o la frecuencia y duración de las llamadas de función. El uso más común de la información de los perfiles es ayudar a la optimización del programa.
El perfil se logra mediante la instrumentación o bien el código fuente del programa o su formato binario ejecutable usando un instrumento llamado perfilador (o perfilador de código). Un número de diferentes técnicas puede ser utilizada por los perfiladores, tales como, basados en eventos, estadísticos, instrumentados, y métodos de simulación.

## Optimización del rendimiento

La optimización del rendimiento es la mejora del rendimiento del sistema. Esto es típicamente una aplicación informática, pero los mismos métodos se puede aplicar a los mercados económicos, burocracias u otros sistemas complejos. La motivación para tal actividad se llama un problema de rendimiento, que puede ser real o anticipada. La mayoría de los sistemas responderán a aumento de la carga con un cierto grado de disminución de rendimiento. La capacidad de un sistema para aceptar una carga más alta se denomina escalabilidad, y la modificación de un sistema para manejar una carga superior es sinónimo de optimización del rendimiento.
La optimización sistemática sigue estos pasos:
* Evaluar el problema y establecer los valores numéricos que categorizan el comportamiento aceptable.
* Medir el rendimiento del sistema antes de la modificación.
* Identificar la parte del sistema que es fundamental para mejorar el rendimiento. Esto se llama el cuello de botella.
* Modificar la parte del sistema para eliminar el cuello de botella.
* Medir el rendimiento del sistema después de la modificación.
* Si la modificación hace que el rendimiento mejor, adoptarlo. Si la modificación hace que el rendimiento es peor, poner de nuevo a la forma en que estaba.

## Rendimiento percibido

Rendimiento percibido, en ingeniería informática, se refiere a la rapidez con una función de software aparece para realizar su tarea. El concepto se aplica principalmente a los aspectos de aceptación del usuario.
La cantidad de tiempo que una aplicación necesita para poner en marcha, o un archivo para descargar, no se hace más rápido viendo una pantalla de inicio (véase pantalla de bienvenida) o un cuadro de diálogo de progreso de archivos. Sin embargo, satisface algunas necesidades humanas: parece más rápido para el usuario, así como proporcionar una señal visual para hacerles saber que el sistema está manejando su petición.
En la mayoría de los casos, el rendimiento real de incremento aumenta el rendimiento percibido, pero cuando el rendimiento real no se puede aumentar debido a limitaciones físicas, técnicas se pueden utilizar para aumentar el rendimiento percibido a costa de la disminución de rendimiento marginal real.

## Performance Equation

La cantidad total de tiempo (t) requerida para ejecutar un programa benchmark particular es
    $t=N*C/f$ , o equivalentemente
    $P=I*f/N$
donde
* P = 1/t es "el rendimiento" en términos de tiempo de ejecución
* N es el número de instrucciones ejecutadas realmente (la instrucción de longitud de la trayectoria). La densidad del código del conjunto de instrucciones fuertemente afecta N. El valor de N puede ser determinado ya sea exactamente mediante el uso de un simulador de conjunto de instrucciones (si está disponible) o mediante la estimación de la misma basada en parte en la distribución de frecuencia estimada o real de variables de entrada y mediante el examen de código máquina generado de un compilador de HLL. No puede determinarse a partir del número de líneas de código fuente HLL. N no se ve afectado por otros procesos que se ejecutan en el mismo procesador. El punto importante aquí es que el hardware normalmente no hace un seguimiento de (o por lo menos hacer fácilmente disponible) un valor de N para los programas ejecutados. El valor además, puede solo ser precisamente determinado por la simulación de conjunto de instrucciones, el cual es raramente practicado.
* f es la frecuencia del reloj en ciclos por segundo.
* C=$1/I$ es el promedio de ciclos por instrucción (CPI) para este benchmark.
* I=$1/C$ es el promedio de instrucciones por ciclo (IPC) para este benchmark.
Incluso en una máquina, un compilador diferente o el mismo compilador con diferentes opciones del compilador optimizador pueden cambiar N y el CPI—el benchmark se ejecuta más rápido si el nuevo compilador puede mejorar N o C sin hacer otro peor, pero a menudo hay un trade-off entre ellos, ¿es mejor, por ejemplo, utilizar unas pocas instrucciones complicadas que tardan mucho tiempo en ejecutarse, o para usar las instrucciones que se ejecutan muy rápidamente, aunque se necesita más de ellos para ejecutar el benchmark?
Un diseñador de la CPU es a menudo necesaria para implementar un particular conjunto de instrucciones particular, y por lo tanto no puede cambiar N. A veces, un diseñador se centra en mejorar el rendimiento llevando a cabo mejoras significativas en f (con técnicas tales como tuberías más profundas y cachés más rápido), mientras que (esperemos) no sacrificar demasiada C—conduciendo a un diseño de velocidad de la CPU speed-demon. A veces, un diseñador se centra en mejorar el rendimiento llevando a cabo mejoras significativas en el IPC (con técnicas como la ejecución fuera de orden, CPUs superescalar, cachés más grandes, cachés con mejores tasas de acierto, mejora de la predicción de saltos,, ejecución especulativa, etc.), mientras que ( con suerte) no sacrificar demasiado la frecuencia de reloj—dando lugar a un diseño brainiac CPU. Para un conjunto de instrucciones dadas (y por lo tanto N fijada) y de proceso de semiconductores, el rendimiento de un solo hilo máximo (1/t) requiere un equilibrio entre las técnicas brainiac y técnicas speedracer.