Datacenter software dynamics
- CPU
- Mémoire
- Disque
- Réseau
- Section critique
C’est quoi un datacenter ?
Sa fonction est de répondre à des requêtes/transactions d’utilisateurs
Un message engendre une unité de travail, l’unité de mesure est la transaction qui atterrit sur un serveur.
Temps de réponse = latence = temps entre l’envoie du message et du résultat
Offered load = ce qu’on voit comme flux de requêtes entrantes du point de vue d’un datacenter, unité de mesure : req/s
Service = ensemble de programme qui permet de gérer un certain type de problème.
La latence du service est variable.
Tail latency = Sauf contre-ordre, c’est le 99th percentile des temps de latence, a.k.a. la pire latence de 1% des clients
Execution skew = distribution des latences
Hardware
Logiciel
RPC = Remote Procedure Call (Exemple : Protobuf de Google)
2 modes à ça :
- Synchrone : on part du principe qu’il n’y a qu’une personne, on bloque et on attend la réponse
- Asynchrone : On n’attend pas le résultat, on continue l’exécution
Cf. cette conférence
Latency distribution
Le t_{max} on s’en fout parce qu’il y a toujours des requêtes qui se perdent.
La courbe verte, c’est une courbe plus “réaliste”.
Ce qu’il se passe avant le 50% et après le 99%, on s’en fout.
Méthode
Observation
CPU
Exo : Mesurer la latence d’une instruction
ADDQ
Unité de mesure : cycle
- Utilisation du RDTSC (sous-horloge de l’horloge physique, dépendant du matériel)
À rendre :
- 1 pdf
- \RA description CPU + Machine avec les résultats
- 1 code (dépôt Moule)
Retour des présentations
Dans l’assembleur quand il y a des %
, le résultat est à droite (GNU), sinon c’est de l’Intel et le résultat est à gauche.
ILP : Instruction Level Parallelism : Quand on peut faire exécuter en parallèle des instructions (sort of)
Il faut donc désactiver l’hyperthreading pour éviter que d’autre programme interfère dans nos instructions.
Faire une moyenne sur plusieurs ordinateurs, ça dépend de l’architecture (fréquence) et du RDTSP qui diffère entre les CPU alors ça n’a aucun sens de les comparer entre machines distinctes.