Sitecore 7: Pipeline Profiling

Version 7 of the Sitecore ASP.NET web Content Management System (CMS) provides pipeline profiling, which lets you monitor utilization, performance, and other aspects of Sitecore pipelines. You can use pipeline profiling to identify opportunities to improve system performance by optimizing pipelines. Before you read this blog post, please read the Sitecore 7: Introduction linked in the Resources section at the end of this page.

Pipelines separate the implementation of processes into a series of discrete processors, each typically responsible for a single operation invoked by one or more components somewhere within the system.

Sitecore 7 disables pipeline profiling by default. To enable pipeline profiling, rename the /App_Config/Include/Sitecore.PipelineProfiling.config.disabled Web.config include file to Sitecore.PipelineProfiling.config, or otherwise set the Pipelines.Profiling.Enabled setting in the Web.config file to true. Optionally, set the value of the Pipelines.Profiling.MeasureCpuTime setting to true, which adds some overhead but provides additional pipeline profiling detail.

To access pipeline profiling information, go to the /sitecore/admin/pipelines.aspx page, which requires that you log in as a Sitecore administrator. The grid displays rows for each processor in each pipeline, starting with a summary row for the pipeline.

screen capture of pipeline profiling

The Refresh button reloads the page to render updated information. The Reset button resets pipeline profiling details, similar to resetting the application pool. This is also makes the legend more clear. You can use the text box below the buttons to filter the list of pipeline names.

The first column indicates the pipeline or processor with numbered icons in various colors that might help to identify the worst performers in each pipeline. Hover over the name of a processor to see defails for that component.

Additional columns indicate:

  • # Executions: The number of times that Sitecore has invoked the pipeline or individual processor. You may see different numbers for different processors within a pipeline, as exiting a pipeline early can prevent Sitecore from invoking subsequent processors. High values could indicate pipelines invoked excessively frequently, but more importantly, pipelines most important to optimize.
  • % Wall Time: The percentage of the time elapsed during all invocations of a pipeline that elapsed during invocations of each individual processor. Note that wall time does not necessarily indicate CPU time consumed by a specific process, but wall time trends can be indicative. Relative values could indicate the most expensive processors in each pipeline.
  • Wall Time: The amount of milliseconds elapsed during all invocations of the pipeline
  • Max Wall Time: The greatest amount of time elapsed during a single invocation of a pipeline or individual pipeline processor. High values may indicate pipelines and processors that perform poorly under some conditions.
  • % CPU (if the Pipelines.Profiling.MeasureCpuTime setting in the Web.config file is true): percentage of CPU time consumed by this processor during all invocations of this pipeline. High values may indicate processors to optimize or CPU-bound processing conditions.
  • Time / Execution: Average of wall time consumed by all invocations of a pipeline or individual processors. High values may indicate inefficient pipelines or processors.

In some cases, a high value that could indicate opportunity for improvement may not be as important as something else that shows a smaller room for improvement. For example, performance in the initialize pipeline invoked once at application startup may not be as critical as performance in the httpRequestBegin pipeline invoked once for each HTTP request.