Impact de la virtualisation sur les performances brutes

Sur les serveurs dédiés sous ma responsabilité, il m’arrive d’y installer un client BOINC. C’est un logiciel qui rapatrie, pour divers projets scientifiques, du travail à effectuer par la machine, laquelle fait alors partie d’une grille de calcul. Bien entendu, BOINC ne travaille que lorsque le serveur ne fait rien, ou plutôt utilise les cœurs non utilisés des CPUs des serveurs. Il n’est pas question que les services en production souffrent de la présence de BOINC. Sous ces conditions, pourquoi pas, ça permet d’utiliser les ressources non utilisées pour une bonne cause, on évite le gâchis.
Ce programme m’a permis de comparer la puissance de calcul brute de plusieurs configuration, sachant que tous les clients BOINC sont configurés pour travailler sur le même projet. En particulier, il y avait deux machines identiques en RAM (non saturées) et en CPU, un Core i5.

L’une de ces machines était sous VMware ESXi avec une seule VM sous Windows Server 2003, l’autre était directement sous Windows Server 2008 R2.
La configuration CPU/RAM identique m’a permis de comparer quantitativement la perte de performance induite par la couche ESXi simplement en regardant le score de BOINC par client.
J’avais entendu parler au cours d’une conférence d’évangélisation que la perte induite par des outils de virtualisation comme VMware Workstation ou Hyper-V R1 était de 15%, tandis que celle de ESXi était seulement de 5%, grâce à son noyau super léger, mais qu’en est-il réellement ?
Pour ce qui est de Workstation, j’en ai aucune idée, je m’en sers que pour le développement donc pas en continue. En revanche on voit une différence de… 15% de entre l’utilisation ou non de VMware ESXi. Wow ! ce n’est pas rien !

On m’aurait menti ? J’ai attendu plusieurs jours pour que le score quotidien des clients BOINC se stabilise et on note toujours cette nette différence de 15%, quelque soit le travail effectué (mais toujours sur le même projet). Il est à noter également que concernant ces deux serveurs, ils ne faisaient quasiment que de l’idle, donc normalement pas perturbés par d’autres processus. C’est un test approximatif et il vaut ce qu’il vaut, mais a l’avantage de donner une assez bonne précision de ce qu’on perd en CPU brut avec cette couche de virtualisation.

Pour autant, la virtualisation n’est pas à jeter, ça dépend de l’utilisation de la machine. Pour mon cas où le CPU est loin d’être le goulet d’étranglement sur ces machines, surtout un Core i5, cette perte est significative, mais acceptable.

GPU vs CPU

Ça fait un petit moment que je participe au programme BOINC. Pour résumer, ce programme permet de partager les ressources inutilisées de son PC pour divers projets scientifiques. Les scientifiques sont pauvres, c’est bien connu en France, et moi je n’éteins pas souvent mes PC (surtout les serveurs), alors autant qu’ils profitent de mes CPUs pour leurs besoins (pis c’est pas moi qui paye la facture EDF alors :-D).

Récemment, j’ai pu mettre BOINC sur un poste bénéficiant de CUDA, la technologie de GPGPU de nVidia. Ben ya pas à dire, les GPU sont clairement sous-utilisés en dehors des jeux !

Voici une capture d’écran montrant une note qualifiant la rapidité de calcul sur deux projets :

  • GPUGRID est un projet utilisant mon GPU, un nVidia 9800GT
  • Milkyway@home est un projet utilisant les deux cœurs de mon CPU, un Core 2 Duo E7300

boinc cpu vs gpu
Le GPU est plus que 10x plus rapide que les CPUs ! Reste plus qu’à ce que OpenCL se démocratise davantage, pour que tous puissent utiliser simplement la puissance GPU sans dépendre du matériel.