Partager via


Understanding Kernel Profiler Output (Compact 2013)

3/26/2014

The following table shows information about the kinds of output that the Remote Tools Profiler provides in Monte Carlo mode.

Kernel profiler output

Description

Total Samples Dropped

The kernel profiler discards samples during buffered profiling if the kernel profiler takes more samples than the buffer can hold. The kernel profiler should not discard samples during unbuffered profiling.

During buffered profiling, if the buffer is too full to hold all of the samples, the most recent samples are discarded. The data that is lost is data from the end of the profiler run.

If the kernel profiler discards samples and there is plenty of system memory available, increase the size of the buffer for the kernel profiler.

Start the kernel profiler as close to the beginning of your test as possible, and stop it as close to the end of your test as possible. If your test requires the collection of more samples than the kernel profiler can store in the largest possible buffer, try to use the profiler in unbuffered mode, because in unbuffered mode there is no limit on the number of samples that the profiler can collect.

UNKNOWN Modules

If the module is not in the MODULES section of ROM, the kernel profiler reports a hit in UNKNOWN. For information about how to add a module to the MODULES section of ROM, see Building a Run-Time Image That Supports Standalone Profiling.

The kernel profiler counts a hit in a function in an UNKNOWN module as <UNACCOUNTED FOR>.

<UNACCOUNTED FOR> Functions

The kernel truncates its sorted list of functions at 500. This truncated list is not the top 500 functions by time consumed; rather, the functions listed are the first 500 functions in the ROM table of contents that have profiler hit counts other than zero. In other words, the order of the functions in ROM determines which functions appear if there are more than 500. Windows Embedded Compact does not currently support a way to circumvent the 500-function limit.

It is unusual for the kernel profiler to record hits in more than 500 functions. Although there are far more than 500 functions in ROM, typically far fewer than 500 have hits.

The kernel profiler reports the following types of hits as unaccounted for:

  • Hits in UNKNOWN modules
  • Hits in modules that do not have .map files
  • Hits that are not in the list of 500 functions

INTERRUPTS_ENABLE

The kernel profiler reports hits in the INTERRUPTS_ENABLE function in Kernel.dll when interrupts are turned off. The kernel profiler takes an interrupt periodically and records the instruction pointer for the running thread. The interrupt for the kernel profiler cannot occur while interrupts are turned off.

If interrupts are disabled when a profiler interrupt is scheduled to occur, the interrupt is delayed until interrupts are enabled. In this situation, there is a profiler hit inside the INTERRUPTS_ENABLE function. This hit gives the appearance that the OS spent time in the INTERRUPTS_ENABLE function. The percentage of time for which you see hits in the INTERRUPTS_ENABLE function is the percentage of time that is spent with interrupts off.

With the kernel profiler, you cannot know which code the OS spends time inside while interrupts are turned off. If the kernel profiler reports high numbers for INTERRUPTS_ENABLE, use CeLog and the Kernel Tracker service provider to examine which interrupts occur most frequently. The OS might be spending time inside the interrupt service routines (ISRs) for those interrupts.

Page Faults

The kernel profiler reports faults on code as hits in the following functions:

  • ProcessPageFault in Kernel.dll
  • LoaderPageIn in Kernel.dll
  • PageInXXX in Kernel.dll
  • ReadFileWithSeek from Filesys.exe or a file system driver
  • RelocatePage in Kernel.dll
  • DecompressROM in Kernel.dll

The kernel profiler reports faults on data, such as memory-mapped files including database volumes and the hive-based registry, as hits in the following functions:

  • ProcessPageFault in Kernel.dll
  • MappedPageInXXX in Kernel.dll
  • ReadFileWithSeek from a file system
  • WriteFileWithSeek from a file system

ObjectCall

When an application calls a function that is exported by a system service, the ObjectCall function in the kernel routes the call to the appropriate system service. If a Monte Carlo profiling report contains many hits inside the ObjectCall function, run the kernel profiler again in system call mode to discover which system functions are called most frequently.

See Also

Reference

Kernel Profiler

Concepts

Information Not Reported by the Kernel Profiler
Setting up the Kernel Profiler