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) !

Valable en 2010
ObjetLatenceDébit
Internet80 ms2 Mo/s
Accès au swap8 ms50 Mo/s
Disque10krpm3 ms50 Mo/s
Ethernet gigabit1 ms100 Mo/s
Disque SSD0.5 ms100 Mo/s
fork0.1 ms
context switch3 µs
gettimeofday1 µs
Interface pci0.1 µs133 Mo/s
malloc/mmap0.1 µs
RAM30 ns8 Go/s
Interface pci-express 16x10 ns8 Go/s
Cache L25 ns
Cache L11 ns
Registre processeur0.3 ns40 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.