stringtranslate.com

Ajuste del rendimiento

El ajuste del rendimiento es la mejora del rendimiento del sistema . Normalmente, en los sistemas informáticos, la motivación para 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:

  1. Evaluar el problema y establecer valores numéricos que categoricen el comportamiento aceptable.
  2. Mida el rendimiento del sistema antes de modificarlo.
  3. Identificar la parte del sistema que es crítica para mejorar el rendimiento. Esto se denomina cuello de botella .
  4. Modifique esa parte del sistema para eliminar el cuello de botella.
  5. Medir el rendimiento del sistema después de la modificación.
  6. Si la modificación mejora el rendimiento, adóptela. Si la modificación empeora el rendimiento, vuelva a dejarlo como estaba.

Este es un ejemplo del ciclo medir-evaluar-mejorar-aprender del aseguramiento de la calidad .

Un problema de rendimiento puede identificarse por sistemas lentos o que no responden. Esto suele ocurrir debido a una carga elevada del sistema , lo que hace que alguna parte del sistema alcance un límite en su capacidad de respuesta. Este límite dentro del sistema se conoce como cuello de botella.

Se utilizan varias técnicas para mejorar el rendimiento, entre ellas la optimización del código, el equilibrio de carga, la estrategia de almacenamiento en caché, la computación distribuida y el autoajuste.

Análisis de rendimiento

Consulte el artículo principal en Análisis de rendimiento

El análisis de rendimiento, conocido comúnmente como creación de perfiles, es la investigación del comportamiento de un programa utilizando información recopilada a medida que el programa se ejecuta. Su objetivo es determinar qué secciones de un programa se deben optimizar.

Un generador de perfiles es una herramienta de análisis de rendimiento que mide el comportamiento de un programa a medida que se ejecuta, en particular la frecuencia y duración de las llamadas a funciones. Las herramientas de análisis de rendimiento existían al menos desde principios de la década de 1970. Los generadores de perfiles se pueden clasificar según sus tipos de salida o sus métodos de recopilación de datos.

Ingeniería de rendimiento

Consulte el artículo principal en Ingeniería de rendimiento

La ingeniería de desempeño es la disciplina que abarca roles, habilidades, actividades, prácticas, herramientas y resultados utilizados para cumplir con los requisitos no funcionales de un sistema diseñado, como aumentar los ingresos del negocio, reducir las fallas del sistema, los proyectos retrasados ​​y evitar el uso innecesario de recursos o trabajo.

Se han identificado varias actividades comunes en diferentes metodologías:

Optimización de código

Consulte el artículo principal en Optimización (informática) .

Algunas optimizaciones incluyen mejorar el código para que el trabajo se realice una vez antes de un bucle en lugar de dentro de un bucle o reemplazar una llamada a una ordenación por selección simple con una llamada al algoritmo más complicado para una ordenación rápida .

Optimización de la configuración

Los sistemas de software modernos, por ejemplo, los sistemas de Big Data, comprenden varios marcos (por ejemplo, Apache Storm, Spark, Hadoop). Cada uno de estos marcos expone cientos de parámetros de configuración que influyen considerablemente en el rendimiento de dichas aplicaciones. Algunas optimizaciones (ajustes) incluyen la mejora del rendimiento de la aplicación para encontrar la mejor configuración para dichas aplicaciones.

Estrategia de almacenamiento en caché

El almacenamiento en caché es un método fundamental para eliminar los cuellos de botella de rendimiento que son el resultado del acceso lento a los datos. El almacenamiento en caché mejora el rendimiento al retener la información utilizada con frecuencia en una memoria de alta velocidad, lo que reduce el tiempo de acceso y evita la repetición de cálculos. El almacenamiento en caché es una forma eficaz de mejorar el rendimiento en situaciones en las que se aplica el principio de localidad de referencia . Los métodos utilizados para determinar qué datos se almacenan en un almacenamiento progresivamente más rápido se denominan colectivamente estrategias de almacenamiento en caché. Algunos ejemplos son ASP.NET cache , CPU cache , etc.

Equilibrio de carga

Un sistema puede estar formado por componentes independientes, cada uno de los cuales puede atender solicitudes. Si todas las solicitudes son atendidas por uno de estos sistemas (o un número reducido) mientras que los demás permanecen inactivos, se pierde tiempo esperando a que el sistema utilizado esté disponible. Organizar de forma que todos los sistemas se utilicen por igual se denomina equilibrio de carga y puede mejorar el rendimiento general.

El equilibrio de carga se utiliza a menudo para lograr mayores ganancias de un sistema distribuido al seleccionar de forma inteligente en qué máquina ejecutar una operación en función de qué tan ocupados estén todos los candidatos potenciales y qué tan adecuada es cada máquina para el tipo de operación que debe realizarse.

Computación distribuida

La computación distribuida se utiliza para aumentar el potencial de ejecución paralela en las arquitecturas de CPU modernas. El uso de sistemas distribuidos es esencial para lograr beneficios de rendimiento a partir del paralelismo disponible. La computación en clúster de alto rendimiento es un uso bien conocido de los sistemas distribuidos para mejorar el rendimiento.

La computación distribuida y la agrupación en clústeres pueden afectar negativamente la latencia y, al mismo tiempo, aumentar la carga en los recursos compartidos, como los sistemas de bases de datos. Para minimizar la latencia y evitar cuellos de botella, la computación distribuida puede beneficiarse significativamente de las memorias caché distribuidas .

Autoajuste

Un sistema de autoajuste es capaz de optimizar sus propios parámetros internos de funcionamiento para maximizar o minimizar el cumplimiento de una función objetivo ; típicamente la maximización de la eficiencia o la minimización de errores . Los sistemas de autoajuste típicamente exhiben un control adaptativo no lineal . Los sistemas de autoajuste han sido un sello distintivo de la industria aeroespacial durante décadas, ya que este tipo de retroalimentación es necesaria para generar un control multivariable óptimo para procesos no lineales.

Cuellos de botella

El cuello de botella es la parte de un sistema que está al límite de su capacidad. Las demás partes del sistema permanecerán inactivas esperando a que realice su tarea.

En el proceso de búsqueda y eliminación de cuellos de botella, es importante comprobar su existencia, normalmente mediante mediciones, antes de actuar para eliminarlos. Existe una fuerte tentación de hacer conjeturas , pero las conjeturas suelen ser erróneas.

Véase también

Referencias

Enlaces externos