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.