Skip to content

Commit 4269c10

Browse files
authored
Add bare metal runner usage guidance (#3485)
Signed-off-by: trask <trask.stalnaker@gmail.com>
1 parent 5a37c87 commit 4269c10

2 files changed

Lines changed: 75 additions & 3 deletions

File tree

assets.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,11 @@ Admins: [@open-telemetry/admins](https://github.com/orgs/open-telemetry/teams/ad
8181

8282
#### Bare metal runners
8383

84-
Access to bare metal runners for benchmarking is available to repositories on request
85-
(open a community issue),
86-
which will give access to the following GitHub-hosted runner:
84+
Bare metal runners are available for benchmarking workloads.
85+
See [How to use an Oracle bare metal runner](docs/how-to-use-bare-metal-runner.md)
86+
for how to request access and use the runner.
87+
88+
Runner labels:
8789

8890
- `oracle-bare-metal-64cpu-512gb-x86-64` (Oracle Linux 8)
8991
- `oracle-bare-metal-64cpu-1024gb-x86-64-ubuntu-24` (Ubuntu 24)
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# How to use an Oracle bare metal runner
2+
3+
The Oracle bare metal runner is a shared benchmarking resource. Workflows must
4+
clean up after themselves so they don't fill the shared host filesystem.
5+
6+
## Request access
7+
8+
Access is granted per repository via a community issue. Include:
9+
10+
- The repository that needs access.
11+
- Why the repository needs bare metal resources, such as the benchmark, test
12+
scenario, or workflow that will use the runner.
13+
- Whether the workflow can run in a job-level container.
14+
15+
All workflows in the repository can use the runner once access is granted.
16+
For the runner label, see
17+
[OpenTelemetry managed assets](../assets.md#bare-metal-runners).
18+
19+
## Prefer job-level containers
20+
21+
Use a job-level container unless the workflow specifically needs direct host OS
22+
access. Containers keep most tool-created temporary files inside the container
23+
filesystem, which reduces the chance that a failed or cancelled job fills the
24+
host `/tmp` directory.
25+
26+
Example:
27+
28+
```yaml
29+
benchmark:
30+
name: Benchmarks
31+
runs-on: oracle-bare-metal-64cpu-1024gb-x86-64-ubuntu-24
32+
container:
33+
image: golang:1.25-bookworm # use whatever image your workflow needs
34+
steps:
35+
- uses: actions/checkout@v5
36+
- name: Run benchmarks
37+
run: make benchmark
38+
```
39+
40+
Choose an image that matches the repository's toolchain. For benchmark
41+
stability, prefer a pinned version or digest instead of a moving tag such as
42+
`latest`.
43+
44+
## Clean up when running directly on the host
45+
46+
Some benchmarks need direct host OS access, privileged host features, host
47+
networking, or host-level profiling. If a job must run directly on the host,
48+
route temporary files through `RUNNER_TEMP`, which GitHub Actions empties at
49+
the start and end of every job.
50+
51+
```yaml
52+
benchmark:
53+
name: Benchmarks
54+
runs-on: oracle-bare-metal-64cpu-1024gb-x86-64-ubuntu-24
55+
env:
56+
TMPDIR: ${{ runner.temp }}
57+
TMP: ${{ runner.temp }}
58+
TEMP: ${{ runner.temp }}
59+
steps:
60+
- uses: actions/checkout@v5
61+
- name: Run benchmarks
62+
run: make benchmark
63+
```
64+
65+
If a tool must write to a fixed path under `/tmp`, add an `if: always()` cleanup
66+
step that removes only the paths created by that job. Do not add broad cleanup
67+
commands such as `rm -rf /tmp/*` or age-based deletion of all `/tmp` files; the
68+
runner may have active control files or other system-managed entries there.
69+
70+
If the runner runs out of space, open a community issue.

0 commit comments

Comments
 (0)