Aide mémoire sur la latence
Publié le
Quelques comparaisons de grandeurs pour mieux comprendre la notion de “performance”
Est-ce qu’un accès disque est vraiment plus lent qu’un accès en mémoire ?
Est-ce que stocker ma donnée aux US est vraiment problématique ?
Quelle débit maximum puis-je avoir sur un SSD ?
Tableau comparatif
Operation Time | in ns Time | in ms Time | Memo |
---|---|---|---|
L1 cache reference | 1 | ||
Branch misprediction | 3 | ||
L2 cache reference | 4 | ||
Mutex lock/unlock | 17 | ||
Main memory reference | 100 | ~100GB/sec, 100x L1 cache | |
Send 2 kB over 10 Gbps network | 1,600 | 0.0016 | |
Compress 1 kB with Zippy | 2,000 | 0.002 | |
Read 1 MB sequentially from memory | 10,000 | 0.010 | |
Round trip within same datacenter | 500,000 | 0.5 | |
Read 1 MB sequentially from SSD | 1,000,000 | 1 | ~1GB/sec SSD, 100x main memory |
Read 1 MB sequentially from disk | 5,000,000 | 5 | ~200MB/sec HDD, 500x main memory |
Read 1 MB sequentially from 1Gbps network | 10,000,000 | 10 | |
Disk seek | 10,000,000 | 10 | 20x datacenter round trip |
TCP packet round trip between continents | 150,000,000 | 150 |
Therefore, it is possible to read:
- sequentially from HDD at a rate of ~200MB per second
- sequentially from SSD at a rate of ~1 GB per second
- sequentially from main memory at a rate of ~100GB per second (burst rate)
- sequentially from 10Gbps Ethernet at a rate of ~1000MB per second
Rappel
- 1 ns = 10^-9 seconds
- 1 us = 10^-6 seconds = 1,000 ns
- 1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns
Dans quel but ?
On retrouve souvent ce genre de référence dans les préparation d’entretien tech “à la Google”.
Cependant, il est intéressant d’avoir ces échelles de grandeur en tête.
Quelques exemples :\
- estimer le temps nécessaire au transfert d’une vidéo
- décider si passer sur une système distribué est pertinent