From 34b5d857d1dcfb4acc7056e2839c1fa22098b753 Mon Sep 17 00:00:00 2001 From: mahendrapaipuri Date: Wed, 11 Oct 2023 15:19:25 +0200 Subject: [PATCH] docs: :memo: Add docs --- CONTRIBUTING.md | 138 ++++++++++++++++++++++++++++++++++++++ README.md | 98 +++++++++++++++++---------- RELEASE.md | 6 ++ doc/frontend-settings.png | Bin 0 -> 68927 bytes doc/power-usage.gif | Bin 0 -> 12874 bytes style/base.css | 2 +- 6 files changed, 207 insertions(+), 37 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 RELEASE.md create mode 100644 doc/frontend-settings.png create mode 100644 doc/power-usage.gif diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b2de4d7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,138 @@ +# Contributing + +Contributions to jupyter-power-usage are highly welcome! It follows closely the [Jupyter contributor guide](https://docs.jupyter.org/en/latest/contributing/content-contributor.html). + +## Setting up a development environment + +We recommend using [pipenv](https://docs.pipenv.org/) to make development easier. + +Alternatively, you can also use `conda` or `mamba` to create new virtual environments. + +Clone the git repository: + +```bash +git clone https://github.com/mahendrapaipuri/jupyter-power-usage +``` + +Create an environment that will hold our dependencies: + +```bash +cd jupyter-power-usage +pipenv --python 3.8 +``` + +With conda: + +```bash +conda create -n jupyter-power-usage -c conda-forge python +``` + +Activate the virtual environment that pipenv created for us + +```bash +pipenv shell +``` + +With conda: + +```bash +conda activate jupyter-power-usage +``` + +Do a dev install of jupyter-power-usage and its dependencies + +```bash +pip install --editable '.[dev]' +``` + +## JupyterLab extension + +The JupyterLab extension for `jupyter-power-usage` follows the common patterns and tooling for developing extensions. + +```bash +# activate the environment (conda, pipenv) + +# install the package in development mode +python -m pip install -e ".[dev]" + +# link your development version of the extension with JupyterLab +jupyter labextension develop . --overwrite + +# Rebuild extension Typescript source after making changes +jlpm run build +``` + +You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. + +```bash +# Watch the source directory in one terminal, automatically rebuilding when needed +jlpm run watch +# Run JupyterLab in another terminal +jupyter lab +``` + +With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). + +To check the extension is correctly installed, run: + +```bash +jupyter labextension list +``` + +It should show something like the following: + +```bash +JupyterLab v3.6.6 +/path/to/env/share/jupyter/labextensions + @mahendrapaipuri/jupyter-power-usage v0.1.0 enabled OK +``` + +## Estimating emission factor + +Currently only French real time emission factor is implemented in the extension to estimation eCO2 emissions based on power usage. For the rest of the countries a constant emission factor that can be configurable is used. + +API requests for the emission factor is made from the frontend extension rather than backend server. The rationale is that the machine where backend server is running might not have internet connectivity. Also, these sort of API requests are rate limited and hence, making requests from individual user browser is more appropriate. + +In order to add support for other countries, users need to make changes in the file [emissionsHandler.ts](./src/emissionsHandler.ts) as follows: + +- Create a new namespace with name of the country. +- Add all the necessary logic to get the emission factor in g/kWh for the country in its namespace. +- Finally, modify `getEmissions` function in [emissionsHandler.ts](./src/emissionsHandler.ts) to get the emission factor of the country. + +We need to add the country code in the enum section of `countryCode` object in [plugin.json](./schema/plugin.json). This enables users to use this country specific emission factor to estimate emissions. + + +## pre-commit + +`jupyter-power-usage` has adopted automatic code formatting so you shouldn't need to worry too much about your code style. +As long as your code is valid, +the pre-commit hook should take care of how it should look. Here is how to set up pre-commit hooks for automatic code formatting, etc. + +```bash +pre-commit install +``` + +You can also invoke the pre-commit hook manually at any time with + +```bash +pre-commit run +``` + +which should run any autoformatting on your code +and tell you about any errors it couldn't fix automatically. +You may also install [black integration](https://github.com/ambv/black#editor-integration) +into your text editor to format code automatically. + +If you have already committed files before setting up the pre-commit +hook with `pre-commit install`, you can fix everything up using +`pre-commit run --all-files`. You need to make the fixing commit +yourself after that. + +## Tests + +It's a good idea to write tests to exercise any new features, +or that trigger any bugs that you have fixed to catch regressions. `pytest` is used to run the test suite. You can run the tests with in the repo directory: + +```bash +python -m pytest +``` diff --git a/README.md b/README.md index 3144013..9a1d184 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,87 @@ -# jupyterlab-topbar-message +# jupyter-power-usage -A banner message to display on the Jupyterlab Topbar. It is similar to [jupyterlab-topbar-text](https://github.com/jupyterlab-contrib/jupyterlab-topbar-text) project. The difference is that the message is immutable and it can be set in the backend server. +![Screencast for power usage](./doc/power-usage.gif) -It is mostly useful if the sysadmins want to disply a specific message to the users while spawning the JupyterLab servers using JupyterHub. They can implement the logic in the spawner and needs to set a environment variable `JUPYTERLAB_TOPBAR_MESSAGE` in the spawner environment. +The objective of this extension is to display power usage of the CPU and/or GPU on which jupyter server is running. Power usage is estimated using [Running Average Power Limit (RAPL)](https://web.eece.maine.edu/~vweaver/projects/rapl/) metrics that are available on Intel processors manufactured after 2012 (since broadwell). It is available on latest AMD processors as well. For the case of GPUs, currently only nVIDIA GPUs are supported and power usage is gathered from `nvidia-smi` tool. -For instance, it can be as simple as adding a welcome message to a user, `bob` as `JUPYEERLAB_TOPBAR_MESSAGE="Welcome Bob"`. +Additionally, the extension is capable of estimating equivalent CO2 emissions. Emissions are estimated based on the current power usage and a emission factor that gives equivalent grams of CO2 power consumed. Currently, a [real time emission factor](https://www.rte-france.com/en/eco2mix/co2-emissions) is implemented for France and for the rest a constant configurable factor of 475 gCO2.eq/kWh is used. -## Requirements +The metrics are displayed in the top bar of JupyterLab and are updated at a configurable interval. The default interval is 5 seconds. RAPL can enforce power limit so as nVIDIA GPUs. If those power limits are enabled and available, they will be displayed in the indicators. -- JupyterLab >= 3.0 +--- +**NOTE** -## Install +The extension works only on Linux that exposes RAPL metrics. Starting from kernel 5.4, RAPL metrics are accessible [only for root](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.4.77&id=19f6d91bdad42200aac557a683c17b1f65ee6c94). In this case, the user needs to add read permissions on `/sys/fs/powercap` directory to be able to display power usage indicators in JupyterLab. -```bash -pip install git+https://gitlab.com/idris-cnrs/jupyter/jupyterlab/jupyterlab-topbar.git#subdirectory=packages/message-extension -``` +If the JupyterLab is running inside a container or VM, ensure that `/sys/fs/powercap` file system exists. If it does not, extension will not work. -## Contributing +The extension is not available for Notebook < 6. It supports JupyterLab >= 3 and Notebook >= 7. -### Development install +The extension's architecture closes follows the [jupyter-resource-usage](https://github.com/jupyter-server/jupyter-resource-usage) extension and all the credit goes to the contributors and maintainers of the above stated extension. -Note: You will need NodeJS to build the extension package. +--- -The `jlpm` command is JupyterLab's pinned version of -[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use -`yarn` or `npm` in lieu of `jlpm` below. +## Installation -```bash -# Clone the repo to your local environment -# Change directory to the jupyterlab-toolbar-buttons directory -# Install package in development mode -pip install -e . -# Link your development version of the extension with JupyterLab -jupyter labextension develop . --overwrite -# Rebuild extension Typescript source after making changes -jlpm run build -``` +### JupyterLab 3.x -You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. +You should install the version `<1.0.0` for JupyterLab 3.x compatibility. ```bash -# Watch the source directory in one terminal, automatically rebuilding when needed -jlpm run watch -# Run JupyterLab in another terminal -jupyter lab +pip install 'jupyter-power-usage<1.0.0' ``` -With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). +### JupyterLab 4.x and Notebook 7.x -By default, the `jlpm run build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command: +You should install the latest version for JupyterLab 4.x and Notebook 7.x compatibility. ```bash -jupyter lab build --minimize=False +pip install jupyter-power-usage ``` -### Uninstall +The extension **does not support** Notebook < 7. + +## Configuration + +### Server side config + +#### Measurement Scope + +Currently the extension supports different measurement scopes: + +- `process`: Power usage for current process and its children will be reported +- `user`: Power usage for current user processes will be reported +- `system`: Power usage for entire system will be reported. + +By default `process` scope is used. The user can change it by CLI flag `--PowerUsageDisplay.measurement_scope` to `jupyter lab` command. Alternatively, it can be configured in `jupyter_server_config.json` in [Jupyter config directory](https://docs.jupyter.org/en/latest/use/jupyter-directories.html#configuration-files). + +### Frontend extension config + +![Frontend extension settings](./doc/frontend-settings.png) + +The frontend extension settings can be accessed by `Settings -> Advanced Settings -> Power Usage Monitor` in JupyterLab. Important settings are: + +- `Refresh Rate`: Frequency at which power usage is updated in the JupyterLab. Do not use too small intervals as it will end up making too many API calls to update metrics. + +- `CPU label` and `GPU label` settings are self explanatory. + +**Emissions Estimation Settings** + +- `Country code`: Currently only data for France is supported. The realtime emission factor from [RTE eCO2 mix](https://www.rte-france.com/en/eco2mix/co2-emissions). We encourage users to add support for other countries. Please check [`CONTRIBUTING.md`](CONTRIBUTING.md) on how to do it. If your country is not available in the list, leave it blank. + +- `Refresh rate`: This defines how often the emission factor is updated in ms. For [RTE eCO2 mix](https://www.rte-france.com/en/eco2mix/co2-emissions) data, it is updated every 30 min and has a rate limit of 50000 API requests per month. + +- `Emission factor`: This constant emission factor is used in the estimation of emissions when country specific data is unavailable. + +## Contributing + +If you would like to contribute to the project, please read the [`CONTRIBUTING.md`](CONTRIBUTING.md). The `CONTRIBUTING.md` file +explains how to set up a development installation and how to run the test suite. + +## Uninstall ```bash -pip uninstall jupyterlab_topbar_message +pip uninstall jupyter_power_usage ``` + +This will uninstall python package and all the frontend related assets. diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..7359f1e --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,6 @@ +# Making a new release of `jupyter-resource-usage` + +## Automated Releases with `jupyter_releaser` + +The recommended way to make a release is to use +[`jupyter_releaser`](https://jupyter-releaser.readthedocs.io/en/latest/). diff --git a/doc/frontend-settings.png b/doc/frontend-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..2837271174d87fd1a428045496722da78eee3cfd GIT binary patch literal 68927 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 literal 0 HcmV?d00001 diff --git a/doc/power-usage.gif b/doc/power-usage.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ca0c40ed7c7126aa0ea28f2276d424d8522e141 GIT binary patch literal 12874 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