Skip to content

Commit 9374195

Browse files
askervinklihub
authored andcommitted
Enable adjusting container Linux memory policy.
Signed-off-by: Antti Kervinen <antti.kervinen@intel.com>
1 parent d1418ab commit 9374195

9 files changed

Lines changed: 1341 additions & 613 deletions

File tree

pkg/adaptation/api.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ type (
8888
LinuxResources = api.LinuxResources
8989
LinuxCPU = api.LinuxCPU
9090
LinuxMemory = api.LinuxMemory
91+
LinuxMemoryPolicy = api.LinuxMemoryPolicy
9192
LinuxDevice = api.LinuxDevice
9293
LinuxDeviceCgroup = api.LinuxDeviceCgroup
9394
LinuxIOPriority = api.LinuxIOPriority

pkg/adaptation/result.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,9 @@ func (r *result) adjust(rpl *ContainerAdjustment, plugin string) error {
248248
if err := r.adjustLinuxScheduler(rpl.Linux.Scheduler, plugin); err != nil {
249249
return err
250250
}
251+
if err := r.adjustMemoryPolicy(rpl.Linux.MemoryPolicy, plugin); err != nil {
252+
return err
253+
}
251254
}
252255
if err := r.adjustRlimits(rpl.Rlimits, plugin); err != nil {
253256
return err
@@ -974,6 +977,22 @@ func (r *result) adjustLinuxScheduler(sch *LinuxScheduler, plugin string) error
974977
return nil
975978
}
976979

980+
func (r *result) adjustMemoryPolicy(memoryPolicy *LinuxMemoryPolicy, plugin string) error {
981+
if memoryPolicy == nil {
982+
return nil
983+
}
984+
985+
id := r.request.create.Container.Id
986+
987+
if err := r.owners.ClaimMemoryPolicy(id, plugin); err != nil {
988+
return err
989+
}
990+
991+
r.reply.adjust.Linux.MemoryPolicy = memoryPolicy
992+
993+
return nil
994+
}
995+
977996
func (r *result) adjustRlimits(rlimits []*POSIXRlimit, plugin string) error {
978997
create, id, adjust := r.request.create, r.request.create.Container.Id, r.reply.adjust
979998
for _, l := range rlimits {

pkg/api/adjustment.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,13 @@ func (a *ContainerAdjustment) RemoveLinuxNetDevice(hostDev string) {
180180
a.Linux.NetDevices[MarkForRemoval(hostDev)] = nil
181181
}
182182

183+
func (a *ContainerAdjustment) SetLinuxMemoryPolicy(mode MpolMode, nodes string, flags ...MpolFlag) {
184+
a.initLinuxMemoryPolicy()
185+
a.Linux.MemoryPolicy.Mode = mode
186+
a.Linux.MemoryPolicy.Nodes = nodes
187+
a.Linux.MemoryPolicy.Flags = slices.Clone(flags)
188+
}
189+
183190
// SetLinuxMemoryLimit records setting the memory limit for a container.
184191
func (a *ContainerAdjustment) SetLinuxMemoryLimit(value int64) {
185192
a.initLinuxResourcesMemory()
@@ -378,6 +385,13 @@ func (a *ContainerAdjustment) initLinuxNamespaces() {
378385
}
379386
}
380387

388+
func (a *ContainerAdjustment) initLinuxMemoryPolicy() {
389+
a.initLinux()
390+
if a.Linux.MemoryPolicy == nil {
391+
a.Linux.MemoryPolicy = &LinuxMemoryPolicy{}
392+
}
393+
}
394+
381395
func (a *ContainerAdjustment) initLinuxResources() {
382396
a.initLinux()
383397
if a.Linux.Resources == nil {

0 commit comments

Comments
 (0)