Quelques projets relatifs à XtremWeb-HEP:
– BitDew
– MPICH-V
– XtremWeb
– XtremWeb-CH
– Attic
Quelques projets relatifs à XtremWeb-HEP:
– BitDew
– MPICH-V
– XtremWeb
– XtremWeb-CH
– Attic
Some related projects:
– BitDew
– MPICH-V
– XtremWeb
– XtremWeb-CH
– Attic
Plus de détails : ici
More details here
More details here
xwtar.sh
script which generates the sources archive; this archive is now correctly generated.The platform is now able to update the server public key. This works if and only if the server key has not expired yet.
XML un/marshalling has been improved. This results to an 20% performances increase as shown in the two next figures which represent the client execution time to retreive 1000 jobs from server from our XWHEP deployment at LAL. In the first figure we can see that the client needed more than 100 seconds using XWHEP 5.8.0; in the second figures less than 80 seconds is now needed using XWHEP 5.9.0.
Some new features are implemented to improve confinement and security access.
Major consequences :
$> xwsendusergroup MyGroupLabel theGroupAdminLogin theGroupAdminPassword theGroupAdminEmail
...
But, of course, versions prior to 5.8.0 know nothing neither about that XML root element, nor about column changes. This current version takes care of all that. If a distributed part sends a message without the XML root element, this clearly mean that this part run a version prior to 5.8.0.
Hence we don’t encapsulate the answer with the XML root element
and we take care to answer with the expected attributes.
X509 proxy are never downloaded by workers (even Pilot Job).
The bridge may download X509 proxies (and the bridge only).
Next figures show server memory consumption. The 1st one shows version 5.4.0 starving behaviour: after four days, the amount of allocated memory is as up as 382Mb. The 2nd one shows a more stable consumption with version 5.5.0, after six days : the amount is a third of 5.4.0 memory usage.
http://localhost:4324
to configure their worker;xwclean
) to clean client cache; this command is also available in the Comm menu of the GUI;The JAR file is now also provided. To update you have to
launcher.url
, in worker config file, points to; on next reboot workers will automatically download it.Next figures show server memory consumption. The 1st one shows a starving behaviour: after 1H30 only, the amount of allocated memory is as up as 78Mb. The 2nd one shows a more stable consumption : the amount is still the initial one at only 31Mb after two hours.
The two next figures show 1000 submissions received by server. We can see the performance degradation on the first one; the 2nde figure shows that degradation is now solved.
Total execution time is 2.5 times higher because messages now expect an answer from server : this increases synchronization.
The following SQL command shows result more readably
select apps.name as app,label,
hex(works.accessrights),hex(apps.accessrights),
works.status,users.login as worker_login,
users.rights as worker_level
from
works,apps,tasks,hosts,users
where
works.appuid=apps.uid and
works.uid=tasks.uid and
tasks.hostuid=hosts.uid and
hosts.owneruid=users.uid
order by works.label;
We can see that public worker (which login is worker) has run public jobs only (which labels are public…); private workers (which logins are user…) has run jobs of their own identity only (which labels end by their own login).
To install this version, you must reinstall the database.
The server is now certified by an autosigned SSL key which must be generated by createKeys. Next version will use X.509 certificate certified by a CA.
Installation and deployment needs following actions (in that order : createKeys must be executed before install).
$> make removeDB
$> make installDB
$> make clean
$> make
$> make createKeys
$> make install
For a production deployment, keys must be safelly stored, otherwise (if you lose or accidentally regenerate keys) a full re-deployment is necessary.
Electronic key usage has a cost in terms of communication.
Figure on the left shows the necessary TCP packet amount without SSL. Figure on the right shows the one with SSL : the packet amount is as twice.
A script to auto test the platform is now provided in bin repertory:
$> xtremweb.tests.pl
You must have the platform privileged rights to run the script (as provided by the default client config file).
The script does the following:
At the end of the script, we can see that all jobs are COMPLETED.
We can verify this with the following SQL command (we can’t check this with the client because the client does not show worker identity for each job) :
select works.status,works.label,hosts.name,users.login
from users,works,tasks,hosts
where tasks.uid=works.uid
and tasks.hostuid=hosts.uid and
hosts.owneruid=users.uid
order by users.login;
Next figure shows auto test results.
We can see that public worker (which login is worker) has run public jobs only (which labels are public…); private workers (which logins are user…) has run jobs of their own identity only (which labels end by their own login).
A bug found on worker side, in standard input (stdin) management.
There is still a problem if user application test stdin availability. There is great chance that the platform has not had time to set stdin correctly before the application test.
This is due to Java langage used to develop the platform.
User application developpers should not test stdin but just read it. If data availability from stdin is only an option for the application, please use a text file instead.
Example:
Next works correctly if myApp reads from stdin, but does not test stdin
$> myApp < aFile
Otherwise, if data from stdin is optionnal, please modify your application so that you can retreive your optionnal datas from a text file; just like in:
$> myApp -f aFile
Sorry for inconveniences.
To install this version, you must reinstall the database
$> make removeDB
$> make installDB
$> make install
Next figures show 1000 job submissions. We can see that I/O correction and cache usage need four times less internal calls for an execution 14 times faster.
A major bug found on task management, on server side.
Three bugs corrected
Minor clean up only.
Bug resolved in result storage protocol.
Bug resolved in data submission on client side.
A database access bug resolved.
We don’t use log4j any more, since we suspect memory leaks.
A bug resolved on result upload on worker side.
A bug resolved on communication layer.
A bug resolved on worker side.
A bug resolved on client side; result download works corretly now.
The client automatically creates datas when submiting jobs with stdin and/or environment.
xwtar.sh
qui génère l’archive des fichiers sources (cette archive est maintenant correctement générée).la plate-forme est maintenant capable de mettre automatiquement à jour la clé publique du serveur. Cette fonctionnalité doit être mise en oeuvre avant que la clé actuelle n’expire.
XML un/marshalling has been improved. This results to an 20% performances increase as shown in the two next figures which represent the client execution time to retreive 1000 jobs from server of our XWHEP deployment at LAL. In the first figure we can see that the client needed more than 100 seconds using XWHEP 5.8.0; in the second figures less than 80 seconds is now needed using XWHEP 5.9.0.
Certaines nouvelles fonctionnalités sont introduites afin d’améliorer le confinement et la sécurité.
Conséquences :
xwusers
$> xwsendusergroup MyGroupLabel theGroupAdminLogin theGroupAdminPassword theGroupAdminEmail
...
Bien sûr, les versions précédentes ne peuvent pas connaitre ces changements. A partir de cette versions 5.8.0 le protocole sait tenir compte de la version des clients/workers. S’ils envoient un message sans l’element XML xwhep
c’est qu’ils tournent une version plus ancienne que la 5.8.0 et le serveur retrourne alors un réponse compatible.
Les workers (même les Pilot Job soumis sur EGEE) ne téléchargent jamais de certificat X509.
Seul le bridge télécharge les certificats pour soumettre les pilot Job sur EGEE.
Les deux figures montrent la quantité de mémoire utilisée par le serveur. La 1ere figure montre une voracité croissante avec la version 5.4.0: après quatre jours, la quantité de mémoire allouée s’élève à 382Mb. La 2nde figure montre une consommation plus raisonnable avec la version 5.5.0: après six jours, la quantité de mémoire allouée est trois fois moins importante.
http://localhost:4324
;xwclean
permet de nettoyer le cache local; cette commande est disponible dans le menu Comm de la GUI.Le fichier JAR est disponible. Pour mettre à jour, vous devez:
launcher.url
, dans le fichier de configuration du worker; les workers le téléchargeront automatiquement à leur prochain lancement.Les deux figures montrent la quantité de mémoire utilisée par le serveur. La 1ere figure montre une voracité croissante: après seulement 1H30, la quantité de mémoire allouée s’élève déjà à 78Mb. La 2nde figure montre une bonne stabilité: après plus de deux heures, la quantité de mémoire allouée n’a pas bougé de son niveau initial de 31Mb.
Les deux figures montrent la réception de 1000 soumissions par le serveur. La 1ere figure montre clairement une dégradation des performances; elle disparait dans la 2nde figure avec les corrections.
Le temps total d’exécution est 2.5 fois supérieur car les messages attendent maintenant tous une réponse du serveur : ceci améliore la cohérence de la plate-forme.
La commande SQL suivante permet de mieux voir les résultats
select apps.name as app,label,
hex(works.accessrights),hex(apps.accessrights),
works.status,users.login as worker_login,
users.rights as worker_level
from
works,apps,tasks,hosts,users
where
works.appuid=apps.uid and
works.uid=tasks.uid and
tasks.hostuid=hosts.uid and
hosts.owneruid=users.uid
order by works.label;
On voit que le worker public (dont le login est worker) n’a pris en charge que des jobs publics (dont le label est public…); les workers privés (dont les logins sont user…) n’ont pris en charge que les jobs leur appartenant (dont les labels finissent par leur login).
Le server est désormais certifié par une clé autosignée générée par createKeys. La prochaine version permettra d’utiliser des certificats X.509 certifiés par une CA.
Pour installer cette version, il est nécessaire de réinstaller la base de données.
L’installation et le déploiement nécessitent les actions suivantes dans cet ordre précis (createKeys doit être exécuté avant install).
$> make removeDB
$> make installDB
$> make clean
$> make
$> make createKeys
$> make install
Pour un déploiement de production, les clés ne doivent être générées qu’une seule fois; la regénération des clés nécessite un redéploiement complet de la plate-forme.
L’utilisation de SSL a un coût en termes de communication dans un rapport de un à deux. La figure de gauche montre le nombre de paquets TCP sans utiliser SSL; la figure de droite montre le nombre de paquets TCP pour la même commande en utilisant SSL :
Un script de test de la plate-forme est fourni dans le répertoire bin de l’installation
$> xtremweb.tests.pl
L’utilisation de ce script nécessite les droits administateur au niveau de la plate-forme (le fichier de config crée à l’installation poossède ces droits).
Ce script éxecute les commandes suivantes:
A la fin du script, nous pouvons constater que tous les jobs sont COMPLETED. On peut vérifier la bonne exécution du test avec la commande SQL suivante (nous ne pouvons utiliser le client pour cette vérification, car il n’affiche pas l’identité des workers dans la liste des jobs) :
select works.status,works.label,hosts.name,users.login
from users,works,tasks,hosts
where tasks.uid=works.uid
and tasks.hostuid=hosts.uid and
hosts.owneruid=users.uid
order by users.login;
La figure suivante montre le résultat de l’auto test.
On voit que le worker public (dont le login est worker) n’a pris en charge que des jobs publics (dont le label est public…); les workers privés (dont les logins sont user…) n’ont pris en charge que les jobs leur appartenant (dont les labels finissent par leur login).
Un bug a été résolu dans le worker, au niveau de la gestion de l’entrée standard (stdin) de l’application utilisateur.
Il reste toutefois un problème non résolu si cette application tente de tester la disponibilité de données dans stdin. Il y a alors une grande chance que la plate-forme n’ai pas eu le temps de positionner correctement stdin.
Ce problème est du au language Java utilisé pour développer notre plate-forme.
L’application utilisateur ne doit donc pas tester la disponibilité de données sur stdin, mais se contenter de le lire. Dans le cas où stdin est optionnel, il faut alors modifier l’application afin qu’elle prenne ses éventuelles données depuis un fichier texte.
Exemple:
L’exemple suivant marche correctement si myApp ne teste pas stdin:
$> myApp < aFile
Si stdin est optionnel, il faut modifier l’application afin de lui fournir ces données optionnelles depuis un fichier texte; par exemple:
$> myApp -f aFile
Désolé pour les inconvénients.
Pour installer cette version, il est nécessaire de réinstaller la base de données
$> make removeDB
$> make installDB
$> make install
Les graphes ci dessous montrent deux soummissions de 1000 jobs. Nous voyons que la résolution du bug des E/S et l’utilisation du cache permettent de faire quatre fois moins d’appels internes pour un temps d’exécution 14 fois plus rapide.
Un bug majeur résolu au niveau du serveur dans la gestion des tâches
Trois bugs corrigés
Du nettoyage mineur
Un bug a été résolu dans le protocole de stockage des résultats.
Un bug a été résolu au niveau du client, dans la soumission des données.
Un bug a été résolu au niveau de l’accès à la base de données.
Nous n’utilisons plus log4j, car nous suspectons des fuites de mémoires.
Un bug résolu au niveau de l’upload des résultats par le worker.
Un bug résolu au niveau des communications.
Un bug résolu au niveau du worker.
Le client récupère correctement les résultats.
Lors de la soumission, on peut maintenant fournir directement un fichier d’environnement; le client crée automatiquement la donnée correspondante.
The LRI deployment has been updated in 7.5.0.
You can download the client.
You can dowload the worker.
La plate-forme du LRI a été mise à jour en 7.5.0.
Vous pouvez télécharger le client.
Vous pouvez télécharger le worker.