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.