Notes de version de Sun Identity Manager 8.1

Remarques sur les statistiques

Les sections suivantes contiennent des informations dont il convient de tenir compte lors de l'évaluation des résultats fournis par le profileur :

Statistiques de self time

Pour calculer les statistiques de self time d'un nœud racine, le profileur soustrait les temps de tous les nœuds enfants du temps total de ce nœud racine.

Par conséquent, le temps d'un nœud enfant non instrumenté se reflète dans le self time du nœud racine. Si le self time d'un nœud racine est important, il convient d'enquêter pour en connaître la raison. Les méthodes instrumentées peuvent ne pas être adaptées, ce qui peut vous amener à ne pas chercher au bon endroit.

Par exemple, partez de l'hypothèse qu'une méthode A appelle une méthode B.

La méthode A a un temps total de 10 secondes (le temps total inclut l'appel à B) et l'appel à B prend un temps total de 10 secondes.

Si à la fois A et B sont instrumentées, la pile d'appels reflète ces informations. Vous verrez que A aura un self time total de 0 secondes et B un self time de 10 secondes (10 secondes ont réellement été utilisées dans B). Si toutefois B n'est pas instrumenté, vous ne verrez que l'appel à A prend 10 secondes et que le self time de A est de 10 secondes. Vous assumerez donc que le problème est directement lié à A et non pas à B.

En particulier, vous pourrez remarquer de longs self times sur les JSP pendant leur compilation initiale. Si vous réinitialisez les résultats recueillis puis réaffichez la page, la valeur de self time sera bien inférieure.

Appels du constructeur

Compte tenu de limites inhérentes à la stratégie d'instrumentation de Java, les appels initiaux à this() ou super() apparaîtront comme un sibling à l'appel du constructeur plutôt que comme un enfant. Observez l'exemple suivant :


class A
{
   public A()
   {
      this(0);
   }
   public A(int i)
   {
   }
}

and:

class B
{
   public static void test()
   {
      new A();
   }
}
The call tree will look like this:
B.test()
   -A.<init>(int)
   -A.<init>()
Rather than this:
B.test()
   -A.<init>()
      -A.<init>(int)

Threads de démons

Ne vous laissez pas duper par l'apparente grande quantité de temps passée dans un nombre de threads de démons d'Identity Manager tels que ReconTask.WorkerThread.run() ou TaskThread.WorkerThread.run(). La plupart de ce temps s'écoule en état de sommeil dans l'attente d'événements. Vous devez enquêter sur ces traces pour connaître le temps réellement consacré au traitement d'un événement.