Manuel de suivi dynamique Solaris

Résolution de l'horloge

Le fournisseur profile utilise des horloges d'intervalle de résolution arbitraire du système d'exploitation. Dans des architectures ne prenant pas en charge des interruptions basées sur le temps à résolution arbitraire, la fréquence est limitée par la fréquence d'horloge système qui est spécifiée par la variable de noyau hz. Les sondes de fréquence supérieure à hz dans de telles architectures se déclenchent un certain nombre de fois toutes les 1/ hz secondes. Par exemple, une sonde profile 1 000 hertz dans une telle architecture avec hz définie sur 100 se déclenchera dix fois de manière rapprochée toutes les dix millisecondes. Sur des plates-formes prenant en charge une résolution arbitraire, une sonde profile 1 000 hertz se déclencherait chaque milliseconde.

L'exemple suivant teste la résolution d'une architecture :

profile-5000
{
	/*
	 * We divide by 1,000,000 to convert nanoseconds to milliseconds, and
	 * then we take the value mod 10 to get the current millisecond within
	 * a 10 millisecond window.  On platforms that do not support truly
	 * arbitrary resolution profile probes, all of the profile-5000 probes
	 * will fire on roughly the same millisecond.  On platforms that
	 * support a truly arbitrary resolution, the probe firings will be
	 * evenly distributed across the milliseconds.
	 */
	@ms = lquantize((timestamp / 1000000) % 10, 0, 10, 1);
}

tick-1sec
/i++ >= 10/
{
	exit(0);
}

Dans une architecture prenant en charge des sondes profile à résolution arbitraire, l'exécution de l'exemple de script entraîne une distribution régulière :


# dtrace -s ./restest.d
 dtrace: script './restest.d' matched 2 probes
CPU     ID                    FUNCTION:NAME
  0  33631                       :tick-1sec 


           value  ------------- Distribution ------------- count    
             < 0 |                                         0        
               0 |@@@                                      10760    
               1 |@@@@                                     10842    
               2 |@@@@                                     10861    
               3 |@@@                                      10820    
               4 |@@@                                      10819    
               5 |@@@                                      10817    
               6 |@@@@                                     10826    
               7 |@@@@                                     10847    
               8 |@@@@                                     10830    
               9 |@@@@                                     10830

Dans une architecture ne prenant pas en charge des sondes profile à résolution arbitraire, l'exécution de l'exemple de script entraîne une distribution irrégulière :


# dtrace -s ./restest.d
 dtrace: script './restest.d' matched 2 probes
 CPU     ID                    FUNCTION:NAME
  0  28321                       :tick-1sec 


           value  ------------- Distribution ------------- count    
               4 |                                         0        
               5 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  107864   
               6 |                                         424      
               7 |                                         255      
               8 |                                         496      
               9 |                                         0

Dans ces architectures, hz peut être réglée manuellement dans /etc/system afin d'améliorer la résolution effective.

Toutes les variantes de UltraSPARC (sun4u) prennent actuellement en charge les sondes profile à résolution arbitraire. De nombreuses variantes de l'architecture x86 (i86pc) prennent également en charge les sondes profile à résolution arbitraire, alors que ce n'est pas le cas de certaines variantes antérieures.