2021-04-07 00:35:23 +03:00
# Microsoft Performance Toolkit SDK
2020-07-27 18:42:39 +03:00
2021-07-02 19:48:20 +03:00
[![main build status ](https://github.com/microsoft/microsoft-performance-toolkit-sdk/actions/workflows/main_build_status.yml/badge.svg )](https://github.com/microsoft/microsoft-performance-toolkit-sdk/actions/workflows/main_build_status.yml)
[![main tests status ](https://github.com/microsoft/microsoft-performance-toolkit-sdk/actions/workflows/main_tests_status.yml/badge.svg )](https://github.com/microsoft/microsoft-performance-toolkit-sdk/actions/workflows/main_tests_status.yml)
2021-04-07 00:35:23 +03:00
The Microsoft Performance Toolkit is a collection of cross-platform tools developers can use to create
and extend performance analysis applications. It serves as the runtime of the [Windows Performance Analyzer ](https://docs.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-analyzer ),
a Windows program included in the [Windows Performance Toolkit ](https://docs.microsoft.com/en-us/windows-hardware/test/wpt/ ).
2022-02-05 03:12:16 +03:00
By using the Microsoft Performance Toolkit SDK, Windows Performance Analyzer - or any performance analysis application -
2021-04-07 00:35:23 +03:00
can be configured to process and display performance data from arbitrary sources.
The Microsoft Performance Toolkit SDK provides two key functionalities:
1) Facilitating the development of "SDK plugins," which provide the SDK with logic for creating structured,
tabular data from arbitrary data sources such as Common Trace Format (`.ctf`) files
2) Allowing developers to extend an existing SDK plugin without access to its source code through an efficient,
feature-rich data-processing pipeline
These two functionalities are not mutually exclusive, and plugins may access data in another plugin's (or, commonly, its own)
2022-02-02 03:06:56 +03:00
data-processing pipeline when creating tables for a given data source.
2021-04-07 00:35:23 +03:00
2022-02-05 03:12:16 +03:00
For help with getting started and developing SDK plugins, refer to our [documentation ](./documentation/README.md ).
2021-04-07 00:35:23 +03:00
## In this Repository
* `devel-template` : a work-in-progress .NET template for creating SDK plugins
* `documentation` : instructions for how to utilize the SDK and create SDK plugins
* `samples` : example SDK plugins' source code
* `src` : the source code for the SDK
## Projects in the SDK Solution
* `Microsoft.Performance.SDK` : Software library for building SDK plugins
2022-02-02 01:19:54 +03:00
* `Microsoft.Performance.SDK.Runtime` : Runtime for loading and processing data from plugins. Plugins should not depend on this library
* `Microsoft.Performance.SDK.Runtime.NetCoreApp` : .NETCore-specific functionality of `Microsoft.Performance.SDK.Runtime`
2021-04-07 00:35:23 +03:00
* `Microsoft.Performance.SDK.Toolkit.Engine` : Interface for programmatically manipulating, cooking, and accessing data from SDK plugins
* `Microsoft.Performance.SDK.Tests` : Tests for `Microsoft.Performance.SDK`
* `Microsoft.Performance.SDK.Runtime.Tests` : Tests for `Microsoft.Performance.SDK.Runtime`
* `Microsoft.Performance.SDK.Runtime.NetCoreApp.Tests` : Tests for `Microsoft.Performance.SDK.Runtime.NetCoreApp`
* `Microsoft.Performance.SDK.Toolkit.Engine.Tests` : Tests for `Microsoft.Performance.SDK.Toolkit.Engine`
2022-02-02 01:19:54 +03:00
* `Microsoft.Performance.SDK.Testing` : General utilities for authoring tests
* `Microsoft.Performance.SDK.Testing.SDK` : SDK-specific utilities for authoring tests
2021-04-07 00:35:23 +03:00
* `PluginConfigurationEditor` : *description coming soon*
2021-11-16 19:07:19 +03:00
## Known SDK Driver Plugin Compatibility
This repository tracks which versions of the SDK are compatibile with certain SDK drivers such as Windows Performance Analyzer. This information can be used to determine which version of an SDK driver should be used when loading plugins compiled against a specific SDK version.
2022-02-05 03:12:16 +03:00
This information is listed in the [known SDK driver compatibility lists ](./documentation/Known-SDK-Driver-Compatibility/README.md ) document.
2021-11-16 19:07:19 +03:00
2022-02-02 01:19:54 +03:00
## Getting Started
2022-02-05 03:12:16 +03:00
Refer to the [documentation folder ](./documentation/README.md ) for help with creating SDK plugins.
2022-02-02 01:19:54 +03:00
2021-04-07 00:35:23 +03:00
## Coming Soon
Team is actively working to provide better documentation, more samples, and several in-depth tutorials.
2020-07-27 18:42:39 +03:00
2020-09-18 23:15:32 +03:00
## How to Engage, Contribute, and Provide Feedback
2020-07-27 18:42:39 +03:00
2021-04-07 00:35:23 +03:00
The Performance ToolKit team encourages [contributions ](CONTRIBUTING.md ) through both issues and PRs.
2020-09-18 23:15:32 +03:00
### Community
2021-04-07 00:35:23 +03:00
This project uses the [Microsoft Open Source Code of Conduct. ](https://opensource.microsoft.com/codeofconduct ).
2020-09-18 23:15:32 +03:00
## Trademarks
2020-10-20 01:00:32 +03:00
This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services. Authorized use of these trademarks or logos is subject to and must follow Microsoft’ s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
2020-09-18 23:15:32 +03:00
## Security
2021-04-07 00:35:23 +03:00
To report a security issue, please follow the guidance here: [Security ](SECURITY.md ).
2020-09-18 23:15:32 +03:00
## Licenses
2021-04-07 00:35:23 +03:00
All code in this repository is licensed under the [MIT License ](LICENSE.txt ).
2020-07-27 18:42:39 +03:00