Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Les lois universelles de la performance - SunnyTech 2022

Les lois universelles de la performance - SunnyTech 2022

L'estimation de la performance d'une application est souvent une démarche empirique à base de tests de charge et de recherche d'optimisations algorithmiques ou de configuration. Pour aider dans cette démarche, il existe des règles universelles, dérivées de la théorie des files d'attente, qui nous permettent de mieux modéliser les systèmes et prédire leur performance même sans être capable de les tester complètement.

Dans cette session, je vous présenterai les principales lois applicables en particulier la loi de montée en charge universelle de Gunther et comment, sans rentrer dans les détails mathématiques, il est possible de les appliquer sur des problèmes concrets de modélisation de performance applicative et d'estimation de charge.

Fd4bf5fc86743ad04609e94ac4e11d00?s=128

rluta

June 30, 2022
Tweet

More Decks by rluta

Other Decks in Programming

Transcript

  1. #SunnyTech Les lois universelles de la performance Raphaël Luta -

    @raphaelluta 

  2. #SunnyTech 1

  3. #SunnyTech C'est trop lent ! Temps total de référence T1

    2
  4. #SunnyTech Paralléliser pour aller plus vite Tn = T1 σ

    + T1 (1 − σ) n sérialisée σ parallélisable 1 − σ T1 T2 T4 4
  5. #SunnyTech Limites de l'accélération parallèle A(n) = T1 Tn Accélération

    1 2 3 4 5 6 7 8 9 10 Parallélisme 1 2 3 4 5 6 7 8 9 10 0 0.01 0.05 0.1 0.5 σ A(n) = n 1 + σ(n − 1) Loi d'Amdahl 48-6 Accélération:
  6. #SunnyTech Exemple: Collections Parallèles val data=(1 to 1000*1000).toParArray val poolSize

    = 4 val pool = new ForkJoinPool(poolSize) data.tasksupport = new ForkJoinTaskSupport(pool) data.sum Nombre Threads Durée (ms) Accélération 1 2.802 1.00 2 1.775 1.58 3 1.551 1.81 4 1.474 1.90 yqypsu1osl 7*3*2
  7. QUEUES QUEUES EVERYWHERE

  8. #SunnyTech Anatomie d'une fi le d'attente λ Débit d'arrivée moyen

    μ Débit de service moyen Taille maximale
 fi le d'attente Nombre de serveurs Discipline G / G / 1 / ∞ / FCFS ? ? ? M D G Memoryless Deterministic Generalized Loi d'arrivée ? ? ? M D G Memoryless Deterministic Generalized Loi de service 3*2*7
  9. #SunnyTech Mensurations d'une fi le d'attente λ μ L Nombre

    d'éléments dans le système Temps d'attente dans la fi le W R Temps de résidence S Temps de service Taux d'utilisation ρ ρ = λ μ S = 1 μ R = W + S L = λR Loi de Little Relations entre les mesures 6*7
  10. #SunnyTech Lequel de ces 2 systèmes possède les meilleurs performances

    ? Backlog personnel Backlog mutualisé Débit d'arrivée: 7 tickets/jour Temps de service: 0,5 jour Temps moyen ticket: 1,25 j Tickets en attente: 5 Temps moyen ticket: 4 j Tickets en attente: 24 14*3
  11. #SunnyTech Modélisation de système Web Server DB Requests Requests Responses

    Responses 84/2
  12. #SunnyTech Comportement théorique d'une G/G/1 λ ρ 1 μ 0

    utilisation débit ρ W 1 utilisation temps d'attente W ≈ ( ρ 1 − ρ )S( c2 λ + c2 μ 2 ) Approximation de Kingman zi75prbwll 44-2
  13. #SunnyTech Mesures de latence d'une API tvziz8ng6s wrk2 -t1 -d120

    -c10 -R $R --latency $URL; 30 ≤ R ≤ 300 21*2
  14. #SunnyTech Modélisation de système Web Server DB Requests Système ouvert

    Requests Responses Système fermé Request Response Users Responses 21+21
  15. #SunnyTech Mesures en système fermé Temps de réponse moyen 0

    10 20 30 40 50 60 70 80 Nombre de connexions 1 3 5 7 9 11 13 15 17 19 Requêtes / sec 0 50 100 150 200 250 300 Nombre de connexions 1 3 5 7 9 11 13 15 17 19 wrk2 -t1 -d120 -c $c --latency $URL; 1 ≤ c ≤ 20 42/1 https://github.com/giltene/wrk2
  16. #SunnyTech Comportement d'un système fermé Réponse N utilisateurs envoient des

    requêtes toutes les Z secondes Traitement prends S secondes X(N) X(N) = N 1 − σ(N − 1) σ = S S + Z avec 40+2 Débit de requête
  17. #SunnyTech La loi d'extensibilité universelle USL(n) = cn 1 +

    σ(n − 1) + κn(n − 1) Pénalité de contention Pénalité de cohérence 0 ≤ σ ≤ 1 0 ≤ κ ≤ 1 c ≥ 1 Taux de concurrence izpkxtggul 42
  18. #SunnyTech Exemples d'application • API • Job Spark • Node.js

    @ Paypal • Zookeeper https://www.desmos.com/calculator/ljl4f7tkty https://www.desmos.com/calculator/azpji2vamz https://www.desmos.com/calculator/ckyauwf2mv https://www.desmos.com/calculator/d0qctxdjwd 6*6+6 https://www.desmos.com/calculator/4ol6hieyca
  19. #SunnyTech Récapitulatif

  20. #SunnyTech La modélisation des systèmes • Permet de compléter les

    approches de mesures empiriques pour: • Quali fi er le bon fonctionnement • Anticiper des comportements anormaux • Plani fi er des évolutions 9*5-3
  21. #SunnyTech Comprendre votre contexte d'utilisation... Système ouvert Système fermé Requests

    Responses Requests Responses 7*6
  22. #SunnyTech Pour anticiper les modes de panne λ R débit

    temps de résidence N R utilisateurs temps de résidence S S μ 36+6
  23. #SunnyTech Universal Scalability Law 43-1

  24. #SunnyTech Evolutivité des process et des organisations Scaling Organisations 48-6

  25. #SunnyTech Pour aller plus loin... • Guerilla Capacity Planning de

    Neil Gunther • The Essential Guide to Queueing Theory de Baron Schwartz / Vivid Cortex • Practical Scalability Analysis with U.S.L. de Baron Schwartz / Vivid Cortex • usl4j and you by Coda Hale • Queues Calculators: 
 https://www.supositorio.com/rcalc/rcalclite.htm 7*5+7
  26. #SunnyTech Merci https://bit.ly/sunny-lois-perf Illustrations: © Walt Disney - Pixar