mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-17 15:13:08 +00:00
improve cgroupmanager in qosContainerManager
improve arg "cgroupRoot" type in NewQOSContainerManager Signed-off-by: yanxuean <yan.xuean@zte.com.cn>
This commit is contained in:
@@ -256,7 +256,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I
|
||||
}
|
||||
glog.Infof("Creating Container Manager object based on Node Config: %+v", nodeConfig)
|
||||
|
||||
qosContainerManager, err := NewQOSContainerManager(subsystems, cgroupRoot, nodeConfig)
|
||||
qosContainerManager, err := NewQOSContainerManager(subsystems, cgroupRoot, nodeConfig, cgroupManager)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -56,11 +56,11 @@ type qosContainerManagerImpl struct {
|
||||
cgroupManager CgroupManager
|
||||
activePods ActivePodsFunc
|
||||
getNodeAllocatable func() v1.ResourceList
|
||||
cgroupRoot string
|
||||
cgroupRoot CgroupName
|
||||
qosReserved map[v1.ResourceName]int64
|
||||
}
|
||||
|
||||
func NewQOSContainerManager(subsystems *CgroupSubsystems, cgroupRoot string, nodeConfig NodeConfig) (QOSContainerManager, error) {
|
||||
func NewQOSContainerManager(subsystems *CgroupSubsystems, cgroupRoot string, nodeConfig NodeConfig, cgroupManager CgroupManager) (QOSContainerManager, error) {
|
||||
if !nodeConfig.CgroupsPerQOS {
|
||||
return &qosContainerManagerNoop{
|
||||
cgroupRoot: CgroupName(cgroupRoot),
|
||||
@@ -69,8 +69,8 @@ func NewQOSContainerManager(subsystems *CgroupSubsystems, cgroupRoot string, nod
|
||||
|
||||
return &qosContainerManagerImpl{
|
||||
subsystems: subsystems,
|
||||
cgroupManager: NewCgroupManager(subsystems, nodeConfig.CgroupDriver),
|
||||
cgroupRoot: cgroupRoot,
|
||||
cgroupManager: cgroupManager,
|
||||
cgroupRoot: CgroupName(cgroupRoot),
|
||||
qosReserved: nodeConfig.ExperimentalQOSReserved,
|
||||
}, nil
|
||||
}
|
||||
@@ -81,7 +81,7 @@ func (m *qosContainerManagerImpl) GetQOSContainersInfo() QOSContainersInfo {
|
||||
|
||||
func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceList, activePods ActivePodsFunc) error {
|
||||
cm := m.cgroupManager
|
||||
rootContainer := m.cgroupRoot
|
||||
rootContainer := string(m.cgroupRoot)
|
||||
if !cm.Exists(CgroupName(rootContainer)) {
|
||||
return fmt.Errorf("root container %s doesn't exist", rootContainer)
|
||||
}
|
||||
@@ -95,8 +95,8 @@ func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceLis
|
||||
|
||||
// Create containers for both qos classes
|
||||
for qosClass, containerName := range qosClasses {
|
||||
// get the container's absolute name
|
||||
absoluteContainerName := CgroupName(containerName)
|
||||
// get the container's abstract name
|
||||
abstractContainerName := CgroupName(containerName)
|
||||
|
||||
resourceParameters := &ResourceConfig{}
|
||||
// the BestEffort QoS class has a statically configured minShares value
|
||||
@@ -107,7 +107,7 @@ func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceLis
|
||||
|
||||
// containerConfig object stores the cgroup specifications
|
||||
containerConfig := &CgroupConfig{
|
||||
Name: absoluteContainerName,
|
||||
Name: abstractContainerName,
|
||||
ResourceParameters: resourceParameters,
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceLis
|
||||
}
|
||||
|
||||
// check if it exists
|
||||
if !cm.Exists(absoluteContainerName) {
|
||||
if !cm.Exists(abstractContainerName) {
|
||||
if err := cm.Create(containerConfig); err != nil {
|
||||
return fmt.Errorf("failed to create top level %v QOS cgroup : %v", qosClass, err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user