COMMISSARIAT A L'ENERGIE ATOMIQUE CENTRE D'ETUDES DE LIMEIL-VALENTON Département de MATHEMATIQUES APPLIQUEES BP 27 94195 VILLENEUVE-ST-GEORGES CEDEX

NOTE CEA-N- .2.6;1 3

QUELQUES ELEMENTS D'EVALUATION DU SUN386I

Jacques DAVID François ROBIN

Le 20 Juin 1989 2.

Résumé

Le Sun386i est une station Sun construite autour d'un processeur 80386 qui a la particularité de permettre de faire tourner plusieurs MS/DOS dans des fenêtres gérées par SunView. Ce document présente brièvement cette machine, son utilisation et les possibilités de commu­ nications entre MS/DOS et UNIX. Il compare ensuite les performances du Sun386i en mode MS/DOS et en mode UNIX avec celle d'un Compaq 386/20 fonctionnant sous MS/DOS dans les domaines suivants : affichage, calcul, entrées/sorties.

Abstract

The Sun386i is a Sun based on an Intel 80386 processor. One of the most noticeable point of this machine is the possibility of opening several MS/DOS windows in its SunView environnement. This paper briefly describes this workstation, its utilization and shows how MS/DOS and UNIX communicate with each other. This paper also compares the performances (display, computing and I/0 speed) of the Sun386i operating under MS/DOS and under UNIX with those of a Compaq 386/20 personnal computer under MS/DOS. 3,

Préambule

Ce document présente le compte-rendu d'une journée de tests effectués chez SUN le 4 Janvier 1989. La publication de ce document a été retar­ dée à la demande de Sun France qui espérait pouvoir mettre à notre disposition, dans des délais raisonnables, une carte permettant d'accé­ lérer l'affichage des fenêtres DOS. Après plusieurs mois d'attente nous avons finalement décidé de publier en l'état ce rapport afin de fournir rapidement des éléments d'évaluation aux personnes intéressées sachant que les performances en affichage des fenêtres DOS pourront être amé­ liorées avec la disponibilité de cette carte.

A- Introduction

Le Sun386i est une station Sun construite autour d'un processeur Intel 80386 (1) qui a la particularité de permettre de faire tourner plusieurs MS-DOS dans des fenêtres gérées par SunView. Cette machine ayant été largement décrite dans la presse depuis sa sortie, nous ne rappellerons ci-dessous que les éléments techniques les plus importants (2) .

Cette machine fonctionne en utilisant les possiblités d'émulation 8086 du 80386 et la gestion mémoire associée : chaque MS/DOS qui s'exécute possède un PC 8086/8087 virtuel avec 1 Mo de mémoire vive plus 2 Mo de mémoire étendue. Le système UNIX utilise quant à lui le mode protégé du 80386, chaque fenêtre MS/DOS étant vue comme un process UNIX.

La gamme possède 2 modèles principaux (150 et 250) qui diffèrent par leur fréquence d'horloge respectivement 20 et 25 Mhz. Une gamme de disques, d'écrans et d'autres périphériques complète l'offre. Ces machi­ nes intègrent un coupleur permettant, par exemple, une conne­ xion à d'autres machines Sun (NFS .. ).

La machine mise à notre disposition par Sun pour la journée de test est un modèle haut de gamme avec la configuration suivante :

Sun386i/250 80386 avec 80387 à 25 Mhz 8 Mo de mémoire Ecran couleur 19", résolution 1152 * 900 Disquette 3"1/2 1.44 Mo Disque 327 Mo SunOS 4.0, MS/DOS 3.3

(1) Les SUN3 sont construits autour de processeurs Motorola 68020, les SUN4 autour de processeurs SPARC. (2) On peut lire par exemple deux articles de la revue Byte : "Sun's New Workstation: the Sun386i" byTom Thompson, July 1988 "The Sun386i" by John Unger, Byte December 1988 4,

B- Utilisation pratique

L'utilisation de la machine est simple : elle se fait à partir de Sun­ View en utilisant la souris comme sur un autre Sun (la présentation de l'interface utilisateur étant légèrement différente car plus proche d'OPEN LOOK) .

Sous UNIX, la machine est un 'vrai' Sun avec tous les produits habi- tuels ( 1) •

L'émulation MS/DOS est très simple à mettre en oeuvre : il suffit de cliquer sur le menu principal de la machine pour obtenir une nouvelle fenêtre dans laquelle démarre immédiatement un DOS 3.3 (2).

Le système de fichiers est commun à DOS et à UNIX : un fichier de con­ figuration permet de faire correspondre à une unité logique DOS (h: par exemple) un sous-arbre du système de fichiers UNIX. Les unités a: et c: sont traitées de façon un peu spéciale, une seule fenêtre DOS pouvant y accéder en écriture. Les autres unités sont partageables.

Les périphériques DOS (LPTx:, ... ) sont redirigés vers UNIX pour être traités par des commandes UNIX (on peut par exemple rediriger LPT1: vers lpr). Les disquettes MS/DOS de 1.44 Mo peuvent être lues et écrites sans difficultés.

La fenêtre DOS peut émuler un écran CGA, Hercules ou texte. Nous avons utilisé le mode CGA pour tous les essais. La compatibilité dans ce mode est bonne : un programme écrit pour accéder directement aux adresses mémoire de l'adaptateur graphique CGA sur un PC fonctionne sans problème sur la machine (hormis comme on le verra plus loin la lenteur de l'affi­ chage) . La fenêtre DOS ouverte peut être déplacée ou temporairement fermée; sa taille ne peut par contre pas être modifiée (ce qui est très désagréable car la fenêtre ouverte est très petite) .

Le clavier ne permet pas de saisir de caractères accentués français ce qui est particulièrement gênant pour une utilisation de la machine sous DOS (l'affichage de tous les caractères PC se passe par contre sans problèmes dans une fenêtre DOS).

(1) Les tests de performance sous UNIX ont été faits avec le compilateur C (cc), en utilisant les options -sun386i -03. (2) Les tests de performance sous DOS ont été faits avec le compilateur Turbo C version 1.5. 5. C- Communications MS/DOS <-> UNIX

Les possibilités de communication entre les deux systèmes sont nombreu­ ses. On peut utiliser o Le couper/coller entre fenêtres DOS et UNIX. o Les périphériques standard (LPTx:, COMx:, ... ) peuvent être redirigés vers des périphériques UNIX. o Le système de fichiers étant partagé, MS/DOS et UNIX peuvent accéder aux mêmes fichiers moyennant les conversions nécessaires pour les fichiers texte (CR-LF, ... ) pour lesquelles il existe deux utili­ taires (DOS2UNIX et UNIX2DOS) accessibles autant depuis MS/DOS que depuis UNIX. o On peut utiliser le mécanisme de pipe nommé (après avoir créé un tel pipe sous UNIX par la commande /usr/etc/mknod my pipe p) . Ce mécanisme dont on présente un exemple ci-dessous est simple à mettre en oeuvre et paraît très puissant.

UNIX MS/DOS cat

dir >my_pipe affichage du dir DOS

UNIX MS/DOS

more

ls 1 unix2dos > my_pipe

affichage du ls UNIX 6. o On peut utiliser par programme le mécanisme RPC/XDR pour mettre en place des échanges plus compliqués (nous n'avons pas eu le temps d'approfondir ce point).

D- Performances

D.l- Tests globaux

Il s'agissait de mesurer les performances globales de la configuration sur . des programmes de formatage de texte (représentatifs d'une utilisa­ tion bureautique de la machine), . un programme qui calcule et affiche une vue 200 * 200 de l'espace de Mandelbrot.

On trouvera les résultats ci-dessous. Les mauvais résultats du Sun386i sur les programmes de formattage de texte sont dus à la lenteur de l'affichage dans un écran DOS de la machine et non pas à la lenteur du processeur ou du disque (on le verra plus loin dans les tests détail­ lés). Dans le cas de l'espace de Mandelbrot, les résultats sont bons car ce programme effectue de nombreux calculs flottants pour un point affiché à l'écran.

Sun386i/250 Compaq 386/20 fenêtre DOS avec 80387 Formateur de texte (XEDIT) 105 s 23 s

Formateur de texte (XFLIP) 289 s 33 s

Calcul et affichage Mandel 430 s 370 s 7.

0.2- Test d'affichage

Ce test précis permet de juger de la vitesse de l'affichage de la ma­ chine.

On mesure bien (1) les problèmes d'affichage dans la fenêtre MS/DOS en comparant les résultats du Sun sous DOS et sous Shell Tools (les mauvais résultats en mode commande s'expliquent peut-être par la sauvegarde des pages affichées, il ne s'agit pas de résultats comparables).

Affichage de 2000 fois

"Hello World\n" "Hello World\r"

Zenith 148 8Mhz (CGA) 86 s 48 s

Compaq 386/20 (VGA) 13 s 6 s

Sun386i DOS (CGA) 48 s 42 s

Unix commande 160 s 93 s

Unix Shell Tools 11 s Pas de résultat (Abort)

(1) En utilisation pratique, cette lenteur se manifeste par des phé­ nomènes désagréables. Par exemple, quand on déplace rapidement le curseur sous un éditeur de texte, l'affichage à l'écran ne suit pas si bien que le curseur disparaît assez souvent 8.

0.3- Tests processeur

Ce test permet de juger en détail de la vitesse des calculs (en parti­ culier des calculs flottants) à partir d'un programme en C. Il se com­ pose en particulier : . de boucles permettant de mesurer les performances scalaires de la machine sur des opérations élémentaires, . de boucles permettant de mesurer les performances vectorielles de la machine sur des opérations classiques (saxpy, sdot et ssum), . d'un programme de gradient conjugué utilisant plusieurs précondition­ nements différents, . de programmes classiques (Fibonnaci, décomposition d'un entier en facteurs premiers, crible d'Eratosthène).

Nous n'avons pas utilisé les programmes FORTRAN utilisés habituellement pour tester les machines en raison du manque d'un bon compilateur FOR­ TRAN sous MS/DOS. Quelques points de comparaison existent néanmoins avec les autres rapports d'évaluation du Département : les opérations vectorielles sont issues du bench K et le programme de gradient con­ jugué est la retranscription en C d'un extrait du bench V (La descrip­ tion du benchmark CEA FORTRAN se trouve dans la note CEA N-3544, décem­ bre 1987 : Expérimentation du CRAY-XMP).

Sun386i/250 Sun386i/250 Compaq 386/20 fenêtre DOS fenêtre UNIX avec 80387

+ (long) kips 988 2817 877 - (long) kips 992 2826 859 * (long) kips 700 1372 631 1 (long) kips 469 500 425 + (double) kflops 260 400 252 - (double) kflops 260 436 254

* (double) kflops 246 .~ 356 245 1 (double) kflops 138 174 142 Saxpy ind 100 (d) kflops 138 188 120

Saxpy ptr 100 (d) kflops 137 194 120

Sdot ind 100 (d) kflops 170 188 139

Ssum ptr 100 (d) kflops 111 137 95

Légende kips : kilo instructions par seconde kflops : kilo opérations flottantes par seconde d : double

------Sun386i/250 Sun386i/250 Compaq 386/20 fenêtre DOS fenêtre UNIX avec 80387

CG-INVV 400 (d) kflops 178 191 193

CG-IC 400 (d) kflops 202 232 217

CG-DKR 400 (d) kflops 197 229 219

CG-DIAG 400 (d) kflops 155 170 160

Fibonnaci 32 (d) sec 38 25 43

Prime factors (d) sec 27 2 30

Si eve (d) sec 40 16 46

Légende sec : seconde kflops : kilo opérations flottantes par seconde d : double

Commentaires : o La comparaison des performances Compaq 1 Sun386i sous DOS donne des résultats en général situés entre 1 et le rapport des horloges (1.25). o Le compilateur C sous UNIX optimise mieux le programme que Turbo-C sous MS/DOS (les optimisations sont, à priori, significatives car le programme de test est conçu pour ne pas permettre la suppression de code) . JO.

0.4- Tests entrées-sorties

Ce test permet de juger en détail de la vitesse des entrées-sorties à partir d'un programme en C. On trouvera en annexe le code des noyaux utilisés.

Sun386i/250 Sun386i/250 Compaq 386/20 fenêtre DOS fenêtre UNIX avec 80387

Open/close kops 7 32 13

Fichier de 100 Ko Sequentiel Write formaté kbps 18 154 26 Re ad formaté kbps 47 100 27 Write non formaté kbps 24 924 28 Re ad non formaté kbps 12 231 89 Acces direct Re ad kpps 132 770 33 Write kpps 149 2155 42

Fichier de 800 Ko Sequentiel Write formaté kbps 17 145 27 Re ad formaté kbps 46 84 27 Write non formaté kbps 24 750 28 Re ad non formaté kbps 73 1201 28 Acces direct Re ad kpps 126 666 26 Write kpps 147 1992 27

Fichier de 1600 Ko Sequentiel Write formaté kbps 16 144 27 Re ad formaté kbps 47 85 27 Write non formaté kbps 24 762 25 Re ad non formaté kbps 70 1117 26 Acces direct Re ad kpps 130 638 25 Write kpps 152 2000 26

Fichier de 12800 Ko Sequentiel Write formaté kbps 97 Re ad formaté kbps 89 Write non formaté kbps 301 Re ad non formaté kbps 173 Acces direct Re ad kpps 26 Write kpps 51

Légende kops kilo opérations par seconde kbps kilo bytes par seconde kpps kilo positionnements par seconde II.

On peut noter que : o la gestion des buffers d'entrées-sorties est bien meilleure sous UNIX. Les performances sont très élevées et ne se dégradent que pour des fichiers de plus de 6 Mo (très bonne gestion de la mémoire disponi­ ble) . o L'écart des performances entre Compaq et Sun sous DOS s'explique par les performances du disque et par le fait qu'UNIX bufferise les en­ trées-sorties effectuées par DOS.

E- Conclusions

Cette machine nous parait une bonne réalisation autour d'une idée in­ téressante.

Néanmoins, dans l'état actuel, l'émulation MS/DOS ne nous semble pas utilisable pour une utilisation réelle (surtout de type bureautique) à cause de : . la lenteur de l'affichage, . le support uniquement du mode CGA (et du mode Hercules), . la petite taille des fenêtres MS/DOS . . l'absence de clavier comportant les caractères accentués,

Les deux premiers problèmes (et probablement le troisième) devraient être résolus par une carte permettant un affichage rapide de 1 à 4 fenêtres VGA/EGA sur l'écran. Pour ce qui est du clavier, un clavier internationnal est prévu. Les dates de disponibilité de ces éléments ne nous sont pas connues.

Dans ces conditions, le Sun386i pourrait à notre avis constituer une alternative intéressante pour les personnes qui utilisent à la fois des machines UNIX et des produits MS/DOS : quelques tests supplémen­ taires chez Sun permettront de juger rapidement de l'amélioration de l'utilisation de la machine sous DOS. 12.

Quelques prix publics (1)

Sun386i/250 (configuration testée) 200 kF

Sun386i/150 Ecran Couleur 15" avec disque 91 Mo 100 kF avec disque 327 Mo 135 kF

Streamer 18 kF Logiciel (SunOS, ... ) 5 kF Compilateur Fortran 10 kF

Remerciements

Nous tenons à remercier Sun France et plus spécialement M. SIMON (Ingé­ nieur Commercial) et M. RENESME (Ingénieur avant-vente) pour la mise à disposition de la machine testée et l'assistance apportée.

(1) Un Compaq 386/25 avec un coprocesseur 80387, 4 Mo de mémoire, un disque 300 Mo et un écran couleur VGA coute environ 90 kF J3.

Annexe

Code C des test entrées/sorties

Open 1 Close

for (i=O;i

Write forroatté

for (i=O;i

Read forroatté

for (i=O;i

Write non forroatté

for (i=O;i

Read non forroatté

for (i=O;i

------~---~ -~----- ~--~------14. Accès direct read

for (i=O;i

Accès direct write

for (i=O;i

Avec les déclaration suivantes

int i , j , ii, jj ; long sl1 ; static char ts[41] = "123456789012345678901234567890" ; char ts1[41] ; char chr1[101] ; FILE *f_tmp ;