diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 9f87cc2ffe..6dcd0e847a 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -44,7 +44,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/rootless" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" - "golang.org/x/sys/unix" ) // sandboxTracingTags defines tags for the trace span @@ -2540,19 +2539,14 @@ func (s *Sandbox) checkVCPUsPinning(ctx context.Context) error { } return nil } - - // if equal, we can now start vCPU threads pinning - i := 0 - for _, tid := range vCPUThreadsMap.vcpus { - unixCPUSet := unix.CPUSet{} - unixCPUSet.Set(cpuSetSlice[i]) - if err := unix.SchedSetaffinity(tid, &unixCPUSet); err != nil { + // if equal, we can use vCPU thread pinning + for i, tid := range vCPUThreadsMap.vcpus { + if err := resCtrl.SetThreadAffinity(tid, cpuSetSlice[i:i+1]); err != nil { if err := s.resetVCPUsPinning(ctx, vCPUThreadsMap, cpuSetSlice); err != nil { return err } return fmt.Errorf("failed to set vcpu thread %d affinity to cpu %d: %v", tid, cpuSetSlice[i], err) } - i++ } s.isVCPUsPinningOn = true return nil @@ -2560,13 +2554,9 @@ func (s *Sandbox) checkVCPUsPinning(ctx context.Context) error { // resetVCPUsPinning cancels current pinning and restores default random vCPU threads scheduling func (s *Sandbox) resetVCPUsPinning(ctx context.Context, vCPUThreadsMap VcpuThreadIDs, cpuSetSlice []int) error { - unixCPUSet := unix.CPUSet{} - for cpuId := range cpuSetSlice { - unixCPUSet.Set(cpuId) - } for _, tid := range vCPUThreadsMap.vcpus { - if err := unix.SchedSetaffinity(tid, &unixCPUSet); err != nil { - return fmt.Errorf("failed to reset vcpu thread %d affinity to default mode: %v", tid, err) + if err := resCtrl.SetThreadAffinity(tid, cpuSetSlice); err != nil { + return fmt.Errorf("failed to reset vcpu thread %d affinity: %v", tid, err) } } return nil