Missing Profiling Data

If you suspect that there is some profiling data missing from the experiment, check the following list of topics that explain why data might be missing.

Missing clock-based profiling data from a multithreaded program

If your program is multithreaded, the clock-based profiling signals (SIGPROF) for one or more LWPs can occasionally be lost. The consequence is that the data does not include timing metrics for threads run on those LWPs. This consequence happens most often with unbound threads in the SolarisTM 7 Operating System.

This problem can be fixed by installing the appropriate patches to the Solaris Operating System. Another alternative is to use bound threads, or if you are running under the Solaris 8 Operating System, to use the alternate threads library in /usr/lib/lwp.

Missing hardware counter profiling data from a multithreaded program

If your program is multithreaded, the hardware counter overflow profiling signals (SIGEMT) are occasionally lost. The data for the overflow is recorded and assigned to the function collector_lost_hwc_overflow.

This problem can be fixed by installing the appropriate patches to the Solaris Operating System. If you are running under the Solaris 8 Operating System, another solution is to use the alternate threads library in /usr/lib/lwp.

Missing profiling data from a program that installs a signal handler

The mechanism by which the Collector collects profiling data uses two signals, SIGPROF and SIGEMT. To ensure that profiling signals are not lost or mishandled, the Collector installs its own signal handler as the primary signal handler. If the program on which data is being collected installs its own signal handler, the Collector re-installs its signal handler as the primary signal handler.

If you attach dbx to a process without preloading the collector library and enable performance data collection, and the program subsequently installs its own signal handler, the Collector does not re-install its signal handler. In this case, the program's signal handler must ensure that the SIGPROF and SIGEMT signals are passed on so that performance data is not lost. If your application loads the asynchronous I/O library, libaio.so, after you attach dbx to the process for data collection, the SIGPROF signal is intercepted by the signal handler in libaio.so, and clock-based data and sampling data is not recorded.

Missing profiling data from a program that calls exec

If your program makes a successful call to exec(2) or any of its variants, the performance experiment is abnormally terminated and no more data is collected. If the call fails, data collection proceeds as normal. If you ran this program under dbx, you cannot collect data after the call to exec has succeeded, but if you use the collect(1) command to collect data, you can record an experiment on the new image using the -F on option.

Abnormally-terminated experiments can be read successfully by the Performance Analyzer. If you want to analyze the experiment on a different computer than the one on which it was recorded, use the er_archive(1) command on the computer on which you recorded the experiment first.

Missing clock-based profiling data from short sections of a run

Clock-based profiling data can appear to be lost when the system clock is synchronized with an external source. The adjustment is usually made in increments over a period of several seconds. The time stamp recorded in profile packets during this time includes the increments to the system clock. The resultant irregularity in the apparent profiling interval can be seen in the Timeline tab, but does not affect the timing metrics.


Can't find what you are looking for? Submit your comments at http://www.sun.com/hwdocs/feedback.
Legal Notices