Installation

The packages provided below correspond to branches hosted on GitHub. The packages are updated through continuous integration via GitHub Actions for numerous Linux distributions. RPM-based distributions are hosted on openSUSE Build Service (OBS) while Debian-based distributions are hosted on Launchpad.

Here are the packages curated by OBS and Launchpad:

v3.1.0 to Current

  • geopm-service: Sets up and enables the geopm systemd service.

  • libgeopmd2: Provides the library that supports the PlatformIO interface.

  • python3-geopmdpy: Houses the implementation of geopmd, CLI utilities, and bindings for PlatformIO.

  • geopm-service-devel: Provides headers and man pages for C and C++ APIs supportable by libgeopmd2.

  • geopm-doc: Provides all GEOPM man pages.

v3.0.1

  • geopm-service: Sets up and enables the geopm systemd service.

  • libgeopmd2: Provides the library that supports the PlatformIO interface.

  • python3-geopmdpy: Houses the implementation of geopmd, CLI utilities, and bindings for PlatformIO.

  • geopm-service-devel: Provides headers and man pages for C and C++ APIs supportable by libgeopmd2.

Installation of geopm-service will involve the dependency packages: libgeopmd2, python3-geopmdpy and python3-dasbus. However, explicit installation is obligatory for anyone seeking to use geopm-service-devel or the docs packages.


GPU Support

In order to leverage the GEOPM Service’s support for GPUs, you must install the necessary libraries for either Intel GPUs (levelzero) or Nvidia GPUs (NVML).

Prerequisites for Level Zero

level-zero allows GEOPM to read metrics and enact controls from Intel GPUs. Currently, none of the Linux distributions supporting GEOPM provide this package upstream.

To install level-zero, use the one of the following:

For up-to-date distributions (e.g. SLES 15.4 and Ubuntu 22.04):

Once added your system’s OS appropriate package management repository, you can use yum, zypper, or apt to install the package.

Note

The level-zero-devel package is optional unless building GEOPM from source with GPU support.

Warning

In order to avoid a race condition that exists between the availability of the Level Zero interfaces and GEOPM, the kernel graphics driver that provides the backing for these interfaces, i915, must be loaded before the GEOPM systemd service starts. Otherwise no GPU signals nor controls will be available if the GEOPM systemd service starts before i915 has completed initialization.

The correct load order can be enforced via the systemd-modules-load service. Simply add a file in /etc/modules-load.d called i915.conf with the only contents being i915. This forces i915 to load before the GEOPM systemd service, and resolves the race condition.

The kernel command line can be modified instead for this purpose if modifying the file system is not an option. More information:

Prerequisites for NVML

To build with support for Nvidia’s GPUs please follow their installation guide for CUDA here:

Note

Source builds that use --enable-nvml require the following package to be installed: libnvidia-ml-dev


Download Repositories

The release-v3.1 branch tracks the v3.1 GEOPM release, including any potential hotfixes that could occur in the future. It captures the latest stable GEOPM release.

The release-v3.0 branch tracks the v3.0 GEOPM release, including any potential hotfixes that could occur in the future. It captures the previous stable GEOPM release.

The dev branch, however, presents the most up-to-date stable development. See below for download repository information for your Linux distribution.

SLES, openSUSE, and CentOS

When using the below links, it is preferable to click on your desired OS and follow the procedure for “Add repositoriy and install manually”. If you do this, installing the geopm-service package will automatically install the remaining dependencies and recommended packages (e.g. libgeopmd2, geopm-service-doc, etc.). If required for source builds, you still must manually install geopm-service-devel.

While you can download the binary packages directly and install through your package manager, you must specify all of the required packages at install time (i.e. geopm-service, libgeopmd2, python3-geopmdpy). Optionally you may install the following to enable source builds and documentation: geopm-service-devel, geopm-service-doc, libgeopmd-doc, and python3-geopmdpy-doc.

Note

You will not automatically pull updates and bug fixes unless the repository is added.

v3.1

v3.0

Development

Warning

Do not add more than one of the above repositories to your system package manager at the same time. Only add one, and ensure all GEOPM packages are completely removed from the system when changing GEOPM repo configuration in the package manager.

Ubuntu

There are 2 repositories that are maintained for GEOPM support on Ubuntu: one corresponding to the release-v3.1 branch while the other corresponds to the dev branch. Both are built with Nvidia GPU support only.

First, add the necessary upstream repository:

# ONLY DO ONE OF THE FOLLOWING add-apt-repository COMMANDS:

# Add the release repo:
$ sudo add-apt-repository ppa:geopm/release
# OR add the dev repo:
$ sudo add-apt-repository ppa:geopm/dev

Then pull all the current updates, install GEOPM, start/enable the service, and configure the initial access lists:

$ sudo apt update
$ apt install geopm-service libgeopmd-dev libgeopmd2 python3-geopmdpy
# Start and enable the service
$ sudo systemctl start geopm
$ sudo systemctl enable geopm
# Setup initial access: all users can access all signals and controls
$ sudo geopmaccess -a | sudo geopmaccess -w
$ sudo geopmaccess -ac | sudo geopmaccess -wc

For more information see:


What the Packages Don’t Include

Please note that the packages listed above do not offer the GEOPM Runtime features (e.g. geopmlaunch(1), geopm_prof(3), geopm_report(7), libgeopm.so and others.)

For information on how to install the GEOPM Runtime, see GEOPM Runtime.

For GEOPM features not included in these packages, build GEOPM from source. The best instructions for this process can be found in the developer build process within the developer guide. Keep in mind that you may need to git checkout a git tag (e.g. v3.0.0) to create a build based on a specific release.