FLASH INFORMATIQUE FI



Architecture de Janus




Jacques MENU


Janus est une machine dédiée au calcul parallèle dont l’acquisition s’est faite dans le cadre d’un accord de collaboration entre l’EPFL et Hewlett-Packard, décrit dans http://dit-archives.epfl.ch/FI02/fi-10-2/10-2-page19.html. Rappelons que des collaborations scientifiques sont aussi parties intégrantes de cet accord.

Dans la mythologie romaine, Janus était le dieu des passages, notamment de la transition du présent au futur et du néant à la vie.

Il possédait deux faces comme Janus est formée de deux parties, d’où le nom de la machine :
• la première, soit 64 processeurs sur les 96 de calcul, est réservée aux travaux de recherche en bio-simulation ;
• la deuxième partie, les 32 processeurs restants, est répartie entre différents autres domaines de recherche.

Les utilisateurs appartiennent donc soit à la partie appelée biosim, soit à l’autre baptisée léonard, en hommage à Léonard de Vinci qui été actif dans des domaines variés.

La partie léonard de Janus remplace le Swiss-T1 qui a fonctionné au SIC de janvier 2000 à janvier 2003, dont la maintenance serait devenue trop chère dès mars 2003.

La puissance théorique totale de Janus est en gros 4 fois celle de T1, soit 250 Gigaflops (250 milliards d’opérations en virgule flottante à la seconde). La machine est arrivée fin novembre 2002 et a été ouverte aux utilisateurs dans le courant de février 2003.

Le site Web http://janus.epfl.ch, hébergé sur Janus, fournit des informations comme la configuration, les personnes de contact, les logiciels installés et une FAQ (réponse aux questions fréquentes).

fig. 1 - vue matérielle de Janus 


Architecture macroscopique

Janus est une machine du type AlphaServer SC 45 qui figure au catalogue de HP, alors que T1 était une machine assemblée sur mesure dans le cadre d’un projet CTI (Commission pour la Technologie et l’Innovation).

La machine est composée de 25 boîtes quadriprocesseur ES 45, baptisées janus0 à janus24, reliées par un interconnect rapide de Quadrics. Les noeuds tournent TruCluster, qui est l’Unix propriétaire de HP (ex Digital) en configuration cluster, qu’on détaille plus loin.

Le noeud janus0 joue le rôle de frontale pour les connexions interactives des utilisateurs et le lancement des jobs batch. Le but ici est de dédier les noeuds de calculs janus1 à janus24 à cette tâche, afin de ne pas pénaliser l’exécution des travaux batch par d’autres activités tourant sur les mêmes noeuds.

On voit à la figure 1 une vue utilisateur de la machine. Seule janus0, la frontale, est accessible aux utilisateurs pour des connexions interactives depuis le réseau de l’Ecole, qui se font avec ssh à l’exclusion de tout autre moyen.

La machine d’administration est à disposition du responsable du système et n’intervient pas dans les travaux effectués par les utilisateurs. Le réseau privé Fast Ethernet est lui aussi à usage exclusif de l’administrateur de la machine.

Nous n’avons pas mis en évidence les connexions entre les serveurs de terminaux et les consoles des machines, qui permettent de prendre le contrôle à bas niveau des noeuds de calcul, même lorsqu’ils sont arrêtés au sens Unix.

Les liens Quadrics (appelés rails dans la terminologie de ce constructeur) sont au nombre de 1 par noeud, soit une bande passante de 300 Mbytes/s pour 4 processeurs (il est possible d’en avoir plus si nécessaire). La latence, soit le temps de transmission d’une donnée de longueur nulle, est de l’ordre de 5.5 µs.

Réseaux

janus2 root - / > ifconfig -a
ee0: flags=c63
                                                <up,broadcast,notrailers,running,multicast,simplex>
                                               
    inet 10.128.0.3 netmask ffff0000 broadcast 10.128.255.255 ipmtu 1500

ee1: flags=c63
                                                <up,broadcast,notrailers,running,multicast,simplex>
                                               

eip0: flags=100863
                                                <up,broadcast,notrailers,running,simplex,nochecksum>
                                               
    inet 10.64.0.3 netmask ffff0000 broadcast 10.64.255.255 ipmtu 65352

ics0: flags=1100063
                                                <up,broadcast,notrailers,running,nochecksum,cluif>
                                               
    inet 10.0.0.3 netmask ffffff00 broadcast 10.0.0.255 ipmtu 7000

lo0: flags=100c89
                                                <up,loopback,noarp,multicast,simplex,nochecksum>
                                               
    inet 127.0.0.1 netmask ff000000 ipmtu 4096

sl0: flags=10
                                                <pointopoint>
                                               

tun0: flags=80
                                                <noarp>
                                               

fig. 2 - réseaux sur un noeud de calcul, ici janus2

janus1 root - / &gt; ifconfig -a
alt0: flags=c63
                                                <up,broadcast,notrailers,running,multicast,simplex>
                                               
inet 128.178.50.69 netmask ffffff00 broadcast 128.178.50.255 ipmtu 1500

ee0: flags=c63
                                                <up,broadcast,notrailers,running,multicast,simplex>
                                               
inet 10.128.0.2 netmask ffff0000 broadcast 10.128.255.255 ipmtu 1500

ee1: flags=c63
                                                <up,broadcast,notrailers,running,multicast,simplex>
                                               

eip0: flags=100863
                                                <up,broadcast,notrailers,running,simplex,nochecksum>
                                               
inet 10.64.0.2 netmask ffff0000 broadcast 10.64.255.255 ipmtu 65352

ics0: flags=1100063
                                                <up,broadcast,notrailers,running,nochecksum,cluif>
                                               
inet 10.0.0.2 netmask ffffff00 broadcast 10.0.0.255 ipmtu 7000

lo0: flags=100c89
                                                <up,loopback,noarp,multicast,simplex,nochecksum>
                                               
inet 127.0.0.1 netmask ff000000 ipmtu 4096

sl0: flags=10
                                                <pointopoint>
                                               

tun0: flags=80
                                                <noarp>
                                               

fig. 3 - réseaux sur une frontale, ici janus1

Il y en a plusieurs dans janus, comme le montrent les figures 2 et 3 :
• Quadrics véhicule deux connexions IP optimisées sur les réseaux privés 10.0.0.0 (ics0) et 10.64.0.0 (eip0).
• janus0 et janus1 ont une connexion Gigabit Ethernet sur le réseau public de l’Ecole (alt0) ;
• de plus, tous les noeuds ont une connexion Fast Ethernet sur le réseau privé d’administration 10.128.0.0 ;
• enfin, le réseau des lignes séries aboutissant aux port consoles des noeuds permet de les accéder par le serveur de terminaux. ics désigne le lien intra-cluster, présent sur tous les TruCluster, et eip est un réseau IP véhiculé sur les cartes Elan (Quadrics) propres aux machines de la classe SC ;

En fonctionnement courant, les consoles sont sous le contrôle de SC10cmf (Console Management Facility), qu’on doit arrêter pour y accéder interactivement.

Achitecture matérielle détaillée

La figure 4 montre cette architecture. On y voit la configuration détaillée des noeuds, soit 4 Gbytes de mémoire (1 par processeur à 1.25 Ghz) et 144 Gbytes de disques locaux dont 64 Mbytes pour le système.

fig. 4 - vue utilisateur de Janus 

En plus de janus0, janus1 est configurée pour reprendre le rôle de frontale si janus0 devait tomber. C’est pour cette raison qu’elle est également raccordée au réseau Gigabit de l’Ecole et aux disques RAID.

Il y a en fait 2 systèmes de disques RAID 5 :
• HSG 80 est un système à 1 Gbits/s utilisé pour le système d’exploitation des noeuds, de même type que celui qui équipait le T1 ;
• HSV 110 est une génération plus récente à 2 Gbits/s, basée sur des disques virtuels qui seront présentés plus loin.

Les deux switches fibre optique permettent d’accéder également au petit robot SuperDLT 1 (110/220 Gbytes par cartouche) intégré à la machine.

Avec la redondance des chemins d’accès, les disques RAID sont accessibles par 6 chemins parallèles depuis janus0 comme janus1.

Architecture logicielle

Les choses sont nettement plus complexes dans ce domaine sur une machine AlphaServer SC que sur une machine de type Beowulf, soit des noeuds reliés par un réseau courant de type Fast Ethernet ou Gibabit Ethernet maintenant.

Il y a une stratification logicielle formée de trois couches comme suit :
• à la base, chaque noeud tourne TruCluster en propre et est membre du cluster janus. Un tel cluster est caractérisé par le fait que toute la configuration système est partagée par tous les membres. A titre de comparaison, sur le T1, seules les deux frontales tonecm0 et tonecm1 formaient un cluster, les noeuds de calcul tournant un Tru64 indépendant, hors cluster ;
• pour fédérer les noeuds dans un seul gros pseudo-SMP basé sur l’interconnect de Quadrics, le logiciel RMS (Resource Manag. Syst.) de ce contructeur est utilisé. Concrètement, un TruCluster est limité à 32 noeuds pour des raisons de performance, mais RMS permet de fédérer plusieurs clusters de 32 noeuds au plus en un seul gros SMP. Lemieux, une machine du même type que Janus située à Pittsburgh a ainsi 3000 processeurs (http://www.psc.edu/machines/tcs/lemieux.html#arch). Une particularité de RMS est qu’il s’appuie sur une base de données miniSQL contenant des configurations statiques ainsi que des données dynamiques en fonction de l’usage de la machine (température dans les noeuds et jobs en cours, par exemple) ;
• enfin, l’outil LSF (Load Sharing Facility) de Platform est utilisé pour soumettre et gérer les travaux batch.

Parmi les particularités intéressantes de TruCluster, relevons :
• CAA (Cluster Application Availability) permet de faire tourner des applications en haute disponibilité, avec relance automatique sur un autre membre si celui qui assurait un service tombe. Ainsi certains services comme le démon OpenSSH basculent sur janus1 si janus0 tombe ;
• un alias du cluster est un nom associé à une adresse IP. On peut décider pour chaque alias les services qu’il peut assurer, quels membres en font partie, ainsi que la répartition de la charge entre eux.

Ces différents points sont détaillés dans les paragraphes suivants.

Mentionnons encore que le shell par défaut est tcsh, ce qui permet de contrôler sélectivement l’accès interactif aux noeuds de calcul. Sauf besoins particuliers, les utilisateurs n’y ont pas accès.

Haute disponibilité logicielle

Un TruCluster est un ensemble de machines partageant des ressources physiques comme des disques et offrant une haute disponibilité des services. Ce concept est celui qui existe depuis longtemps sur VMS (maintenant OpenVMS) et qui a été porté dans Tru64.

Chaque membre du cluster peut avoir une ou plusieurs voix lors des votes. Pour que le cluster démarre puis reste en vie, il faut qu’il y ait une majorité des voix, chaque noeud en fonctionnement apportant les siennes.

fig. 5 - Noeuds votants du cluster 

En pratique, on peut donc tourner avec deux machines parmi ces trois en fonctionnement. On assure ainsi la connexion au réseau public de l’Ecole, puisque si janus0 et janus1 tombent, le cluster s’arrête de toute manière faute d’une majorité de voix. On voit dans cette requête que janus0 est configured out et ne participe donc pas à l’exécution des travaux batch.

Certains services CAA, comme celui de la base de données RMS, peuvent être assurés par l’une ou l’autre des deux frontales, janus1 pouvant remplacer janus0 en cas de défaillance.

L’ensemble des services gérés par CAA sur Janus est illustré à la figureÊ6.

janus0 root - / &gt; caa_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
SC05msql       application    ONLINE    ONLINE    janus0
SC10cmf        application    ONLINE    ONLINE    janus0
SC15srad       application    ONLINE    ONLINE    janus0
SC20rms        application    ONLINE    ONLINE    janus0
SC25scalertd   application    ONLINE    ONLINE    janus0
SC30scmountd   application    ONLINE    ONLINE    janus0
apache         application    ONLINE    ONLINE    janus0
cluster_lockd  application    ONLINE    ONLINE    janus0
dhcp           application    ONLINE    ONLINE    janus0
lsf            application    ONLINE    ONLINE    janus0
sendmail       application    ONLINE    ONLINE    janus0
sshd           application    ONLINE    ONLINE    janus0

fig. 6

Alias du cluster

Un alias du cluster est un nom de machine virtuel associé à une adresse IP, regroupant un ensemble de noeuds.

Tout TruCluster doit avoir un alias par défaut, janus dans notre cas.

La figure 7 montre la configuration de cet alias. On y voit là que janus0 (memberid 1) puis janus1 (memberid 2) traitent en priorité les paquets arrivant sur l’alias janus.

Nous avons créé en plus l’alias janus-gateway d’adresse 10.128.106.1 : il définit la paire de machines janus0 et janus1 comme une machine virtuelle ayant accès au réseau public, avec haute disponibilité. Tant que janus0 est opérationnelle, elle prend l’ensemble de cette charge. Si aucune des deux ne tourne, le cluster s’arrête de toute manière faute d’une majorité de voix.

Le but de l’alias janus-gateway est que les noeuds de calcul puissent accéder au réseau public, par exemple pour obtenir des licences de certains logiciels ou pour faire afficher des fenêtre graphiques.

janus0 root - / &gt; cluamgr -s janus

Status of Cluster Alias: janus

netmask: 400284c0
aliasid: 1
flags: 7
                                                <enabled,default,ip_v4>
                                               
connections rcvd from net: 400165
connections forwarded: 20
connections rcvd within cluster: 406627
data packets received from network: 20057352
data packets forwarded within cluster: 25625
datagrams received from network: 2422967
datagrams forwarded within cluster: 6050
datagrams received within cluster: 2421180
fragments received from network: 0
fragments forwarded within cluster: 0
fragments received within cluster: 0
Member Attributes:
memberid: 1, selw=3, selp=9, rpri=1 flags=11
                                                <joined,enabled>
                                               
memberid: 2, selw=3, selp=5, rpri=1 flags=11
                                                <joined,enabled>
                                               
memberid: 3, selw=3, selp=1, rpri=1 flags=11
                                                <joined,enabled>
                                               
memberid: 4, selw=3, selp=1, rpri=1 flags=11
                                                <joined,enabled>
                                               
.. .. .. .. .. ..
memberid: 25, selw=3, selp=1, rpri=1 flags=11
                                                <joined,enabled>
                                               

fig. 7 - l’alias du cluster "janus"

La gestion des alias du cluster inclut une fonction NAT (Network Address Translation) à cette fin.

Les noeuds janus2 à janus24 utilisent janus-gateway comme routeur par défaut, comme on le voit à la figure 8.

janus17 root - / &gt; netstat -rn
Routing tables
Destination      Gateway            Flags     Refs     Use  Interface

Route Tree for Protocol Family 26:

Route Tree for Protocol Family 2:
default          10.128.106.1       UGS         1      372  ee0
10/24            10.0.0.18          U           4   425111  ics0
10.0.0.18        10.0.0.18          UHL         0        0  ics0
10.64/16         10.64.0.18         U           1        1  eip0
10.64.0.18       10.64.0.18         UHL         0        0  eip0
10.128/16        10.128.0.18        U           6  2982369  ee0
10.128.0.18      10.128.0.18        UHL         0  3931067  ee0
127/8            127.0.0.1          UR          0       12  lo0
127.0.0.1        127.0.0.1          UHL         3   303933  lo0
128.178.50.73    127.0.0.1          UH          2    62822  lo0

fig. 8 - routage vu depuis un noeud de calcul

Base de données miniSQL de RMS

Cette base de données contient des éléments de configuration de la machine, mais aussi des données dynamiques comme la température à l’intérieur des noeuds ainsi que le montre la figure 9, ou l’information relative à un job en cours d’exécution comme on le voit à la figure 10.

janus0 root - / &gt; rmsquery -v
sql&gt; select name, temp from nodes order by temp
name     temp
---------------
janus15  25
janus21  25
janus20  25
janus16  25
janus0   26
janus10  26
janus5   26
janus1   27
janus22  27
janus11  27
janus6   27
janus12  28
janus17  28
janus2   29
janus23  29
janus7   29
janus8   30
janus24  30
janus19  30
janus18  30
janus13  30
janus3   31
janus14  31
janus9   31
janus4   32

fig. 9 - exemple de requête dans la base miniSQL, ici températures des noeuds

fig. 10 - extraction des informations sur le job 76045 

Les jobs figurent dans la base RMS dès que des ressources leur ont été allouées.Tant qu’ils sont en attente, ils ne sont connus que de LSF.

En combinant les informations détenues par RMS et LSF, on peut obtenir une information synthétique par des scripts maison comme ts, écrit par Trach-Minh Tran et modifié par le soussigné, et illustré à la figure 11.

janus0 root - /etc &gt; ts -e

                      02-10-2003 16:24:26  --  STATUS OF JANUS BATCH JOBS

---  13 running job(s), using 96 cpus at 98.39%  ---------------------------------------------
Jobid  User     Job name           Queue   CPU Start time   Nodes             Rem   End  % CPU
------ -------- ------------------ ------- --- ------------ ---------------- ----- ----- -----
75996 tavernel job                biosim1  12 Oct 01 17:19 14,18-19         00:55 17:19 99.88
76031 tfagerbe 1ddh               biosim3   4 Oct 02 08:47 22               04:23 20:47 99.85
76032 tfagerbe 1fzk               biosim3   4 Oct 02 08:48 9                04:24 20:48 99.31
76033 vdubois  hcl                leonard  16 Oct 02 13:17 1,4-5,10         00:53 17:18 99.86
76034 tfagerbe 1ed3               biosim3   4 Oct 02 08:50 15               04:26 20:50 99.86
76035 tfagerbe 1fzo               biosim3   4 Oct 02 08:59 20               04:35 20:59 99.86
76037 houili   mc_jobs2           leonard   8 Oct 02 13:37 16-17            01:13 17:37 99.88
76045 vonlilie dhfr               biosim1  20 Oct 02 11:15 3,8,12-13,24     18:51 11:16 99.87
76049 gstoll   GG2GG160.2         biosim2   4 Oct 02 13:16 2                16:52 09:17 99.86
76052 gstoll   AA2AA240.1         biosim2   4 Oct 02 13:39 11               17:15 09:40 99.86
76053 gstoll   GT2GT230.10        biosim2   4 Oct 02 13:46 7                17:22 09:46 99.87
76055 gstoll   GC2GC240.2         biosim2   4 Oct 02 13:57 6                17:33 09:57 99.87
76056 parolini job.air            leonard   8 Oct 02 14:09 21,23            01:45 18:09 48.62

---   8 pending job(s), requesting 120 cpus  -------------------------------------------------
Jobid  User     Job name           Queue   CPU Submit time  Pending reason
------ -------- ------------------ ------- --- ------------ ----------------------------------
76040 egermane dxb_npt_eq         leonard  16 Oct  2 10:12 Queue slot limit
76041 sljivanc pd1                leonard  12 Oct  2 10:16 Queue slot limit
76042 ganesh   redo_b0360s-b0370  leonard  12 Oct  2 10:23 Queue slot limit
76043 ganesh   redo_b0375s-b0390  leonard  12 Oct  2 10:23 Queue slot limit
76046 vonlilie HURTIG             biosim1  20 Oct  2 11:14 Queue slot limit
76048 ypan     HMTA-C7            leonard  16 Oct  2 12:36 Queue slot limit
76050 pderlet  job_120            leonard  16 Oct  2 13:17 Queue slot limit
76051 brunetti zf_th512r128       leonard  16 Oct  2 13:37 Queue slot limit

---  Queues summary  -------------------------------------------------------------------------
Queue   Submit Exec  Running jobs Avail CPUSs Used CPUs Free CPUs  Pending jobs Requested CPUs
------- ------ ----  ------------ ----------- --------- ---------  ------------ --------------
biosim1   Yes  Yes         2           32         32         0           1           20
biosim2   Yes  Yes         4           16         16         0           0            0
biosim3   Yes  Yes         4           16         16         0           0            0
leonard   Yes  Yes         3           32         32         0           7          100

fig. 11 - état du batch avec ts

Statut actuel et perspectives

Depuis sa mise en production, janus a fait preuve d’une bonne stabilité. Elle a atteint très vite son régime de croisière, avec des taux d’utilisation de 93, 87 et 94% respectivement sur les mois de juillet, août et septembre.

Quelques problèmes logiciels ont été constatés et soumis à HP. L’Upgrade Kit 1 qui a été installé fin août a éliminé la plupart de ces derniers.

Nous avons mis en service au printemps l’extension des disques pour les utilisateurs de la partie léonard, la configuration initiale du RAID HSV 110 ayant été prévue pour la seule biosimulation.

Nous ne traitons pas directement avec Quadrics ni Platform, qui sont partenaires de HP pour l’architecture SC. C’est donc par le canal unique de HP que nous remontons les appels.

L’auteur à le plaisir de relever que les contacts avec le personnel de HP sont excellents et que le support est à la hauteur. &agrave



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.