From 3dbeab2c67b0d4a12b8c83d321f35b691ca38b5b Mon Sep 17 00:00:00 2001 From: "Park, Peter" Date: Fri, 14 Mar 2025 10:58:46 -0400 Subject: [PATCH] [SWDEV-519170] Docker container config documentation (#178) * add docker container guide * add example * update index, README, and _toc [ROCm/amdsmi commit: 547ed49efbcd2c454227698cb91d9865c359e5f9] --- projects/amdsmi/README.md | 15 +++++++ .../docker-run-example.jpg | Bin 0 -> 63360 bytes .../docs/how-to/setup-docker-container.md | 39 ++++++++++++++++++ projects/amdsmi/docs/index.md | 1 + projects/amdsmi/docs/sphinx/_toc.yml.in | 2 + 5 files changed, 57 insertions(+) create mode 100644 projects/amdsmi/docs/data/how-to/setup-docker-container/docker-run-example.jpg create mode 100644 projects/amdsmi/docs/how-to/setup-docker-container.md diff --git a/projects/amdsmi/README.md b/projects/amdsmi/README.md index cd9c306b41..065d1a5d5b 100644 --- a/projects/amdsmi/README.md +++ b/projects/amdsmi/README.md @@ -139,6 +139,21 @@ Check out [Getting to Know Your GPU: A Deep Dive into AMD SMI -- ROCm Blogs](https://rocm.blogs.amd.com/software-tools-optimization/amd-smi-overview/README.html) for a rundown. +### Docker container configuration + +To ensure proper functionality of AMD SMI within a Docker container, the +following configuration options must be included. These settings are +particularly important for managing memory partitions, as partitioning depends +on loading and unloading kernel drivers. + +- `--cap-add=SYS_MODULE` + +- `-v /lib/modules:/lib/modules` + +See [Using AMD SMI in a Docker +container](https://rocm.docs.amd.com/projects/amdsmi/en/latest/how-to/setup-docker-container.html) +for more information. + ## Building AMD SMI This section describes the prerequisites and steps to build AMD SMI from source. diff --git a/projects/amdsmi/docs/data/how-to/setup-docker-container/docker-run-example.jpg b/projects/amdsmi/docs/data/how-to/setup-docker-container/docker-run-example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1185283bd5cda366af7a73bc3c578a21ed627742 GIT binary patch literal 63360 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�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 literal 0 HcmV?d00001 diff --git a/projects/amdsmi/docs/how-to/setup-docker-container.md b/projects/amdsmi/docs/how-to/setup-docker-container.md new file mode 100644 index 0000000000..bd9d2072b2 --- /dev/null +++ b/projects/amdsmi/docs/how-to/setup-docker-container.md @@ -0,0 +1,39 @@ +--- +myst: + html_meta: + "description lang=en": "Docker container configuration and setup procedures for AMD SMI." + "keywords": "api, smi, lib, system, management, interface, ROCm, docker, systemd, modprobe" +--- + +# Using AMD SMI in a Docker container + +To ensure proper functionality of AMD SMI within a Docker container, the +following configuration options must be included. These settings are +particularly important for managing memory partitions, as partitioning depends +on loading and unloading drivers (with `systemd` dependencies): + +* `--cap-add=SYS_MODULE` + + This option adds the `SYS_MODULE` capability to the container, allowing it to + load and interact with kernel modules. + + ```{note} + Granting `SYS_MODULE` increases the container's privileges and reduces + isolation from the host. Use this option only with trusted containers and + images. + ``` + +* `-v /lib/modules:/lib/modules` + + By mounting the `/lib/modules/` directory into the container, the container + gains access to the host's kernel modules, allowing it to load and interact + with them. Without this access, operations requiring module loading like + memory partitioning would fail. + +For example: + +```{image} ../data/how-to/setup-docker-container/docker-run-example.jpg +:alt: Command line example of running a Docker container for AMD SMI +:align: center +:width: 100% +``` diff --git a/projects/amdsmi/docs/index.md b/projects/amdsmi/docs/index.md index 3d002be3ae..2c828caa22 100644 --- a/projects/amdsmi/docs/index.md +++ b/projects/amdsmi/docs/index.md @@ -32,6 +32,7 @@ AMD SMI is the successor to . * [Python library usage](./how-to/amdsmi-py-lib.md) * [Go library usage](./how-to/amdsmi-go-lib.md) * [CLI tool usage](./how-to/amdsmi-cli-tool.md) +* [Use AMD SMI in a Docker container](./how-to/setup-docker-container.md) ::: :::{grid-item-card} Reference diff --git a/projects/amdsmi/docs/sphinx/_toc.yml.in b/projects/amdsmi/docs/sphinx/_toc.yml.in index 5c8ed2a316..5ef2a8a2d5 100644 --- a/projects/amdsmi/docs/sphinx/_toc.yml.in +++ b/projects/amdsmi/docs/sphinx/_toc.yml.in @@ -19,6 +19,8 @@ subtrees: title: Go library usage - file: how-to/amdsmi-cli-tool.md title: CLI tool usage + - file: how-to/setup-docker-container.md + title: Use AMD SMI in a Docker container - caption: Reference entries: