Skip to content

Commit 8cee0a2

Browse files
askervinklihub
authored andcommitted
Enable adjusting container Linux memory policy.
Signed-off-by: Antti Kervinen <[email protected]>
1 parent 8f3e69e commit 8cee0a2

9 files changed

Lines changed: 1350 additions & 621 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: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ func (a *ContainerAdjustment) RemoveLinuxNetDevice(hostDev string) {
180180
a.Linux.NetDevices[MarkForRemoval(hostDev)] = nil
181181
}
182182

183+
// SetLinuxMemoryPolicy records setting the Linux memory policy for a container.
184+
func (a *ContainerAdjustment) SetLinuxMemoryPolicy(mode MpolMode, nodes string, flags ...MpolFlag) {
185+
a.initLinuxMemoryPolicy()
186+
a.Linux.MemoryPolicy.Mode = mode
187+
a.Linux.MemoryPolicy.Nodes = nodes
188+
a.Linux.MemoryPolicy.Flags = slices.Clone(flags)
189+
}
190+
183191
// SetLinuxMemoryLimit records setting the memory limit for a container.
184192
func (a *ContainerAdjustment) SetLinuxMemoryLimit(value int64) {
185193
a.initLinuxResourcesMemory()
@@ -378,6 +386,13 @@ func (a *ContainerAdjustment) initLinuxNamespaces() {
378386
}
379387
}
380388

389+
func (a *ContainerAdjustment) initLinuxMemoryPolicy() {
390+
a.initLinux()
391+
if a.Linux.MemoryPolicy == nil {
392+
a.Linux.MemoryPolicy = &LinuxMemoryPolicy{}
393+
}
394+
}
395+
381396
func (a *ContainerAdjustment) initLinuxResources() {
382397
a.initLinux()
383398
if a.Linux.Resources == nil {

0 commit comments

Comments
 (0)