Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
Clase 35 de 43 • Curso Profesional de Arquitectura de Software
Resumen
¿Cómo controlar la eficiencia de ejecución?
La eficiencia de ejecución es clave para que los sistemas respondan a los estímulos de manera efectiva y en el tiempo esperado. Para lograr esto, se implementan tácticas específicas, agrupadas en tres familias principales: demanda de recursos, gestión de recursos y arbitraje de recursos. Estas tácticas son fundamentales para asegurar un rendimiento óptimo en cualquier sistema que procese múltiples eventos simultáneamente.
¿Cuáles son las tácticas de demanda de recursos?
En la familia de demanda de recursos, el foco principal es cómo gestionar eficientemente los recursos cuando un evento ingresa al sistema. Estas tácticas incluyen:
- Mejorar la eficiencia computacional: Se analizan los algoritmos y procesos para identificar y optimizar puntos de ineficiencia. Por ejemplo, se busca evitar iteraciones innecesarias en listas, lo que consume muchos recursos.
- Reducir la sobrecarga: Optimizar los pasos y acciones requeridas para completar una tarea o responder a un evento. Por ejemplo, precalcular datos durante la escritura para reducir la carga durante la lectura.
- Manejar la tasa de eventos: Controlar cuántos eventos se emiten hacia un componente específico. Se puede reducir la cantidad de eventos agrupándolos o enviando datos agregados en un solo evento.
- Controlar la frecuencia de muestreo: Decidir cómo procesar los eventos de manera agrupada en lugar de uno a uno, optimizando así el uso de recursos del sistema.
¿Qué incluyen las tácticas de gestión de recursos?
Las tácticas de gestión de recursos se centran en cómo aprovechar al máximo los recursos disponibles o incrementar su disponibilidad:
- Concurrencia: Permite paralelizar procesos para responder en menor tiempo utilizando recursos de forma paralela. Es crucial en áreas como Data Science, donde el volumen de datos es significativo.
- Réplicas: Involucra duplicar procesos o datos para que estén más accesibles, como en el uso de caché, que guarda copias de datos en memoria cercana al procesamiento.
- Aumento de recursos: Medir y decidir cuándo es necesario ampliar la cantidad de recursos disponibles. Plataformas como Amazon facilitan esto ofreciendo servicios que escalan automáticamente los recursos según sea necesario.
¿Cómo se implementa el arbitraje de recursos?
El arbitraje de recursos es crucial cuando múltiples procesos requieren los mismos recursos al mismo tiempo. Las estrategias incluyen:
- Priorización: Asignar prioridades a los recursos para que ciertos procesos se atiendan antes que otros, basado en políticas de planificación de tareas.
- Acceso sincrónico o aplazado: Decidir entre responder inmediatamente o programar tareas para un momento futuro.
- Orden de resolución: Determinar el orden de importancia o la secuencia en la que se resolverán las solicitudes, optimizando así el acceso a los recursos.
Implementar todas estas tácticas adecuadamente puede ser decisivo para que un sistema responda eficazmente a los estímulos de eventos. Sin embargo, es fundamental priorizar y seleccionar las más adecuadas para cada caso, considerando que la eficiencia no siempre debe ser el atributo prioritario sobre otros factores en ingeniería.