IPython extension for monitoring cell performance
Project description
JUmPER: Jupyter meets Performance
JUmPER brings performance engineering to Jupyter. It consists of the two repositories:
- JUmPER Ipython extension (this repository)
This extension is for real-time performance monitoring in IPython environments and Jupyter notebooks. It allows you to gather performance data on CPU usage, memory consumption, GPU utilization, and I/O operations for individual cells and present it in the notebook/IPython session either as text report or as a plot.
- Score-P Jupyter kernel Python (https://github.com/score-p/scorep_jupyter_kernel_python)
The Score-P kernel allows you to instrument, and trace or profile your Python code in Jupyter using Score-P for in-detail performance analysis tasks. The Score-P kernel and the IPython extension can be seamlessly integrated.
Table of Content
Installation
pip install jumper_extension
or install it from source:
pip install .
Quick Start
Load the Extension
%load_ext jumper_extension
Basic Usage
-
Start monitoring:
%perfmonitor_start [interval]
intervalis an optional argument for configuring frequency of performance data gathering (in seconds), set to 1 by default. This command launches a performance monitoring daemon. -
Run your code
-
View performance report:
%perfmonitor_perfreport %perfmonitor_perfreport --cell 2:5 --level user
Will print aggregate performance report for entire notebook execution so far:
---------------------------------------- Performance Report ---------------------------------------- Duration: 11.08s Metric AVG MIN MAX TOTAL ----------------------------------------------------------------- CPU Util (Across CPUs) 10.55 3.86 45.91 - Memory (GB) 7.80 7.74 7.99 15.40 GPU Util (Across GPUs) 27.50 5.00 33.00 - GPU Memory (GB) 0.25 0.23 0.32 4.00Options:
--cell RANGE: Specify cell range (e.g.,5,2:8,:5)--level LEVEL: Choose monitoring level (process,user,system,slurm)
-
Plot performance data:
%perfmonitor_plot
Opens an interactive plot with widgets to explore performance metrics over time, filter by cell ranges, and select different monitoring levels.
-
View cell execution history:
%cell_history
Shows an interactive table of all executed cells with timestamps and durations.
-
Stop monitoring:
%perfmonitor_stop
-
Export data for external analysis:
%perfmonitor_export_perfdata my_performance.csv --level system %perfmonitor_export_cell_history my_cells.json
Export performance measurements for entire notebook and cell execution history with timestamps, allowing you to project measurements onto specific cells.
Metrics Collection
Performance Monitoring Levels
The extension supports four different levels of metric collection, each providing different scopes of system monitoring:
- Process: Metrics for the current Python process only
- User: Metrics for all processes belonging to the current user
- System: System-wide metrics across all processes and users (if visible)
- Slurm: Metrics for processes within the current SLURM job
Collected Metrics
| Metric | Description |
|---|---|
cpu_util |
CPU utilization percentage |
memory |
Memory usage in GB |
io_read_count |
Total number of read I/O operations |
io_write_count |
Total number of write I/O operations |
io_read_mb |
Total data read in MB |
gpu_util |
GPU compute utilization percentage across GPUs |
gpu_band |
GPU memory bandwidth utilization percentage |
gpu_mem |
GPU memory usage in GB across GPUs |
io_write_mb |
Total data written in MB |
Note: GPU metrics require NVIDIA GPUs with pynvml library. Memory limits are automatically detected from SLURM cgroups when available.
Available Commands
| Command | Description |
|---|---|
%perfmonitor_fast_setup |
Fast setup of JUmPER. Starts monitor (1.0s interval), enables perfreports (--level process) and interactive plots (ipympl) |
%perfmonitor_help |
Show all available commands with examples |
%perfmonitor_resources |
Display available hardware resources |
%perfmonitor_start [interval] |
Start monitoring (default: 1 second interval) |
%perfmonitor_stop |
Stop monitoring |
%perfmonitor_perfreport [--cell RANGE] [--level LEVEL] |
Show performance report for specific cell range and monitoring level |
%perfmonitor_plot |
Interactive plot with widgets for exploring performance data |
%cell_history |
Show execution history of all cells with interactive table |
%perfmonitor_enable_perfreports |
Auto-generate reports after each cell |
%perfmonitor_disable_perfreports |
Disable auto-reports |
%perfmonitor_export_perfdata [--file filename] [--level LEVEL] |
Export performance data to dataframe. Export performance data to CSV if --file is set. |
%perfmonitor_export_cell_history [filename] |
Export cell history to CSV/JSON |
Contribution and Citing:
PRs are welcome. Feel free to use the pre-commit hooks provided in .githooks
If you publish some work using the kernel, we would appreciate if you cite one of the following papers:
Werner, E., Rygin, A., Gocht-Zech, A., Döbel, S., & Lieber, M. (2024, November).
JUmPER: Performance Data Monitoring, Instrumentation and Visualization for Jupyter Notebooks.
In SC24-W: Workshops of the International Conference for High Performance Computing, Networking, Storage and Analysis (pp. 2003-2011). IEEE.
https://www.doi.org/10.1109/SCW63240.2024.00250
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jumper_extension-0.3.4.tar.gz.
File metadata
- Download URL: jumper_extension-0.3.4.tar.gz
- Upload date:
- Size: 60.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d6b1703d77241094de39ec67afc6be282c7c720c134c80bee4fcace92030ace
|
|
| MD5 |
b64092943c0d658a1e4a6caec88785aa
|
|
| BLAKE2b-256 |
0b491b1223e6803f79009e1cc804f7061b600a43fa7e7e3ec8b2178189f2e90d
|
Provenance
The following attestation bundles were made for jumper_extension-0.3.4.tar.gz:
Publisher:
publish.yml on ScaDS/jumper_ipython_extension
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jumper_extension-0.3.4.tar.gz -
Subject digest:
3d6b1703d77241094de39ec67afc6be282c7c720c134c80bee4fcace92030ace - Sigstore transparency entry: 576852299
- Sigstore integration time:
-
Permalink:
ScaDS/jumper_ipython_extension@9455e4e0dbb9019dc56c6b69c8684c754b1b960e -
Branch / Tag:
refs/tags/v0.3.4 - Owner: https://github.com/ScaDS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9455e4e0dbb9019dc56c6b69c8684c754b1b960e -
Trigger Event:
push
-
Statement type:
File details
Details for the file jumper_extension-0.3.4-py3-none-any.whl.
File metadata
- Download URL: jumper_extension-0.3.4-py3-none-any.whl
- Upload date:
- Size: 58.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fae0ab6adf442fc87c87fba4b80996fc41d47f0dbbedf1699778cca4be53e13
|
|
| MD5 |
4c6d1c0319de55bf31042e417f575fb8
|
|
| BLAKE2b-256 |
392056bfa429c482f07a2f344a2d02343977ba2872222678ce590662347e0d61
|
Provenance
The following attestation bundles were made for jumper_extension-0.3.4-py3-none-any.whl:
Publisher:
publish.yml on ScaDS/jumper_ipython_extension
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jumper_extension-0.3.4-py3-none-any.whl -
Subject digest:
2fae0ab6adf442fc87c87fba4b80996fc41d47f0dbbedf1699778cca4be53e13 - Sigstore transparency entry: 576852310
- Sigstore integration time:
-
Permalink:
ScaDS/jumper_ipython_extension@9455e4e0dbb9019dc56c6b69c8684c754b1b960e -
Branch / Tag:
refs/tags/v0.3.4 - Owner: https://github.com/ScaDS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9455e4e0dbb9019dc56c6b69c8684c754b1b960e -
Trigger Event:
push
-
Statement type: