Metadata-Version: 2.4
Name: pypipa
Version: 0.0.16
Summary: Platform Integrated Performance Analytics, PIPA
Project-URL: Documentation, https://github.com/ZJU-SPAIL/pipa#readme
Project-URL: Issues, https://github.com/ZJU-SPAIL/pipa/issues
Project-URL: Source, https://github.com/ZJU-SPAIL/pipa
Author-email: Benard Jiang <bernardjiang5@outlook.com>
License-Expression: MIT
License-File: LICENSE
Keywords: analytics,integrated,observability,performance,pipa,platform
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.10
Requires-Dist: capstone
Requires-Dist: fire>=0.6.0
Requires-Dist: grpcio
Requires-Dist: matplotlib
Requires-Dist: nbformat
Requires-Dist: networkx
Requires-Dist: pandarallel
Requires-Dist: pandas>=2.2.2
Requires-Dist: plotly
Requires-Dist: protobuf
Requires-Dist: psutil
Requires-Dist: pydot
Requires-Dist: pyelftools
Requires-Dist: pyyaml>=6.0.1
Requires-Dist: questionary>=2.0.1
Requires-Dist: requests
Requires-Dist: rich>=13.7.1
Requires-Dist: scipy
Requires-Dist: seaborn
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: build; extra == 'dev'
Requires-Dist: flake8; extra == 'dev'
Requires-Dist: grpcio-tools; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Description-Content-Type: text/markdown

# PIPA

PIPA (Progressive & Intelligent Performance Analytics) is a platform that aggregates a complete toolchain of performance data collection, processing, and analysis with
 advanced algorithms, enabling users to effortlessly obtain in - depth insights into the performance of their systems and applications. It bridges the gap between raw performance data and actionable information, allowing for quick identification of bottlenecks and optimization opportunities.


<div align="center">
    <img src="asset/logo.png" width="400" height="400">
</div>

PIPA (枇杷, loquat) is a local fruit of Zhejiang, China.
PIPA consists of three parts: loquat tree, flower and fruit, which represent the collecting & processing, analysis and conclusion of performance data respectively.

PIPA is still in the active development process, and the current development focus is on the loquat tree.

![GitHub License](https://img.shields.io/github/license/ZJU-SPAIL/pipa)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ZJU-SPAIL/pipa/main.yml)
![GitHub top language](https://img.shields.io/github/languages/top/ZJU-SPAIL/pipa)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Coverage Status](https://coveralls.io/repos/github/ZJU-SPAIL/pipa/badge.svg?branch=main)](https://coveralls.io/github/ZJU-SPAIL/pipa?branch=main)


## Features

- **Data Collecting**: PIPA can collect data from a variety of sources, using tools like perf, sar, and more. It supports multiple platforms including x86_64, ARM, and RISC-V, making it versatile and adaptable. Currently PIPA is capable of collecting and parsing perf and sar data, providing detailed performance metrics.
- **Script Generation**: To reduce the noise generated by the Python runtime, PIPA can generate scripts that collect performance data. 
- **Data Processing**: PIPA can process the collected performance data, including alignment and segmentation, to serve meaningful analysis.
- **Data Visualization**: PIPA can visualize based on the performance data collected to provide intuitive insights.
- **Data Analytics**: PIPA will integrate SPAIL's performance methodology and models to provide meaningful analysis and reveal software and hardware bottlenecks.

## Preparation

```pipa``` needs to run on ```python 3```, and you may need to install ```venv``` (virtual environemnt) package to isolate ```pipa``` from other python projects, prior to that, you also need to have ```pip``` installed on your computer.

### Install PIP
Here is a common way to install ```pip``` on a computer without any package management tool:
#### 1. Download get-pip.py:
Download the [get-pip.py](https://bootstrap.pypa.io/get-pip.py) script.
#### 2. Open a Terminal/Command Prompt:
Open a terminal on Linux or macOS, or a command prompt on Windows.
#### 3. Navigate to the Download Directory:
Use the ```cd``` command to navigate to the directory where you saved get-pip.py.
#### 4. Run the Script:
Execute the script using the appropriate Python command:
- Linux/macOS:
  ```sh
  python3 get-pip.py
  ```
- Windows:
  > If Python 3 is the default
  ```sh
  python get-pip.py
  ```
  > If Python 3 is explicitly specified
  ```sh
  python3 get-pip.py
  ```
### Install VENV

Then you can install ```venv``` with a single command line:
```sh
pip install venv
```
### Setup and Use VENV

Please find [more instructions](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) about how to setup and use virtual environment from the python official website if you are new to it.

## Installation

PIPA can be easily installed using pip:

```sh
pip install PyPIPA
```


## Quickstart

After installation, you can start using PIPA to collect, integrate, and analyze your data. 

To generate a script that collect performance data, you only need to use:

```sh
pipa generate
```
Then you can complete the interaction through the CLI to provide the necessary parameters. You can choose to start the workload with perf, or you can choose to observe the system directly.

For the detailed usage, please check [user guide](doc/User-guide.md).

## Build

To build PIPA, you can use the `python` command with the `build` module:  `python -m build`, we use `hatchling` as the build backend.

## LICENSE

PIPA is distributed under the terms of the [MIT License](LICENSE).


## Contributing

Contributions to PIPA are always welcome. Whether it's feature enhancements, bug fixes, or documentation, your contributions are greatly appreciated.
