Datacenter software dynamics

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

distrib

Hardware

Logiciel

gmail

RPC = Remote Procedure Call (Exemple : Protobuf de Google)
2 modes à ça :

Cf. cette conférence

Latency distribution

distrib_latence

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

method

Observation

CPU

Exo : Mesurer la latence d’une instruction ADDQ
Unité de mesure : cycle

À rendre :

ref

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.

Agner Fog, un mec qui benchmark des CPUs