microsoft-performance-toolk.../documentation/Glossary.md

11 KiB

Glossary


AboutInfo

Exposes information about a plugin, such as its authors, copyright, and license. See Adding About Information.

Column

A (ColumnConfiguration, Projection) pair that defines data inside a Table.

See also: Special Columns

ColumnConfiguration

Information about a column of a Table. Contains the column's name, metadata, and UIHints.

See also: Projection.

ColumnRole

Meta-information about a Column that defines the Column's role in data presentation. For example, a Column of Timestamp values relative to the start of a DataSource may be marked as a "start time" Column.

ColumnRoles are specified as part of a Table Configuration.

Column Variant

An alternative projection for a column. While table authors are free to define column variants however they wish, variants are often used to provide alternate views of the same underlying data. For example, a "Process" column may define

  • one IProjection<int, string> variant that projects to the process name
  • one IProjection<int, uint> variant that projects to the process ID

⚠️ Note: column variants cannot be assigned as a column role or highlight entries within a column configuration; only the "base" projection associated with the column may be used for these purposes.

For more information on the different types of column variants, refer to the Adding Column Variants documentation.

CompositeDataCooker

A DataCooker that receives input solely from other DataCookers.

CustomDataProcessor

Component responsible for processing a DataSource. For example, a CustomDataProcessor may be responsible for parsing lines in a .txt file into LineItem objects that later get consumed by a DataCooker or Table.

In most situations, a CustomDataProcessor will further delegate the responsibility of processing a DataSource to a SourceParser.

A CustomDataProcessor is responsible for building any Simple Tables discovered by the ProcessingSource that created it.

DataCooker

Component of a Processing Pipeline that consumes data from one or more sources and optionally outputs new data for other components to consume. Conceptually, a DataCooker "cooks" data from one type to another.

See also: SourceDataCooker and CompositeDataCooker.

DataSource

An input to be processed by a CustomDataProcessor. In most situations, this is a FileDataSource that contains the full path to a file specified by a user.

DynamicTable

A Table that is built outside of the standard table building cycle. DynamicTables are commonly built in response to a TableCommand being invoked.

Pivot Column

NOTE: (Not to be confused with the Special Column PivotColumn)

A special type of Column that should be pivoted about when its Table is interpreted as a Pivot Table. Any Column that appears in a TableConfiguration before the PivotColumn is a Pivot Column.

Pivot Table

A representation of a Table where certain Columns are pivoted/grouped about. For example, consider this table with 5 rows:

State Zip Code Population
Washington 98052 65,558
New York 10023 60,998
Washington 98101 13,877
Washington 98109 20,715
New York 10025 94,600

If the "State" column above is a Pivot Column, the 5 rows would be grouped into the following Pivot Table:

State Zip Code Population
> Washington
98052 65,558
98101 13,877
98109 20,715
> New York
10023 60,998
10025 94,600

⚠️ Note: the SDK has no understanding of Pivot Tables. Tables created by a plugin are purely "flat" tables - i.e. tables similar the first one above. It is up to programs like Windows Performance Analyzer to use pivot information in a Table Configuration to present a plugin's Table as a Pivot Table.

See also: Wikipedia Pivot Tables.

Plugin

A collection of one-or-more ProcessingSources that collectively create zero-or-more Tables and consist of zero-or-more DataCookers.

Processing Pipeline

A collection of DataCookers and SourceParsers that define a structured flow of data.

ProcessingSource

An entrypoint for a Plugin. A ProcessingSource

  1. Declares a human-readable name and description
  2. Defines the DataSource(s) it supports
  3. Creates the CustomDataProcessor that will process instances of supported DataSources
  4. Advertises the Table(s) that may be built in response to DataSources being processed

Projection

A function that maps a row index for a Table to a piece of data. Conceptually, a Projection is combined with a ColumnConfiguration to complete define a Table's Column: the ColumnConfiguration defines the name and metadata about a Column, and its associated Projection defines the Column's data.

SDK Driver

A program that utilizes the SDK and SDK plugins to process Data Sources and present information to users.

See also: Windows Performance Analyzer.

Simple Table

A Table variant that cannot participate in a Processing Pipeline and must be built by a CustomDataProcessor. Simple Tables should only be used if your plugin does not use DataCookers. However, since in most data-processing situations it is recommended to use DataCookers to architect your data-processing, it is recommended to use only standard Tables.

SourceDataCooker

A DataCooker that receives input from an associated SourceParser. A SourceDataCooker may also receive input from other SourceDataCookers enabled on the same SourceParser.

SourceParser

An object that a CustomDataProcessor tasks with parsing a DataSource into individual records. The records that a SourceParser emits begin a Processing Pipeline, wherein DataCookers further process data to be consumed by Tables.

Special Columns

Columns that all Tables may use in their TableConfiguration and denote special behavior. These columns are

  • PivotColumn: a column that marks the end of columns which should be pivoted about. All columns in a Table that appear before this Special Column are interpreted as Pivot Columns
  • GraphColumn: a column that marks the start of columns that can/should be graphed
  • LeftFreezeColumn: a column that marks the end of columns that should be frozen in GUIs
  • RightFreezeColumn: a column that marks the start of columns that should be frozen in GUIs

Table

A collection of one-or-more columns that contain data. Each column of a Table must consist of the same number of rows.

A Table may receive data from one-or-more DataCookers. A Table is also responsible for "building itself" by having a static Build method interacts with a TableBuilder.

TableBuilder

The object used to concretely construct Tables and Simple Tables. When a CustomDataProcessor is asked to build a Simple Table, or when a normal Table "builds itself," it will be given an instance of an ITableBuilder to add its Columns and TableConfigurations to.

Table Building Cycle

The standard process used to construct Tables. This process involves

  1. A user specifying which DataSource(s) to process
  2. CustomDataProcessor(s) being given the selected DataSources to process
  3. Simple Tables being built by these CustomDataProcessor(s)
  4. DataCooker(s) further processing data produced by any SourceParsers used by the CustomDataProcessor(s) referenced above
  5. Tables "building themselves" from the data produced by these DataCookers.

TableCommand

An action that can be called on a Table. Concretely, a TableCommand is a string => Func key-value pair where the key is the TableCommand's name and the value is a function to be called when the TableCommand is invoked.

A common use-case of TableCommands is creating DynamicTables

TableConfiguration

A pre-defined collection of properties for a Table. This includes, but is not limited to,

  • The order of Columns in the Table
  • An initial filter to apply to the Table
  • ColumnRoles for Columns in the table

VisibleDomainSensitiveProjection

A Projection that depends upon the visible subrange of values spanned by the Projection's Table's domain. For example, if a Table's domain is time-based (e.g. Timestamp-based), a VisibleDomainSensitiveProjection could be a Projection that reports the percent of time spent inside a method call relative to the timerange currently visible to the user.

Windows Performance Analyzer

An SDK Driver that can display Tables plugins create as Pivot Tables and graph data in various formats.