Niveau :
Résumé : quelques ordre de grandeur
Voici quelques ordre de grandeur qui vous permettront d'avoir les idées un peu plus claires sur les performances de votre système. Imaginez que le swap est 100 000 fois plus lent que la mémoire du processus ! Qu'un algorithme de création d'arbre peut être plus lent qu'un algorithme linéaire si chaque nœud de l'arbre se retrouve sur une page différente (pensez à vos centaines de malloc pour remplir un arbre) !
Objet | Latence | Débit |
---|---|---|
Internet | 80 ms | 2 Mo/s |
Accès au swap | 8 ms | 50 Mo/s |
Disque10krpm | 3 ms | 50 Mo/s |
Ethernet gigabit | 1 ms | 100 Mo/s |
Disque SSD | 0.5 ms | 100 Mo/s |
fork | 0.1 ms | |
context switch | 3 µs | |
gettimeofday | 1 µs | |
Interface pci | 0.1 µs | 133 Mo/s |
malloc/mmap | 0.1 µs | |
RAM | 30 ns | 8 Go/s |
Interface pci-express 16x | 10 ns | 8 Go/s |
Cache L2 | 5 ns | |
Cache L1 | 1 ns | |
Registre processeur | 0.3 ns | 40 Go/s |
Notez que l'important ce sont les ordres de grandeur, vous pouvez facilement trouver des éléments qui font le double ou la moitié de ces performances.
Interprétations
Sérieusement, pas besoin de giga de swap sur votre serveur. Mettez un tout petit peu et vous monitorez dès que ca dépasse, imaginez la division par un nombre à 5 chiffres du nombre de pages vues sur votre serveur ! Pour ma part je préfère répondre à moins de requêtes par seconde et garder un serveur utilisable.
Mais sur votre station de travail vous faites ce que vous voulez, on est en général plus patient :-)
Pas de gettime à gogo dans votre code pour mesurer les perf, ça tue les perfs ...
Le réseau fait a peu près aussi bien que votre disque.
Pas de malloc à gogo pour des structures morcelées et très utilisées. faites une structure unique si vous devez en avoir beaucoup.
Le SSD c'est bien mais ca vaut pas l'accès direct au flash.
Étant donné la vitesse de compression un swap compressé peut vraiment valoir le coup.
Le cache processeur sert vraiment à quelque chose ... si on sait coder pour qu'il soit utilisé (ou laisser le compilateur faire).
Le fork c'est un peu lent, prévoyez un prefork correct sur vos applications fréquemment appelées.
Avoir beaucoup de processus n'est pas si coûteux en soi (context switch).
PS : Si vous avez des données pour compléter ce tableau, n'hésitez pas à me laisser des commentaires.
Comments