jeudi 29 avril 2010

Tuning JVM et GC (Garbage collector) young generation : influence de la taille de la young generation (3/3)

Question : comment se manifeste l’effet d’une young generation de taille acceptable

Ce travail a été réalisé en collaboration avec Hamed KOUBAA, Architect SOA.

Introduction

L’objectif de cet atelier est de sensibiliser au choix des espaces mémoires de la JVM, basée sur un GC générationnel. Nous avons appliques au JDK de SUN.

Le principe de l’atelier est simple : utiliser l’application java2D (inclus dans la jdk %java_home%/demo/jfc/Java2D) avec des paramètres différents de la JVM et interpréter les résultats obtenus.

architecture soa, service oriented architecture, java software, open source, eclipse,alm, j2ee, java ,bpm

pré requis

Les expérimentations de ce tutorial peuvent être réalisé sous Solaris, Linux et Windows : là où le JDK Hotspot de Sun fonctionne.

Il suffit d’Installer une JDK ultérieure à la version 5.0.

Les tests ont été réalisés avec JDK 1.0.0 build 17.

Noter que le JDK qui inclut des "démos" est nécessaire - un JRE n'est pas suffisant.

Configurer les variables d’environnement JAVA_HOME

- télécharger si besoin visualgc .

Maintenant vous êtes prêt pour démarrer l’atelier.

Une jeune génération ayant la bonne taille

Dans cet exemple nous essayons de fixer la bonne taille de la jeune génération.

Rappelons que la valeur adéquate de la young generation dépend de l'application exécutée.

Il s'agit probablement d'une plage de valeurs acceptables.

Pour cet exemple, nous maintenons la taille maximale du Heap à 16 MB, mais nous fixons la jeune génération à 4 MB

-XX:NewSize=4m -XX:MaxNewSize=4m -Xms16m -Xmx16m

- une fois l’application lancée, cliquez rapidement sur l’onglet transform > dans le carrée transform anim (celui en bas), augmenter le nombre d’objets de string et d’images animés au maximum. (à l’instar des autres exemples)

- ce qui suit est l’état de visualGC après une minute et demie d’observation

architecture soa, service oriented architecture, java software, open source, eclipse,alm, j2ee, java ,bpm

Interprétation

Si les temps de GC sont plus petite, cela peut signifier que nous avons réussi notre paramétrage (même si c’est encore tôt pour juger car la JVM peut bien se comporter dans des petit délais, puis elle change de comportement au cours de l’exécution)

Comment connaissez-vous que la jeune génération est bien ajuster?

Quand ce n'est pas trop petit ou trop grand ;-)

Bien entendu, la diminution des temps de CG est une bonne indication.

Remarques

Maintenant vous avez une compréhension des zones de mémoire HotSpot que vous avez réellement vu en exécutant Visual GC.

Vous avez une idée sur le paramétrage du young génération.

Astuce :

Pour Lignes directrices générales pour le dimensionnement de la jeune génération:

* Le ratio maximal entre la jeune génération (young generation) et le Heap ne doit pas dépasser les 45%

Si vous dépassez ce ratio alors il ya un risque que la jeune génération entière contient des objets vivants qu'ils ne pouvaient pas tous être promu à la old generation.

Généralement pour les applications clientes on commence par un pourcentage de 25%.

Pour les applications serveur on commence généralement par un pourcentage de 10% du Heap.

On augmente le taux selon les besoins.

Conclusion et perspectives :

Nous avons traités l’impact des principaux paramètres de la JVM

-XX:PermSize, -XX:MaxPermSize, -XX:NewSize, -XX:MaxNewSize, -Xms, -Xmx

une idée sur les indicateurs d’une JVM mal paramétrer : détecter quand le young generation, le old generation ou la permanet generation sont trop petit ou trop grand.

Plus la taille de la young generation est grande plus les collectes mineures sont rares.

Cependant, lorsque la taille du heap est peu extensible, cela va diminuer la taille de la tenured generation ce qui aura pour conséquence d'augmenter la fréquence des collectes majeures.

Un conseil :

L’étape suivante consiste à voir l’effet des autres paramètres de la JVM tq (disableExplicitGC, agressiveheap, printCompilation, concurrentGarbageCollection …Etc) utilisant d’autres exemples et en appliquant à votre application.

mercredi 28 avril 2010

.Net 4 : WCF data services une amélioration de ADO.Net data services

Si on étudie la nouvelle version de .Net, la 4.0, sortie ce 12 avril 2010, pour n’en choisir que la meilleure amélioration ?

que choisir ?

Difficile, ce choix, diront les adeptes. En vue du grand nombre de nouvelles fonctionnalités offertes.

Je vais écarter Workflow Foundation 4.0 (WF4), car il me semble qu’il soit une refonte de l’offre workflow. WF4 est plus qu’une amélioration à WF 3.5…

WCF Data Services Framework

Je pense que la meilleure amélioration concerne ADO.NET Data Services Framework.

Cela s’appelle désormais, WCF Data Services Framework. Bien sûre WCF : Windows Communication Foundation, l’ABC de l’exposition des services dans le Framework .Net et chez Microsoft.

WCF Data Services expose les données au moyen de services de type RESTful accessibles via HTTP. Il utilise le framework Entity Data Model (EDM) pour réaliser facilement, et sans code (ou presque) cette exposition.

Les données sont accessibles directement en utilisant le fameux URI (Uniform Resource Identifier) du HTTP. Un simple GET permet de faire une sélection complexe sur une base de données,  sans se préoccuper des détails. En toute sécurité, bien sûre.

Le data service peut être configuré pour renvoyer les données sous le format Atom et/ou JSON (JavaScript Object Notation).

Lors d’un projet, courant le mois de mars 2010, , j’ai utilisé Jquery pour exploiter des Data Services exposés en moins de 1à lignes de codes C#. Le projet consistait en l’intégration d’ une application basée sur la version 4.0 beta 2 de .Net et une autre déployé sous Tomcat (Java EE) et générée par W4 le fameux moteur de BPM.

Open Data Protocol : Un Protocol pour l’exposition des données

Microsoft a adopté REST et fait la promotion d’un protocole d’échange de données dit Odata (Open Data Protocol). OData est inspiré du protocole Atom Le Protocol des flux RSS.

Dans le. NET Framework 4, il ya eu des améliorations importantes dans les services de données (par rapport à la version .Net 3.5). Il y a eu des améliorations dans le mapping des données, les projections, la pagination coté serveur, le comptage.

Reste à tester les performances (annoncées comme améliorées) de ce nouveau service RESTful offert nativement dans .Net 4.0.

Un dernier mot : ce service est l’exemple typique que SOA n’est pas web service.

OData, est un protocole à suivre de tout près, il se base sur un principe d’uniformité des représentations des données, de l’accès et des opérations  … mais ceci est un autre sujet

mardi 27 avril 2010

Tuning JVM et GC (Garbage collector) young generation : influence de la taille de la young generation 2/3

Question : quelle est l’influence d’une young generation ayant une taille trop grande

Ce travail a été réalisé en collaboration avec Hamed KOUBAA, Architect SOA.

pré requis

Les expérimentations de ce tutorial peuvent être réalisé sous Solaris, Linux et Windows : là où le JDK Hotspot de Sun fonctionne.

Il suffit d’Installer une JDK ultérieure à la version 5.0.

Les tests ont été réalisés avec JDK 1.0.0 build 17.

Noter que le JDK qui inclut des "démos" est nécessaire - un JRE n'est pas suffisant.

Configurer les variables d’environnement JAVA_HOME

- télécharger si besoin visualgc .

Maintenant vous êtes prêt pour démarrer l’atelier.

Une jeune génération trop grande

Pour cette partie, nous maintenons la taille maximale du Heap à 16 MB.

Et nous fixons la taille de la « jeune génération » à 5,5 MB. (Souvenez-vous dans l’exemple précédent nous avons mis la jeune génération à seulement 1 Mo)

-XX:NewSize=5500k -XX:MaxNewSize=5500k -Xms16m -Xmx16m

La suite de la présentation est identique à ce qui a été fait précédemment

Lancer la démo Java2D

Lancer visualGC

- une fois l’application Java2D lancée, cliquez rapidement sur l’onglet transform > dans le carrée transform anim (celui en bas), augmenter le nombre d’objets de string et d’images animés au maximum.

- ce qui suit est l’état de visualGC après une minute et demie d’observation

architecture soa, service oriented architecture, java software, open source, eclipse,alm, j2ee, java ,bpm

Pour cet exemple, nous avons eu 70 collections mineures (contre 160 dans l'exercice précédent), 48 collections complètes « full » (contre 16) et nous avons passé un total de 3 seconds. Bref, 3,33% (contre 1,66%) de la durée totale en GC.

(NB: ces chiffres différent selon la machine sur laquelle on exécute, mais la tendance est la même)

NB :

Il est à noter que pour cet exemple la jeune génération n’est pas de grande taille.

Interprétation

Notez que l’effet en dents de scie n’est plus clair. Vous pouvez remarquer également que l’application «saccade » en raison du fait que chaque GC mineur prend plus de temps (collection de 5,5 Mo au lieu de 1 Mo).

Même si vous avez moins de GC, ils prennent beaucoup de temps quand ils se produisent.

Pourquoi une jeune génération « trop grande » constitue un problème?

Si la jeune génération est trop grande, les pauses des collectes GC mineur risquent d’être plus longues (ce qu’on appelle Stop the world). Cela se manifeste, par exemple, par un  “affichage saccadée” pour les applications clientes.

NB : les valeurs fixés ont un but pédagogique d’illustration …

lundi 26 avril 2010

SOA à l’ENIS : Conférence SOA (Architecture Orientée Services) : démystification"

Ce mercredi 28 avril 2010, à SFAX, j’aurais le plaisir, d’animer une conférence intitulée "SOA (Architecture Orientée Services) : démystification"

la conférence est destinée aux élèves ingénieurs de l’ENIS ‘Ecole Nationale d’ingénieur de Sfax: année terminale, de la spécialité informatique.

Le thème choisit est SOA (Architecture Orientée Services) : Les plus grands éditeurs en parlent, les SSII et les intégrateurs s'y préparent. Tout le monde a quelque chose à dire sur SOA !

L'architecture orientée services concerne tous les acteurs, des Systèmes d'information, des logiciels et des services et entame sa phase de déploiement.



La conférence apportera une vision claire, concrète, et un retour d’expérience du concept SOA : démystifier le concept et préciser la part de la mode (Buzz) dans un domaine que certains n'hésitent pas à le comparer à l'arrivée du client serveur, dans un cycle comme ceux que connaît l'informatique tous les dix ans.


Dans quel contexte et pour servir quels objectifs mettre en œuvre ce type d'architecture ?


Quel est l'éventail des technologies utilisables ?

et plusieurs autres questions, seront posés lors de cette conférence…

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.