github.com/kubewharf/katalyst-core@v0.5.3/pkg/config/agent/qrm/memory_plugin.go (about)

     1  /*
     2  Copyright 2022 The Katalyst Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package qrm
    18  
    19  type MemoryQRMPluginConfig struct {
    20  	// PolicyName is used to switch between several strategies
    21  	PolicyName string
    22  	// ReservedMemoryGB: the total reserved memories in GB
    23  	ReservedMemoryGB uint64
    24  	// SkipMemoryStateCorruption is ued to skip memory state corruption and it will be used after updating state properties
    25  	SkipMemoryStateCorruption bool
    26  	// EnableSettingMemoryMigrate is used to enable cpuset.memory_migrate for containers not numa_binding
    27  	EnableSettingMemoryMigrate bool
    28  	// EnableMemoryAdvisor indicates whether to enable sys-advisor module to calculate memory resources
    29  	EnableMemoryAdvisor bool
    30  	// ExtraControlKnobConfigFile: the absolute path of extra control knob config file
    31  	ExtraControlKnobConfigFile string
    32  	// EnableOOMPriority: enable oom priority enhancement
    33  	EnableOOMPriority bool
    34  	// OOMPriorityPinnedMapAbsPath: the absolute path of oom priority pinned bpf map
    35  	OOMPriorityPinnedMapAbsPath string
    36  
    37  	// SockMemQRMPluginConfig: the configuration for sockmem limitation in cgroup and host level
    38  	SockMemQRMPluginConfig
    39  }
    40  
    41  type SockMemQRMPluginConfig struct {
    42  	// EnableSettingSockMemLimit is used to limit tcpmem usage in cgroup and host level
    43  	EnableSettingSockMem bool
    44  	// SetGlobalTCPMemRatio limits host max global tcp memory usage.
    45  	SetGlobalTCPMemRatio int
    46  	// SetCgroupTCPMemRatio limit cgroup max tcp memory usage.
    47  	SetCgroupTCPMemRatio int
    48  }
    49  
    50  func NewMemoryQRMPluginConfig() *MemoryQRMPluginConfig {
    51  	return &MemoryQRMPluginConfig{}
    52  }