Skip to content

Latest commit

 

History

History
138 lines (118 loc) · 5.56 KB

4_Rendimiento.md

File metadata and controls

138 lines (118 loc) · 5.56 KB

Conceptos

Rendimiento o performance

El rendimiento —o performance en inglés— es un atributo de la calidad de una arquitectura de software que define la capacidad de un sistema, producto o componente para cumplir con sus funciones dentro de los límites de tiempo aceptables1.

Las operaciones en las computadoras llevan tiempo. Los cálculos en el procesador llevan tiempo del orden de miles de nanosegundos, el acceso al disco —ya sea de estado sólido o mecánico— lleva tiempo del orden de decenas de milisegundos, y el acceso a la red lleva tiempo que va desde cientos de microsegundos dentro del mismo centro de datos hasta más de 100 milisegundos para mensajes a centros de cómputo en la nube.

El modelo de calidad de la norma ISO/IEC 250102 no define un atributo de calidad para el rendimiento con la definición que aquí se usa, sino para eficiencia de desempeño, que a su vez incluye una sub-característica comportamiento temporal que es más cercana a lo que aquí llamamos rendimiento. La eficiencia del desempeño incluye además de las cuestiones relacionadas con el tiempo, otras relacionadas con el consumo de recursos y la capacidad de éstos, en las sub-características utilización de recursos y capacidad respectivamente.

En el Azure Well-Architected Framework[^3] el pilar es rendimiento eficiente o performance efficiency en inglés, que al igual que 2 incluye aspectos de comportamiento temporal pero también de utilización de recursos y capacidad.

Algunos componentes del rendimiento

  • Tiempo de respuesta: el tiempo que tarda el sistema, producto o componente en responder a una solicitud desde el momento en que se inicia la acción hasta que se recibe una respuesta.

  • Throughput: la cantidad de trabajo que un sistema, producto o componente puede realizar en un período de tiempo dado, por ejemplo, el número de transacciones por segundo realizadas por un servicio, solicitudes por segundo procesadas por un servidor, bytes por segundo transmitidos por un canal, etc.

  • Utilización de recursos: la cantidad de recursos de procesador, memoria, disco, red, etc. que se utilizan para realizar tareas específicas; usualmente se expresan como un porcentaje del total disponible de ese recurso.

  • Capacidad de escalabilidad: la capacidad del sistema, producto o componente para mantener su rendimiento a medida que se incrementa la carga de trabajo o el número de usuarios.

  • Latencia: el tiempo de espera para comenzar el procesamiento de una solicitud; es parte del tiempo de respuesta y excluye el tiempo de procesamiento de la solicitud.

Tácticas para el rendimiento

En cualquier momento durante el período posterior a la llegada de una solicitud, pero antes de que se complete la respuesta del sistema, el sistema está trabajando para responder a esa solicitud o el procesamiento está bloqueado por alguna razón. Esto da lugar a los dos factores básicos que contribuyen al tiempo de respuesta y al uso de recursos: el tiempo de procesamiento —cuando el sistema está trabajando para responder y consumiendo recursos de forma activa— y el tiempo de bloqueo —cuando el sistema no puede responder—.

  • Tiempo de procesamiento y uso de los recursos
  • Tiempo de bloqueo y contención de recursos
  • Contención de los recursos
  • Disponibilidad de recursos
  • Dependencia de otras operaciones

Vean más detalles sobre estas las tácticas para el rendimiento aquí.

Tácticas de rendimiento Controlar la demanda de recursos Gestionar los pedidos de trabajo:
  • Gestionar la llegada de eventos
  • Gestionar la tasa de muestreo
  • Limitar la respuesta a eventos
    Priorizar los eventos
    Reducir la sobrecarga computacional
  • Reducir la indirección
  • Co-ubicar recursos comunidados
  • Limpieza periódica
  • Limitar los tiempos de ejecución
    Incrementar la eficiencia en el uso de recursos
    Gestionar los recursos Aumentar los recursos
    Introducir concurrencia
    Mantener múltiples copias de los cálculos
    Mantener múltiples copias de los datos
    Limitar los tamaños de las colas
    Calendarizar recursos

    Patrones para rendimiento y eficiencia

    Vean Cloud design patterns that support performance efficiency en Azure Well Architected Framework.

    Footnotes

    1. Bass, L., Clements, P., Kazman, R. (2022). Software Architecture in Practice, 4th edition. Addison-Wesley.

    2. ISO/IEC 25010. (2011). ISO/IEC 25010:2011, Systems and software engineering—Systems and software Quality Requirements and Evaluation (SQuaRE) — System and software quality models. 2