-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathruntime_config.go
More file actions
65 lines (54 loc) · 1.85 KB
/
runtime_config.go
File metadata and controls
65 lines (54 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package containerd
import (
"slices"
"strings"
"go.uber.org/zap"
)
type instanceOptions struct {
RuntimeName string
RuntimeBinaryName string
}
type instanceTypeMixin struct {
instanceFamilies []string
apply func() instanceOptions
}
func (m *instanceTypeMixin) matches(instanceType string) bool {
instanceFamily := strings.Split(instanceType, ".")[0]
return slices.Contains(m.instanceFamilies, instanceFamily)
}
var (
// TODO: fetch this list dynamically
nvidiaInstances = []string{"p3", "p3dn", "p4d", "p4de", "p5", "p5e", "p5en", "g4", "g4dn", "g5", "g6", "g6e"}
NvidiaInstanceTypeMixin = instanceTypeMixin{
instanceFamilies: nvidiaInstances,
apply: applyNvidia,
}
mixins = []instanceTypeMixin{
NvidiaInstanceTypeMixin,
}
)
const nvidiaRuntimeName = "nvidia"
const nvidiaRuntimeBinaryName = "/usr/bin/nvidia-container-runtime"
const defaultRuntimeName = "runc"
const defaultRuntimeBinaryName = "/usr/sbin/runc"
// applyInstanceTypeMixins adds the needed OCI hook options to containerd config.toml
// based on the instance family
func applyInstanceTypeMixins(instanceType string) instanceOptions {
for _, mixin := range mixins {
if mixin.matches(instanceType) {
return mixin.apply()
}
}
zap.L().Info("No instance specific containerd runtime configuration needed..", zap.String("instanceType", instanceType))
return applyDefault()
}
// applyNvidia adds the needed NVIDIA containerd options
func applyNvidia() instanceOptions {
zap.L().Info("Configuring NVIDIA runtime..")
return instanceOptions{RuntimeName: nvidiaRuntimeName, RuntimeBinaryName: nvidiaRuntimeBinaryName}
}
// applyDefault adds the default runc containerd options
func applyDefault() instanceOptions {
zap.L().Info("Configuring default runtime..")
return instanceOptions{RuntimeName: defaultRuntimeName, RuntimeBinaryName: defaultRuntimeBinaryName}
}