Catégorie : Bonnes Pratiques

éco-conception logicielle : 32 ou 64 bits pour vos process?

Mon métier est Administrateur système. Dernièrement, je me suis rendu compte que la machine virtuelle qui s’occupe de faire l’intégration continue de notre application (un jenkins) consommait de plus en plus de mémoire vive. J’ai alerté mes collègues développeurs pour qu’ils fassent attention lorsque l’un d’eux ma affirmé que faire tourner une machine virtuelle java (JVM) en 64 bits pour une tâche qui consomme grosso-modo moins que 2 Go est une hérésie.

Après la lecture de sa source, j’essaye. Je remplace donc la version 64 bits de ma JVM pour une version 32 bits. Et là, quelle ne fut pas ma surprise lorsque j’ai constaté un gain de consommation mémoire de l’ordre de 42 % !

En poussant la démarche jusqu’au bout – remplacement de toute la pile logicielle (VM Gentoo 1 coeur + 2Go mémoire vive, jvm, ruby, et mysql) – j’ai obtenu un gain de 38 % sur la consommation de mémoire vive et 12 % sur le processeur. Ce qui n’est pas négligeable ! En revanche le temps total des tests n’a diminué que de 2 % (j’aurais aimé plus!)

32vs64.png
(“rake” et “specs&cukes” sont des processus ruby pour tester notre application web)

Un peu de théorie

Dans le cas de la jvm, le fait d’utiliser une architecture 64 bits va introduire une surconsommation mémoire sur l’adressage des variables. Ceci explique le gain de mémoire. Nous pouvons appliquer le même raisonnement à l’interprêteur ruby et même au processus mysql. En ce qui concerne le gain d’utilisation processeur, il est du au volume moins important de données traitées.

Mais alors, quand faut-il utiliser la version 64 bits ? D’aprés l’article cité plus haut et wikipedia, un OS (32 ou 64 bits) ne peut allouer plus d’un certain montant de mémoire à ses processus (voir tableau ci-dessous – extrait de l’article). Donc, si vous prévoyez de travailler près de cette limite, je vous recommande de passer en 64 bits. Mais je pense que dans la plupart des cas, la version 32 bits sera amplement suffisante.

max_heap_OS.png

Dans tous les cas, lors du design d’une nouvelle application, faites des tests avec des versions 32 bits pour les processus consommant moins de mémoire.

PS : si cela vous intéresse, je mets à libre disposition les scripts qui ont permis de faire ces 4 jolis graphiques !

Pierre Ozoux