Requirements
The GEOPM Service library depends on several external dependencies for enabling certain features. However, most of them are readily available in standard Linux distributions. If you intend to use only the GEOPM Service, all the required dependencies can be found on this page. For users of the GEOPM Runtime, refer to its dedicated documentation here for the necessary external dependencies.
Build Requirements
To run the GEOPM Service build, the packages listed below are required. All these packages are available in standard Linux distributions and can be installed using commands specific to RPM-based or Debian-based Linux distributions.
Upstream RHEL and CentOS Package Requirements
yum install gcc-c++ unzip libtool \
python3 python3-devel python3-gobject-base \
python3-sphinx python3-sphinx_rtd_theme \
python3-jsonschema python3-psutil python3-cffi \
python3-setuptools python3-dasbus \
systemd-devel liburing-devel gobject-introspection
Upstream SLES and OpenSUSE Package Requirements
zypper install gcc-c++ unzip libtool \
python3 python3-devel python3-gobject \
python3-Sphinx python3-sphinx_rtd_theme \
python3-jsonschema python3-psutil python3-cffi \
python3-setuptools python3-dasbus \
systemd-devel liburing-devel gobject-introspection
Upstream Ubuntu Package Requirements
apt install g++ unzip libtool autoconf unzip \
python3 liburing-dev python3-gi python3-yaml \
python3-sphinx python3-sphinx-rtd-theme \
python3-jsonschema python3-psutil python3-cffi \
python3-setuptools python3-dasbus libsystemd-dev \
liburing-dev
Systemd Library Requirement
The systemd-devel
package can be omitted in the building sequence with the
--disable-systemd
option. Note that this is mandatory for older Linux
distributions like CentOS 7. However, disabling libsystemd
means the
user-space loaded PlatformIO interface won’t access signals or controls from the
GEOPM Systemd Service. The --disable-systemd
option doesn’t impact the GEOPM
user unless the GEOPM Systemd Service is installed and active on the running
Linux OS.
Sphinx Requirement
The Sphinx python package is essential for generation of man pages and HTML
documentation. The source and build infrastrucure for this documentation is
located in the docs
subdirectory of the Git repository. The Sphinx
requirement can be satisfied by PIP if there are issues installing the OS
distribution packages:
python3 -m pip install --user sphinx sphinx_rtd_theme sphinxemoji
export PATH=$HOME/.local/bin:$PATH
These commands install Sphinx into your user’s local Python packages and add the
local Python package bin directory to your path for access to the
sphinx-build
script.
The MSR Driver
Access to MSRs enhances the capabilities of the GEOPM Access Service by providing additional hardware telemetry and controls. While the GEOPM Access Service can function without access to MSRs, it provides a limited set of CPU features. For the GEOPM Runtime to function correctly, these MSR-related CPU features are necessary. Hence, MSR support is a hard requirement for the GEOPM Runtime which may be relaxed in a future release.
One of two drivers may be used by the GEOPM Access Service to enable the MSR features: the standard Linux (in-tree) MSR driver or the msr-safe kernel driver maintained by LLNL. The msr-safe driver is preferred by GEOPM if both kernel modules are loaded because it provides low latency interface for reading and writing many MSR values at once through an ioctl(2) system call, possibly improving the performance of GEOPM Runtime or other MSR usages.
The msr-safe kernel driver source code can be found here. It’s distributed with the OpenSUSE Hardware Repository and can be installed from the RPMs provided there. For more information about the necessary configuration of msr-safe see: Configuring msr-safe and Admin Configuration. Note that subsequent to v1.7.0 of msr-safe, it is required that the msr-safe allow list be configured prior to starting the GEOPM Access Service.
In the absence of the msr-safe kernel driver, users may access MSRs using the standard Linux MSR driver. This can be loaded with the command:
modprobe msr
The standard MSR driver be loaded to enable MSR access through the GEOPM Systemd Service when msr-safe is not installed.