Skip to content

Commit af3a7b2

Browse files
committed
extract memory and CPU resource helpers
Signed-off-by: bo.jiang <bo.jiang@daocloud.io>
1 parent a2eea2b commit af3a7b2

File tree

1 file changed

+124
-190
lines changed

1 file changed

+124
-190
lines changed

pkg/adaptation/result.go

Lines changed: 124 additions & 190 deletions
Original file line numberDiff line numberDiff line change
@@ -622,123 +622,144 @@ func (r *result) adjustHooks(hooks *Hooks, plugin string) error {
622622
return nil
623623
}
624624

625-
func (r *result) adjustResources(resources *LinuxResources, plugin string) error {
626-
if resources == nil {
625+
func (r *result) processMemoryResource(mem *LinuxMemory, targetContainer, targetReply *LinuxMemory, id, plugin string) error {
626+
if mem == nil {
627627
return nil
628628
}
629629

630-
create, id := r.request.create, r.request.create.Container.Id
631-
container := create.Container.Linux.Resources
632-
reply := r.reply.adjust.Linux.Resources
633-
634-
if mem := resources.Memory; mem != nil {
635-
if v := mem.GetLimit(); v != nil {
636-
if err := r.owners.ClaimMemLimit(id, plugin); err != nil {
637-
return err
638-
}
639-
container.Memory.Limit = Int64(v.GetValue())
640-
reply.Memory.Limit = Int64(v.GetValue())
630+
if v := mem.GetLimit(); v != nil {
631+
if err := r.owners.ClaimMemLimit(id, plugin); err != nil {
632+
return err
641633
}
642-
if v := mem.GetReservation(); v != nil {
643-
if err := r.owners.ClaimMemReservation(id, plugin); err != nil {
644-
return err
645-
}
646-
container.Memory.Reservation = Int64(v.GetValue())
647-
reply.Memory.Reservation = Int64(v.GetValue())
634+
targetContainer.Limit = Int64(v.GetValue())
635+
targetReply.Limit = Int64(v.GetValue())
636+
}
637+
if v := mem.GetReservation(); v != nil {
638+
if err := r.owners.ClaimMemReservation(id, plugin); err != nil {
639+
return err
648640
}
649-
if v := mem.GetSwap(); v != nil {
650-
if err := r.owners.ClaimMemSwapLimit(id, plugin); err != nil {
651-
return err
652-
}
653-
container.Memory.Swap = Int64(v.GetValue())
654-
reply.Memory.Swap = Int64(v.GetValue())
641+
targetContainer.Reservation = Int64(v.GetValue())
642+
targetReply.Reservation = Int64(v.GetValue())
643+
}
644+
if v := mem.GetSwap(); v != nil {
645+
if err := r.owners.ClaimMemSwapLimit(id, plugin); err != nil {
646+
return err
655647
}
656-
if v := mem.GetKernel(); v != nil {
657-
if err := r.owners.ClaimMemKernelLimit(id, plugin); err != nil {
658-
return err
659-
}
660-
container.Memory.Kernel = Int64(v.GetValue())
661-
reply.Memory.Kernel = Int64(v.GetValue())
648+
targetContainer.Swap = Int64(v.GetValue())
649+
targetReply.Swap = Int64(v.GetValue())
650+
}
651+
if v := mem.GetKernel(); v != nil {
652+
if err := r.owners.ClaimMemKernelLimit(id, plugin); err != nil {
653+
return err
662654
}
663-
if v := mem.GetKernelTcp(); v != nil {
664-
if err := r.owners.ClaimMemTCPLimit(id, plugin); err != nil {
665-
return err
666-
}
667-
container.Memory.KernelTcp = Int64(v.GetValue())
668-
reply.Memory.KernelTcp = Int64(v.GetValue())
655+
targetContainer.Kernel = Int64(v.GetValue())
656+
targetReply.Kernel = Int64(v.GetValue())
657+
}
658+
if v := mem.GetKernelTcp(); v != nil {
659+
if err := r.owners.ClaimMemTCPLimit(id, plugin); err != nil {
660+
return err
669661
}
670-
if v := mem.GetSwappiness(); v != nil {
671-
if err := r.owners.ClaimMemSwappiness(id, plugin); err != nil {
672-
return err
673-
}
674-
container.Memory.Swappiness = UInt64(v.GetValue())
675-
reply.Memory.Swappiness = UInt64(v.GetValue())
662+
targetContainer.KernelTcp = Int64(v.GetValue())
663+
targetReply.KernelTcp = Int64(v.GetValue())
664+
}
665+
if v := mem.GetSwappiness(); v != nil {
666+
if err := r.owners.ClaimMemSwappiness(id, plugin); err != nil {
667+
return err
676668
}
677-
if v := mem.GetDisableOomKiller(); v != nil {
678-
if err := r.owners.ClaimMemDisableOomKiller(id, plugin); err != nil {
679-
return err
680-
}
681-
container.Memory.DisableOomKiller = Bool(v.GetValue())
682-
reply.Memory.DisableOomKiller = Bool(v.GetValue())
669+
targetContainer.Swappiness = UInt64(v.GetValue())
670+
targetReply.Swappiness = UInt64(v.GetValue())
671+
}
672+
if v := mem.GetDisableOomKiller(); v != nil {
673+
if err := r.owners.ClaimMemDisableOomKiller(id, plugin); err != nil {
674+
return err
683675
}
684-
if v := mem.GetUseHierarchy(); v != nil {
685-
if err := r.owners.ClaimMemUseHierarchy(id, plugin); err != nil {
686-
return err
687-
}
688-
container.Memory.UseHierarchy = Bool(v.GetValue())
689-
reply.Memory.UseHierarchy = Bool(v.GetValue())
676+
targetContainer.DisableOomKiller = Bool(v.GetValue())
677+
targetReply.DisableOomKiller = Bool(v.GetValue())
678+
}
679+
if v := mem.GetUseHierarchy(); v != nil {
680+
if err := r.owners.ClaimMemUseHierarchy(id, plugin); err != nil {
681+
return err
690682
}
683+
targetContainer.UseHierarchy = Bool(v.GetValue())
684+
targetReply.UseHierarchy = Bool(v.GetValue())
691685
}
692-
if cpu := resources.Cpu; cpu != nil {
693-
if v := cpu.GetShares(); v != nil {
694-
if err := r.owners.ClaimCPUShares(id, plugin); err != nil {
695-
return err
696-
}
697-
container.Cpu.Shares = UInt64(v.GetValue())
698-
reply.Cpu.Shares = UInt64(v.GetValue())
686+
687+
return nil
688+
}
689+
690+
func (r *result) processCPUResource(cpu *LinuxCPU, targetContainer, targetReply *LinuxCPU, id, plugin string) error {
691+
if cpu == nil {
692+
return nil
693+
}
694+
695+
if v := cpu.GetShares(); v != nil {
696+
if err := r.owners.ClaimCPUShares(id, plugin); err != nil {
697+
return err
699698
}
700-
if v := cpu.GetQuota(); v != nil {
701-
if err := r.owners.ClaimCPUQuota(id, plugin); err != nil {
702-
return err
703-
}
704-
container.Cpu.Quota = Int64(v.GetValue())
705-
reply.Cpu.Quota = Int64(v.GetValue())
699+
targetContainer.Shares = UInt64(v.GetValue())
700+
targetReply.Shares = UInt64(v.GetValue())
701+
}
702+
if v := cpu.GetQuota(); v != nil {
703+
if err := r.owners.ClaimCPUQuota(id, plugin); err != nil {
704+
return err
706705
}
707-
if v := cpu.GetPeriod(); v != nil {
708-
if err := r.owners.ClaimCPUPeriod(id, plugin); err != nil {
709-
return err
710-
}
711-
container.Cpu.Period = UInt64(v.GetValue())
712-
reply.Cpu.Period = UInt64(v.GetValue())
706+
targetContainer.Quota = Int64(v.GetValue())
707+
targetReply.Quota = Int64(v.GetValue())
708+
}
709+
if v := cpu.GetPeriod(); v != nil {
710+
if err := r.owners.ClaimCPUPeriod(id, plugin); err != nil {
711+
return err
713712
}
714-
if v := cpu.GetRealtimeRuntime(); v != nil {
715-
if err := r.owners.ClaimCPURealtimeRuntime(id, plugin); err != nil {
716-
return err
717-
}
718-
container.Cpu.RealtimeRuntime = Int64(v.GetValue())
719-
reply.Cpu.RealtimeRuntime = Int64(v.GetValue())
713+
targetContainer.Period = UInt64(v.GetValue())
714+
targetReply.Period = UInt64(v.GetValue())
715+
}
716+
if v := cpu.GetRealtimeRuntime(); v != nil {
717+
if err := r.owners.ClaimCPURealtimeRuntime(id, plugin); err != nil {
718+
return err
720719
}
721-
if v := cpu.GetRealtimePeriod(); v != nil {
722-
if err := r.owners.ClaimCPURealtimePeriod(id, plugin); err != nil {
723-
return err
724-
}
725-
container.Cpu.RealtimePeriod = UInt64(v.GetValue())
726-
reply.Cpu.RealtimePeriod = UInt64(v.GetValue())
720+
targetContainer.RealtimeRuntime = Int64(v.GetValue())
721+
targetReply.RealtimeRuntime = Int64(v.GetValue())
722+
}
723+
if v := cpu.GetRealtimePeriod(); v != nil {
724+
if err := r.owners.ClaimCPURealtimePeriod(id, plugin); err != nil {
725+
return err
727726
}
728-
if v := cpu.GetCpus(); v != "" {
729-
if err := r.owners.ClaimCPUSetCPUs(id, plugin); err != nil {
730-
return err
731-
}
732-
container.Cpu.Cpus = v
733-
reply.Cpu.Cpus = v
727+
targetContainer.RealtimePeriod = UInt64(v.GetValue())
728+
targetReply.RealtimePeriod = UInt64(v.GetValue())
729+
}
730+
if v := cpu.GetCpus(); v != "" {
731+
if err := r.owners.ClaimCPUSetCPUs(id, plugin); err != nil {
732+
return err
734733
}
735-
if v := cpu.GetMems(); v != "" {
736-
if err := r.owners.ClaimCPUSetMems(id, plugin); err != nil {
737-
return err
738-
}
739-
container.Cpu.Mems = v
740-
reply.Cpu.Mems = v
734+
targetContainer.Cpus = v
735+
targetReply.Cpus = v
736+
}
737+
if v := cpu.GetMems(); v != "" {
738+
if err := r.owners.ClaimCPUSetMems(id, plugin); err != nil {
739+
return err
741740
}
741+
targetContainer.Cpus = v
742+
targetReply.Cpus = v
743+
}
744+
745+
return nil
746+
}
747+
748+
func (r *result) adjustResources(resources *LinuxResources, plugin string) error {
749+
if resources == nil {
750+
return nil
751+
}
752+
753+
create, id := r.request.create, r.request.create.Container.Id
754+
container := create.Container.Linux.Resources
755+
reply := r.reply.adjust.Linux.Resources
756+
757+
if err := r.processMemoryResource(resources.Memory, container.Memory, reply.Memory, id, plugin); err != nil {
758+
return err
759+
}
760+
761+
if err := r.processCPUResource(resources.Cpu, container.Cpu, reply.Cpu, id, plugin); err != nil {
762+
return err
742763
}
743764

744765
for _, l := range resources.HugepageLimits {
@@ -886,99 +907,12 @@ func (r *result) updateResources(reply, u *ContainerUpdate, plugin string) error
886907
resources = reply.Linux.Resources.Copy()
887908
}
888909

889-
if mem := u.Linux.Resources.Memory; mem != nil {
890-
if v := mem.GetLimit(); v != nil {
891-
if err := r.owners.ClaimMemLimit(id, plugin); err != nil {
892-
return err
893-
}
894-
resources.Memory.Limit = Int64(v.GetValue())
895-
}
896-
if v := mem.GetReservation(); v != nil {
897-
if err := r.owners.ClaimMemReservation(id, plugin); err != nil {
898-
return err
899-
}
900-
resources.Memory.Reservation = Int64(v.GetValue())
901-
}
902-
if v := mem.GetSwap(); v != nil {
903-
if err := r.owners.ClaimMemSwapLimit(id, plugin); err != nil {
904-
return err
905-
}
906-
resources.Memory.Swap = Int64(v.GetValue())
907-
}
908-
if v := mem.GetKernel(); v != nil {
909-
if err := r.owners.ClaimMemKernelLimit(id, plugin); err != nil {
910-
return err
911-
}
912-
resources.Memory.Kernel = Int64(v.GetValue())
913-
}
914-
if v := mem.GetKernelTcp(); v != nil {
915-
if err := r.owners.ClaimMemTCPLimit(id, plugin); err != nil {
916-
return err
917-
}
918-
resources.Memory.KernelTcp = Int64(v.GetValue())
919-
}
920-
if v := mem.GetSwappiness(); v != nil {
921-
if err := r.owners.ClaimMemSwappiness(id, plugin); err != nil {
922-
return err
923-
}
924-
resources.Memory.Swappiness = UInt64(v.GetValue())
925-
}
926-
if v := mem.GetDisableOomKiller(); v != nil {
927-
if err := r.owners.ClaimMemDisableOomKiller(id, plugin); err != nil {
928-
return err
929-
}
930-
resources.Memory.DisableOomKiller = Bool(v.GetValue())
931-
}
932-
if v := mem.GetUseHierarchy(); v != nil {
933-
if err := r.owners.ClaimMemUseHierarchy(id, plugin); err != nil {
934-
return err
935-
}
936-
resources.Memory.UseHierarchy = Bool(v.GetValue())
937-
}
910+
if err := r.processMemoryResource(u.Linux.Resources.Memory, resources.Memory, &LinuxMemory{}, id, plugin); err != nil {
911+
return err
938912
}
939-
if cpu := u.Linux.Resources.Cpu; cpu != nil {
940-
if v := cpu.GetShares(); v != nil {
941-
if err := r.owners.ClaimCPUShares(id, plugin); err != nil {
942-
return err
943-
}
944-
resources.Cpu.Shares = UInt64(v.GetValue())
945-
}
946-
if v := cpu.GetQuota(); v != nil {
947-
if err := r.owners.ClaimCPUQuota(id, plugin); err != nil {
948-
return err
949-
}
950-
resources.Cpu.Quota = Int64(v.GetValue())
951-
}
952-
if v := cpu.GetPeriod(); v != nil {
953-
if err := r.owners.ClaimCPUPeriod(id, plugin); err != nil {
954-
return err
955-
}
956-
resources.Cpu.Period = UInt64(v.GetValue())
957-
}
958-
if v := cpu.GetRealtimeRuntime(); v != nil {
959-
if err := r.owners.ClaimCPURealtimeRuntime(id, plugin); err != nil {
960-
return err
961-
}
962-
resources.Cpu.RealtimeRuntime = Int64(v.GetValue())
963-
}
964-
if v := cpu.GetRealtimePeriod(); v != nil {
965-
if err := r.owners.ClaimCPURealtimePeriod(id, plugin); err != nil {
966-
return err
967-
}
968-
resources.Cpu.RealtimePeriod = UInt64(v.GetValue())
969-
}
970-
if v := cpu.GetCpus(); v != "" {
971-
if err := r.owners.ClaimCPUSetCPUs(id, plugin); err != nil {
972-
return err
973-
}
974-
resources.Cpu.Cpus = v
975-
}
976-
if v := cpu.GetMems(); v != "" {
977-
if err := r.owners.ClaimCPUSetMems(id, plugin); err != nil {
978-
return err
979-
}
980-
resources.Cpu.Mems = v
981-
}
913+
914+
if err := r.processCPUResource(u.Linux.Resources.Cpu, resources.Cpu, &LinuxCPU{}, id, plugin); err != nil {
915+
return err
982916
}
983917

984918
for _, l := range u.Linux.Resources.HugepageLimits {

0 commit comments

Comments
 (0)