stringtranslate.com

La optimización 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, 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:

  1. Evaluar el problema y establecer valores numéricos que categoricen el comportamiento aceptable.
  2. Mida el rendimiento del sistema antes de modificarlo.
  3. Identifique la parte del sistema que es crítica para mejorar el rendimiento. Esto se llama cuello de botella .
  4. Modifique esa parte del sistema para eliminar el cuello de botella.
  5. Mida 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 colocarlo como estaba.

Este es un ejemplo del ciclo medir-evaluar-mejorar-aprender desde el control de calidad .

Un problema de rendimiento puede identificarse por sistemas lentos o que no responden. Esto suele ocurrir debido a una carga alta 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 denomina cuello de botella.

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

Análisis de rendimiento

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

El análisis de rendimiento, comúnmente conocido como creación de perfiles, es la investigación del comportamiento de un programa utilizando información recopilada a medida que se ejecuta el programa. Su objetivo es determinar qué secciones de un programa 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 del desempeño existieron al menos desde principios de la década de 1970. Los perfiladores pueden clasificarse según sus tipos de resultados o sus métodos de recopilación de datos.

Ingeniería de rendimiento

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

La ingeniería de rendimiento es la disciplina que abarca roles, habilidades, actividades, prácticas, herramientas y entregables utilizados para cumplir con los requisitos no funcionales de un sistema diseñado, como aumentar los ingresos comerciales, reducir las fallas del sistema, retrasar proyectos y evitar el uso innecesario. de recursos o de 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 clasificación de selección simple con una llamada al algoritmo más complicado para una clasificació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 (tuning) incluyen mejorar el rendimiento de la aplicación encontrando 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 en el rendimiento que son el resultado de un acceso lento a los datos. El almacenamiento en caché mejora el rendimiento al retener la información utilizada con frecuencia en la memoria de alta velocidad, reduciendo el tiempo de acceso y evitando cálculos repetidos. 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 cada vez más rápido se denominan colectivamente estrategias de almacenamiento en caché. Algunos ejemplos son el caché de ASP.NET , el caché de la CPU , etc.

Balanceo de carga

Un sistema puede constar de componentes independientes, cada uno de ellos capaz de atender solicitudes. Si todas las solicitudes son atendidas por uno de estos sistemas (o un pequeño número) mientras otros permanecen inactivos, se pierde tiempo esperando que el sistema usado esté disponible. Hacer arreglos para que todos los sistemas se utilicen por igual se conoce como equilibrio de carga y puede mejorar el rendimiento general.

El equilibrio de carga se utiliza a menudo para lograr mayores beneficios de un sistema distribuido al seleccionar inteligentemente 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 distribuída

La computación distribuida se utiliza para aumentar el potencial de ejecución paralela en 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 a 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 informática distribuida puede beneficiarse significativamente de las cachés distribuidas .

Autoajuste

Un sistema de autoajuste es capaz de optimizar sus propios parámetros internos de funcionamiento con el fin de 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 suelen exhibir 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 máximo de su capacidad. Otras partes del sistema estarán inactivas esperando a que realice su tarea.

En el proceso de encontrar y eliminar cuellos de botella, es importante demostrar su existencia, generalmente mediante mediciones, antes de actuar para eliminarlos. Existe una fuerte tentación de adivinar . Las conjeturas suelen ser erróneas.

Ver también

Referencias

enlaces externos