Node Resource Interface
Node Resource Interface
Node Resource Interface
@crosbymichael - Apple
The Problem…
Resource Management
Cgroups and Topology
• Batch
• Latency Sensitive
• Customer Requirements
• SLA/SLO
• My workload is P1!
Resource Management
Cgroups and Topology
• CPU
• Hyperthreads
• Numa
• L3 Cache
• Hugepages
Resource Management
Cgroups and Topology
• DPDK
• VM Isolation
• Proximity
• GPU
• Network
Large Matrix
Current Solutions
Kubelet
• CPU Manager
• Weird UX
• Off by default
• Topology Manager
• Hint providers
Current Solutions
Intel CPU Manager for Kube
• CMK cli
• Simple
• Elegant
• Extensible
• Composable
• The lines between kubelet and CRI are getting too blurry
• CRI implementations like containerd are robust and know how to interface
with the underlying host systems
"version": "0.1",
"plugins": {
"konfine": {
"systemReserved": [0,1]
}
}
}
NRI
Skeleton
package main
import (
"context"
"fmt"
"os"
"github.com/containerd/containerd/pkg/nri/skel"
"github.com/sirupsen/logrus"
)
func main() {
ctx := context.Background()
}
NRI
Integration in a CRI
defer func() {
if _, err := nri.Invoke(ctx, task, "delete"); err != nil {
fmt.Println(err)
}
}()
• NUMA Support
• Keeps this small and doing one thing and one thing well
• Demo plugins