Louis Lon et Patrick Rougeau INSU (Meudon) et ENSTA (Paris) Windows NT et Linux sur la machine Pentium Pro Voil donc enfin, cte cte, les deux systmes d'exploitation de prdilection des machines base de Pentium Pro : Windows NT et Linux. Que vaut l'un par rapport l'autre ? ?C'est au niveau des performances que nous allons tcher de rpondre cette question qui actuellement, et compte tenu des succs remports la fois par cette machine, et par ces deux systmes d'exploitation, proccupe bon nombre d'informaticiens et plus gnralement d'usagers de l'informatique. Conditions des essais Les essais que nous allons prsenter ont t raliss sur une mme machine Pentium PRO/200MHz, en y installant conscutivement Windows NT et Linux. C'est Patrick Rougeau qui a assur les deux installations ainsi que la conduite des tests qui ont suivi chacune d'entre elles. La machine teste Les deux systmes d'exploitation ont donc fonctionn sur une mme machine Pentium Pro 200. Il s'agit d'une machine KPC (Kit PC) construite par la socit NewStep. Le processeur est un Pentium Pro cadenc 200 MHz, avec 256 Ko de cache. La carte mre est une ASUSTEK avec 512 Ko de cache. La mmoire RAM de 128 Mo est de type EDO. Le disque est de type IDE d'une capacit de 850 Mo. Le systme d'exploitation Windows NT C'est la version 4.0 de Microsoft de type Work Station. Le compilateur C est visual C++ (on l'appelle sous la forme : ``cl'') propre cette version 4.0 de NT. Le compilateur Fortran est le Professionnal Edition 4.0 de Microsoft Power Station (on l'appelle sous la forme : ``fl32''). Les options d'optimisation choisies en gnral pour ces deux compilateurs sont : /g5 pour l'optimisation selon l'architecture Pentium, /Ox pour l'optimisation en vitesse. Aprs divers essais, il nous est apparu que dans la plupart des cas (voir aprs), c'est ce couple d'options qui conduit une meilleure optimisation des temps d'excution des programmes. Les temps rels d'excution ont t calculs par diffrences, partir de la commande ``time'' de Windows NT qui donne un temps d'horloge rel absolu. C'est un script que nous avons conu spcialement pour cette opration qui assure automatiquement ce calcul. Pour faire excuter des programmes en parallle (test de tenue en charge), nous avons slectionn les icones des programmes excutables concerns, et avons lanc le tout, en actionnant la case ``Fichier ouvrir'' du menu. Le systme d'exploitation Linux Il correspond la distribution Red Hat 4.1, soit la version du noyau de Linux 2.0.27. Les compilateurs C et Fortran de Gnu qui ont t utiliss sont respectivement gcc et g77 de la version 2.7.2.1-5. Notons que ces compilateurs ne sont pas ceux inclus naturellement dans la Red Hat 4.1, mais qu'ils ont t introduits indpendamment et a posteriori dans le systme. Les essais avec Linux se sont drouls selon notre technique habituelle. Les options de compilation sont celles que nous utilisons habituellement. Le couple d'option gnralement le plus favorable, que ce soit pour gcc ou f77 tant -funroll-all-loops -O2. Le temps d'excution prlev correspond au temps rel issu de la commande ``time''. Les programmes traits en parallle (test de tenue en charge) sont tous lancs simultanment en arrire plan, comme l'accoutum. Dans les tableaux qui suivent, les rsultats d'essais sont classs selon l'ordre croissant du temps rel d'excution des programmes, exprim en secondes. Dans chaque tableau, l'essai le plus performant apparat donc en tte. Comparaisons Windows NT - Linux Puissance du processeur Puissance intrinsque du processeur Programme m-permut.c KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 47 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 52 Calculs en entier Usage d'un compilateur FORTRAN Programme m-comb.f KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 89 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 102 Usage d'un compilateur C Programme m-comb.c KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 94 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 109 Calculs en virgule flottante Usage d'un compilateur FORTRAN Programme m-deriv.f KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 94 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 101 Usage d'un compilateur C Programme m-deriv.c KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 95 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 100 Accs aux bytes (traitement des chanes de caractres) Programme m-carac.c KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 59 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 128 Calculs matriciels Usage d'un compilateur FORTRAN Programme m-matr.f KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 111 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 133 Usage d'un compilateur C Programme m-matr.c KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 53 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 58 Appels de fonction de la bibliothque standard du C (mthode de Monte-Carlo) Programme m-moncar.c KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 74 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 111 Traitement de grands tableaux en mmoire RAM Accs squentiel au tableau En FORTRAN : on traite le tableau colonne par colonne, ce qui, pour ce langage, correspondant l'ordre de rangement des lments du tableau en mmoire. Usage d'un compilateur FORTRAN Programme m-nmemvir1.f KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 219 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 220 En C : on traite le tableau ligne par ligne, ce qui, pour ce langage, correspond aussi l'ordre de rangement des lments du tableau en mmoire. Usage d'un compilateur C Programme m-nmemvir1.c KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 90 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 92 Dans le programme suivant, on traite le tableau ligne par ligne, ce qui, pour le langage FORTRAN, ne correspond pas l'ordre de rangement des lments du tableau en mmoire. Programme m-vir.f KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 59 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 107 Accs alatoire au tableau Programme m-vir4.c KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 53 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 77 Les entres/sorties sur disque En accs alatoire Usage d'un compilateur FORTRAN Accs direct dans un fichier disque de 1 200 x 1 200 entiers, avec 1 440 000 d'oprations d'criture suivies par 1 200 oprations de lecture/criture. Programme m-stadis1.f KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 23 KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 29 Usage d'un compilateur C Accs alatoire dans un fichier de 64 Mo avec 100 000 oprations d'criture/lecture. Soulignons que chaque criture est immdiatement suivie d'une lecture. Programme m-nnstadis.c KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 39 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 1695 ?En accs squentiel Programme m-debi.c KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 76 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 99 La tenue en charge La mesure de la tenue en charge a consist pour nous lancer l'excution simultane de quinze des seize programmes prcdents (tous les programmes sauf ``m-carac.c''), dj tests individuellement, et noter le temps ncessaire l'excution de cet ensemble, c'est--dire le temps sparant la lance simultane de tous les programmes, de la fin de l'excution du dernier termin. Tenue en charge KPC PENTIUM-PRO-200MHz-128 Mo - Linux 2.0.27 1866 KPC PENTIUM-PRO-200MHz-128 Mo - Windows-NT 4.0 2806 Analogies avec les machines de DEC : WINDOWS NT et DIGITAL UNIX Il est intressant d'examiner prsent, sur une station de DEC, ici la DEC 2100-5/250, une comparaison de Windows NT et de Digital Unix qui est le systme Unix de DEC. Les versions des systmes d'exploitations et des compilateurs utiliss sont : Windows NT 3.51 Visual C++ (Microsoft) F77 VI.1 (DEC) Digital Unix 3.7 C standard F77 pour la 3.7 Puissance du processeur Programme m-permut.c DEC 2100-5/250 - Digital-Unix 32 DEC 2100-5/250 - Windows-NT 32 Calculs en entier Programme m-comb.f DEC 2100-5/250 - Windows-NT 50 DEC 2100-5/250 - Digital-Unix 53 ?Calculs en flottant Programme m-deriv.f DEC 2100-5/250 - Windows-NT 96 DEC 2100-5/250 - Digital-Unix 101 Les entres/sorties Programme m-nnstadis.c DEC 2100-5/250 - Digital-Unix 24 DEC 2100-5/250 - Windows-NT 273 La tenue en charge DEC 2100-5/250 - Digital-Unix - 1 proc 1168 DEC 2100-5/250 - Windows-NT - 1 proc 1344 Importance des options de compilation avec NT Afin de montrer l'importance des options de compilation avec Windows NT, nous prsentons ici les rsultats obtenus avec et sans options de compilation. Rappelons qu'avec options de compilation, on a appel les compilateurs avec les deux options suivantes qui nous sont apparues comme tant gnralement les plus favorables. cl /g5 /Ox prog.c fl32 /g5 /Ox prog.f Puissance du processeur Puissance intrinsque du processeur Programme m-permut.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 47 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 102 Calculs en entier Programme m-comb.f KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 102 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 182 Programme m-comb.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 109 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 208 ?Calculs en virgule flottante Programme m-deriv.f KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 94 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 196 Programme m-deriv.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 95 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 146 Accs aux bytes (traitement des chanes de caractres) Programme m-carac.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 128 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 307 Calculs matriciels Programme m-matr.f KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 133 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 173 Programme m-matr.c KPC PENTIUM-PRO- 200MHz - NT 4.0 avec options 53 KPC PENTIUM-PRO- 200MHz - NT 4.0 sans option 344 Appels de fonction de la bibliothque standard du C Programme m-moncar.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 74 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 111 Traitement de grands tableaux en mmoire RAM Accs squentiel au tableau Programme m-nmemvir1.f KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 220 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 227 Programme m-nmemvir1.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 90 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 102 ?Programme m-vir.f KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 107 KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 108 Accs alatoire au tableau Programme m-vir4.c KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 53 KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 70 Les entres/sorties sur disque En accs alatoire Programme m-stadis1.f KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 23 KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 26 Programme m-nnstadis.c KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 1695 KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 1705 En accs squentiel Programme m-debi.c KPC PENTIUM-PRO-200MHz - NT 4.0 sans option 99 KPC PENTIUM-PRO-200MHz - NT 4.0 avec options 103 Au del des fluctuations que l'on constate dans le cas gnral entre les diffrents rsultats obtenus respectivement avec Windows NT et Linux, le point essentiel qui distingue ces deux systmes d'exploitation fonctionnant sur Pentium Pro est sans aucun doute la gestion du cache dynamique en mmoire RAM mise en vidence avec le programme ``m-nnstadis.c''. Comme nous l'avions dj signal par ailleurs, la gestion du cache dynamique par Linux est excellente, bien que sa bonne ralisation soit exigeante en mmoire RAM. En effet, ainsi que nous l'avions montr antrieurement, si Linux mmorise parfaitement les fichiers d'entres/sorties en mmoire et en assume correctement le contrle, il entrane par contre la cration, toujours en mmoire RAM, de buffers supplmentaires fort encombrants, et tels que si la capacit de la mmoire est insuffisante pour contenir ces buffers, on assiste en ce cas une forte dgradation des performances due au swap des fichiers qui ne sont plus alors que partiellement mmoriss. Le problme concernant la gestion du cache dynamique par Windows NT est tout autre. Si les buffers de Windows NT sont effectivement grs dynamiquement, comme le dclare Microsoft, ils ne peuvent toutefois empcher les lectures/critures sur disque pendant l'excution du programme, ce qui entrane les dgradations que l'on a observes. Et malheureusement, il n'y aurait aucun moyen d'ajustement possible, contrairement ce qui se fait par exemple avec le systme Digital Unix qui peut, condition d'initialiser en consquence un paramtre du noyau, forcer les lectures/critures se faire en mmoire RAM. Avec Windows NT, et selon la documentation de Microsoft (Guide des ressources techniques - Windows NT Workstation 4.0), on ne pourrait pas faire grand chose pour remdier cet tat de choses. Toujours par cette mme documentation, et avec la version serveur de NT 4 exclusivement, on a seulement la possibilit d'agir sur certaines priorits : le gestionnaire de mmoire virtuelle pouvant attribuer une plus forte priorit l'espace du cache, priorit par rapport celle des processus. Mais, selon nous, ce n'est pas cette priorit qui rsoudrait ce problme inhrent Windows NT qui est, dans le cas par exemple de notre programme test, celui de la non mmorisation des oprations de lectures/critures sur disque. Pour la version Workstation de NT 4, et d'aprs cette mme documentation, les mcanismes d'optimisation seraient fixs et ne tolreraient donc aucune modification. Seuls conseils donns par Microsoft, conseils qui de toutes faons sont, notre avis, hors du sujet qui nous proccupe prsentement, et que nous citons seulement pour mmoire : regrouper les rfrences aux donnes dans son application, ce qui reviendrait rpartir astucieusement ses donnes dans des tableaux, et donc recomposer son programme, ou bien rpandre le travail sur plusieurs stations et ajouter de la mmoire, ce qui reviendrait alors recomposer son installation. Il est remarquable de constater que l'on retrouve avec les machines du constructeur DEC cette mme lacune quant la gestion du cache dynamique par Windows NT. C'est dessein que nous avons rappel dans cet article les rsultats que nous avions obtenus prcdemment, sur une machine de DEC, en faisant intervenir le systme Digital Unix en comparaison avec Windows NT. Sur cette machine DEC, on constate globalement les mmes tendances principales que sur une machine Pentium. Cependant, avec la machine DEC, l'effet des entres/sorties sur disque, avec le programme test ``m-nnstadis.c'', et par contre coup de la tenue en charge, est moins catastrophique, parce qu'on disposait sur cette machine de disques rapides, alors que la machine Pentium ayant servi aux tests de comparaisons prsents ne disposait que de disques de type IDE aux performances modestes. Ce qui n'a pas arrang les choses pour cette dernire machine. En conclusion, ce qu'il est curieux de constater, c'est que Windows NT est plus performant pour ce qui concerne les applications monopolisant la puissance du CPU, en particulier pour le calcul flottant, et l'on pense videmment aux applications de calcul scientifique. Par contre, pour ce qui est de la gestion de gros fichiers en langage C, ou encore du traitement des caractres (applications caractre habituellement non scientifique), les rsultats obtenus sont moins satisfaisants. On pourrait d'ailleurs faire exactement les mmes remarques avec les machines de DEC, en mettant en opposition Windows NT et cette fois le systme d'exploitation Digital Unix, avec leurs compilateurs respectifs. En dfinitive, et compte tenu de toutes les informations recueillies l'occasion de ces essais, on peut considrer que, dans le cadre de leurs versions respectives actuelles, savoir Linux 2.0.27 et Windows NT 4.0, les performances des applications traites par un Pentium Pro sont globalement meilleures sous Linux que sous Windows NT. Ajoutons aussi, en nous cantonnant strictement l'aspect performance des essais, et au risque d'en surprendre plus d'un, que Windows NT se distingue surtout pour les applications de calcul numrique, tandis que Linux se rvle plus efficace pour ce qui concerne les applications caractre non calcul scientifique, comme par exemple la gestion de bases de donnes. Rfrences au LMB Dcembre 1995 - Numro 61 Windows NT chez DEC Les rcapitulatifs de la totalit des essais effectus sont disponibles sur : http://www.dsi.cnrs.fr/~lmb/ServeurLeon/HomePage.html