Documentation
¶
Overview ¶
Package v1alpha1 provides alpha API for Katalyst Node API objects.
Index ¶
- Constants
- Variables
- func Resource(resource string) schema.GroupResource
- type Aggregator
- type Allocation
- type Attribute
- type CNRCondition
- type CNRConditionType
- type CustomNodeResource
- type CustomNodeResourceList
- type CustomNodeResourceSpec
- type CustomNodeResourceStatus
- type GroupMetricInfo
- type MetricValue
- type NUMAMetricInfo
- type NodeMetricInfo
- type NodeMetricStatus
- type NodeProfileDescriptor
- type NodeProfileDescriptorList
- type NodeProfileDescriptorSpec
- type NodeProfileDescriptorStatus
- type PodMetric
- type Property
- type ResourceMetric
- type ResourcePackage
- type ResourcePool
- type ResourceUsage
- type Resources
- type ScopedNodeMetrics
- type ScopedPodMetrics
- type Sibling
- type Taint
- type TopologyPolicy
- type TopologyType
- type TopologyZone
Constants ¶
const ( ResourceNameKatalystCNR = "customnoderesources" ResourceNameKatalystNPD = "nodeprofiledescriptors" )
ResourceNameKatalystCNR is used to construct standard gvr
const ( // GroupName is the group name used in this package GroupName string = "node.katalyst.kubewharf.io" )
Variables ¶
var ( // SchemeBuilder collects schemas to build. SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme is used by generated client to add this scheme to the generated client. AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type Aggregator ¶ added in v0.5.1
type Aggregator string
const ( AggregatorAvg Aggregator = "avg" AggregatorMax Aggregator = "max" AggregatorMin Aggregator = "min" AggregatorCount Aggregator = "count" AggregatorP99 Aggregator = "p99" AggregatorP95 Aggregator = "p95" AggregatorP90 Aggregator = "p90" )
type Allocation ¶
type Allocation struct {
Consumer string `json:"consumer"`
// +optional
Requests *v1.ResourceList `json:"requests,omitempty"`
}
func (*Allocation) DeepCopy ¶
func (in *Allocation) DeepCopy() *Allocation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Allocation.
func (*Allocation) DeepCopyInto ¶
func (in *Allocation) DeepCopyInto(out *Allocation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Attribute ¶ added in v0.1.2
Attribute records the resource-specified info with name-value pairs
func (*Attribute) DeepCopy ¶ added in v0.1.2
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Attribute.
func (*Attribute) DeepCopyInto ¶ added in v0.1.2
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CNRCondition ¶
type CNRCondition struct {
// Type is the type of the condition.
Type CNRConditionType `json:"type"`
// Status of the condition, one of True, False, Unknown.
Status v1.ConditionStatus `json:"status" `
// Last time we got an update on a given condition.
// +optional
LastHeartbeatTime metav1.Time `json:"lastHeartbeatTime,omitempty"`
// (brief) reason for the condition's last transition.
// +optional
Reason string `json:"reason,omitempty"`
// Human-readable message indicating details about last transition.
// +optional
Message string `json:"message,omitempty"`
}
CNRCondition contains condition information for a cnr.
func (*CNRCondition) DeepCopy ¶
func (in *CNRCondition) DeepCopy() *CNRCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CNRCondition.
func (*CNRCondition) DeepCopyInto ¶
func (in *CNRCondition) DeepCopyInto(out *CNRCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CNRConditionType ¶
type CNRConditionType string
const ( CNRAgentReady CNRConditionType = "AgentReady" CNRAgentNotFound CNRConditionType = "AgentNotFound" )
type CustomNodeResource ¶
type CustomNodeResource struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec defines the behavior of a CustomNodeResource.
// +optional
Spec CustomNodeResourceSpec `json:"spec,omitempty"`
// Status represents the current information about a CustomNodeResource.
// This data may not be up-to-date.
// +optional
Status CustomNodeResourceStatus `json:"status,omitempty"`
}
CustomNodeResource captures information about a custom defined node resource, mainly focus on static attributes and resources CustomNodeResource objects are non-namespaced.
func (*CustomNodeResource) DeepCopy ¶
func (in *CustomNodeResource) DeepCopy() *CustomNodeResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomNodeResource.
func (*CustomNodeResource) DeepCopyInto ¶
func (in *CustomNodeResource) DeepCopyInto(out *CustomNodeResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*CustomNodeResource) DeepCopyObject ¶
func (in *CustomNodeResource) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type CustomNodeResourceList ¶
type CustomNodeResourceList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
// items is the list of CNRs
Items []CustomNodeResource `json:"items"`
}
CustomNodeResourceList is a collection of CustomNodeResource objects.
func (*CustomNodeResourceList) DeepCopy ¶
func (in *CustomNodeResourceList) DeepCopy() *CustomNodeResourceList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomNodeResourceList.
func (*CustomNodeResourceList) DeepCopyInto ¶
func (in *CustomNodeResourceList) DeepCopyInto(out *CustomNodeResourceList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*CustomNodeResourceList) DeepCopyObject ¶
func (in *CustomNodeResourceList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type CustomNodeResourceSpec ¶
type CustomNodeResourceSpec struct {
// +optional
NodeResourceProperties []*Property `json:"nodeResourceProperties,omitempty"`
// Taints customized taint for katalyst, which affect pod scheduling
// based on their QoS levels and the specified taint's QoS level.
// +optional
Taints []Taint `json:"taints,omitempty"`
}
func (*CustomNodeResourceSpec) DeepCopy ¶
func (in *CustomNodeResourceSpec) DeepCopy() *CustomNodeResourceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomNodeResourceSpec.
func (*CustomNodeResourceSpec) DeepCopyInto ¶
func (in *CustomNodeResourceSpec) DeepCopyInto(out *CustomNodeResourceSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CustomNodeResourceStatus ¶
type CustomNodeResourceStatus struct {
// Resources defines the numeric quantities in this node; for instance reclaimed resources for this node
// +optional
Resources Resources `json:"resources"`
// +optional
TopologyZone []*TopologyZone `json:"topologyZone,omitempty"`
// TopologyPolicy indicates placement policy for scheduler or other centralized components to follow.
// this policy (including topology scope) is defined in topology-manager, katalyst is
// responsible to parse the policy, and transform to TopologyPolicy here.
// +kubebuilder:default:=none
TopologyPolicy TopologyPolicy `json:"topologyPolicy"`
// Conditions is an array of current observed cnr conditions.
// +optional
Conditions []CNRCondition `json:"conditions,omitempty"`
// NodeMetricStatus report node real-time metrics
// +optional
NodeMetricStatus *NodeMetricStatus `json:"nodeMetricStatus,omitempty"`
}
func (*CustomNodeResourceStatus) DeepCopy ¶
func (in *CustomNodeResourceStatus) DeepCopy() *CustomNodeResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomNodeResourceStatus.
func (*CustomNodeResourceStatus) DeepCopyInto ¶
func (in *CustomNodeResourceStatus) DeepCopyInto(out *CustomNodeResourceStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GroupMetricInfo ¶ added in v0.5.0
type GroupMetricInfo struct {
// +kubebuilder:validation:Enum=reclaimed_cores;shared_cores;dedicated_cores;system_cores
QoSLevel string `json:"QoSLevel"`
ResourceUsage `json:",inline"`
// PodList indicates the pods belongs to this qos group, in format of {namespace}/{name}.
// Pods that have been scheduled but are not listed in the PodList need to be estimated by the scheduler.
PodList []string `json:"podList,omitempty"`
}
func (*GroupMetricInfo) DeepCopy ¶ added in v0.5.0
func (in *GroupMetricInfo) DeepCopy() *GroupMetricInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupMetricInfo.
func (*GroupMetricInfo) DeepCopyInto ¶ added in v0.5.0
func (in *GroupMetricInfo) DeepCopyInto(out *GroupMetricInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricValue ¶ added in v0.5.1
type MetricValue struct {
// the name of the metric
// +optional
MetricName string `json:"metricName,omitempty"`
// a set of labels that identify a single time series for the metric
// +optional
MetricLabels map[string]string `json:"metricLabels,omitempty"`
// indicates the time at which the metrics were produced
// +optional
Timestamp metav1.Time `json:"timestamp,omitempty"`
// the aggregator of the metric
// +optional
Aggregator *Aggregator `json:"aggregator,omitempty"`
// indicates the window ([Timestamp-Window, Timestamp]) from
// which these metrics were calculated, when returning rate
// metrics calculated from cumulative metrics (or zero for
// non-calculated instantaneous metrics).
// +optional
Window *metav1.Duration `json:"window,omitempty"`
// the value of the metric
// +optional
Value resource.Quantity `json:"value,omitempty"`
}
func (*MetricValue) DeepCopy ¶ added in v0.5.1
func (in *MetricValue) DeepCopy() *MetricValue
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricValue.
func (*MetricValue) DeepCopyInto ¶ added in v0.5.1
func (in *MetricValue) DeepCopyInto(out *MetricValue)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NUMAMetricInfo ¶ added in v0.5.0
type NUMAMetricInfo struct {
NUMAId int `json:"numaId"`
// Usage contains the real-time resource usage for this NUMA node
Usage *ResourceMetric `json:"usage"`
}
func (*NUMAMetricInfo) DeepCopy ¶ added in v0.5.0
func (in *NUMAMetricInfo) DeepCopy() *NUMAMetricInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NUMAMetricInfo.
func (*NUMAMetricInfo) DeepCopyInto ¶ added in v0.5.0
func (in *NUMAMetricInfo) DeepCopyInto(out *NUMAMetricInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeMetricInfo ¶ added in v0.5.0
type NodeMetricInfo struct {
ResourceUsage `json:",inline"`
}
func (*NodeMetricInfo) DeepCopy ¶ added in v0.5.0
func (in *NodeMetricInfo) DeepCopy() *NodeMetricInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeMetricInfo.
func (*NodeMetricInfo) DeepCopyInto ¶ added in v0.5.0
func (in *NodeMetricInfo) DeepCopyInto(out *NodeMetricInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeMetricStatus ¶ added in v0.5.0
type NodeMetricStatus struct {
// UpdateTime is the last time this NodeMetricStatus was updated.
UpdateTime metav1.Time `json:"updateTime"`
// NodeMetric contains the metrics for this node.
NodeMetric *NodeMetricInfo `json:"nodeMetric,omitempty"`
// GroupMetric contains the metrics aggregated by QoS level groups
GroupMetric []GroupMetricInfo `json:"groupMetric,omitempty"`
}
NodeMetricStatus defines the observed state of NodeMetric
func (*NodeMetricStatus) DeepCopy ¶ added in v0.5.0
func (in *NodeMetricStatus) DeepCopy() *NodeMetricStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeMetricStatus.
func (*NodeMetricStatus) DeepCopyInto ¶ added in v0.5.0
func (in *NodeMetricStatus) DeepCopyInto(out *NodeMetricStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeProfileDescriptor ¶ added in v0.5.1
type NodeProfileDescriptor struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec defines the behavior of a NodeProfileDescriptor.
// +optional
Spec NodeProfileDescriptorSpec `json:"spec,omitempty"`
// Status represents the current information about a NodeProfileDescriptor.
// This data may not be up-to-date.
// +optional
Status NodeProfileDescriptorStatus `json:"status,omitempty"`
}
NodeProfileDescriptor captures information about node, such as node-related metrics NodeProfileDescriptor objects are non-namespaced.
func (*NodeProfileDescriptor) DeepCopy ¶ added in v0.5.1
func (in *NodeProfileDescriptor) DeepCopy() *NodeProfileDescriptor
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeProfileDescriptor.
func (*NodeProfileDescriptor) DeepCopyInto ¶ added in v0.5.1
func (in *NodeProfileDescriptor) DeepCopyInto(out *NodeProfileDescriptor)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NodeProfileDescriptor) DeepCopyObject ¶ added in v0.5.1
func (in *NodeProfileDescriptor) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type NodeProfileDescriptorList ¶ added in v0.5.1
type NodeProfileDescriptorList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
// items is the list of CNRs
Items []NodeProfileDescriptor `json:"items"`
}
NodeProfileDescriptorList is a collection of NodeProfileDescriptor objects.
func (*NodeProfileDescriptorList) DeepCopy ¶ added in v0.5.1
func (in *NodeProfileDescriptorList) DeepCopy() *NodeProfileDescriptorList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeProfileDescriptorList.
func (*NodeProfileDescriptorList) DeepCopyInto ¶ added in v0.5.1
func (in *NodeProfileDescriptorList) DeepCopyInto(out *NodeProfileDescriptorList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NodeProfileDescriptorList) DeepCopyObject ¶ added in v0.5.1
func (in *NodeProfileDescriptorList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type NodeProfileDescriptorSpec ¶ added in v0.5.1
type NodeProfileDescriptorSpec struct {
}
func (*NodeProfileDescriptorSpec) DeepCopy ¶ added in v0.5.1
func (in *NodeProfileDescriptorSpec) DeepCopy() *NodeProfileDescriptorSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeProfileDescriptorSpec.
func (*NodeProfileDescriptorSpec) DeepCopyInto ¶ added in v0.5.1
func (in *NodeProfileDescriptorSpec) DeepCopyInto(out *NodeProfileDescriptorSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeProfileDescriptorStatus ¶ added in v0.5.1
type NodeProfileDescriptorStatus struct {
// NodeMetrics contains the node-related metrics
// +optional
NodeMetrics []ScopedNodeMetrics `json:"nodeMetrics,omitempty"`
// PodMetrics contains the pod-related metrics
// +optional
PodMetrics []ScopedPodMetrics `json:"podMetrics,omitempty"`
}
func (*NodeProfileDescriptorStatus) DeepCopy ¶ added in v0.5.1
func (in *NodeProfileDescriptorStatus) DeepCopy() *NodeProfileDescriptorStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeProfileDescriptorStatus.
func (*NodeProfileDescriptorStatus) DeepCopyInto ¶ added in v0.5.1
func (in *NodeProfileDescriptorStatus) DeepCopyInto(out *NodeProfileDescriptorStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodMetric ¶ added in v0.5.1
type PodMetric struct {
// +optional
Namespace string `json:"namespace,omitempty"`
// +optional
Name string `json:"name,omitempty"`
// +optional
Metrics []MetricValue `json:"metrics,omitempty"`
}
func (*PodMetric) DeepCopy ¶ added in v0.5.1
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodMetric.
func (*PodMetric) DeepCopyInto ¶ added in v0.5.1
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Property ¶
type Property struct {
// property name
PropertyName string `json:"propertyName"`
// values of the specific property
// +optional
PropertyValues []string `json:"propertyValues,omitempty"`
// values of the quantity-types property
// +optional
PropertyQuantity *resource.Quantity `json:"propertyQuantity,omitempty"`
}
func (*Property) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Property.
func (*Property) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceMetric ¶ added in v0.5.0
type ResourceMetric struct {
CPU *resource.Quantity `json:"cpu,omitempty"`
Memory *resource.Quantity `json:"memory,omitempty"`
}
func (*ResourceMetric) DeepCopy ¶ added in v0.5.0
func (in *ResourceMetric) DeepCopy() *ResourceMetric
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetric.
func (*ResourceMetric) DeepCopyInto ¶ added in v0.5.0
func (in *ResourceMetric) DeepCopyInto(out *ResourceMetric)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourcePackage ¶ added in v0.5.7
type ResourcePackage struct {
// PackageName is the identifier for this package, e.g. "x2", "x8".
// Rules:
// - Names like "default" or "default-N" (N = integer) are reserved identifiers
// for the default package(s), which represent resources not explicitly
// subdivided into other named packages.
// - Other names are user-defined and may follow any convention
// (e.g., "x2", "x8").
PackageName string `json:"packageName"`
// Allocatable defines the total resources available for this package.
// Keys usually include "cpu" and "memory" (e.g. cpu: "64", memory: "128Gi").
Allocatable *v1.ResourceList `json:"allocatable,omitempty"`
}
ResourcePackage represents a single compute package definition. Concept:
- A ResourcePackage subdivides the node/numa’s total resources into standardized units.
- The most common naming convention is based on CPU:Memory ratio.
- Example: "x2" means 1 core : 2 GiB memory, "x8" means 1 core : 8 GiB memory
- In the future, packages may also define additional resource dimensions (e.g., local SSDs, network bandwidth, GPUs).
Behavior:
- Pods associated with this package must consume resources following the shape defined in Allocatable.
- A special "default" resource package (or "default-N" variants) represents all remaining resources not explicitly assigned to a named resource package.
Data source:
- ResourcePackages are derived from metrics reported in a NodeProfileDescriptor CRD.
- These metrics are aggregated (e.g., across NUMA nodes) to compute the Allocatable resources for each package.
func (*ResourcePackage) DeepCopy ¶ added in v0.5.7
func (in *ResourcePackage) DeepCopy() *ResourcePackage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourcePackage.
func (*ResourcePackage) DeepCopyInto ¶ added in v0.5.7
func (in *ResourcePackage) DeepCopyInto(out *ResourcePackage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourcePool ¶ added in v0.5.4
type ResourcePool struct {
// PoolName is the unique identifier of the resource pool.
PoolName string `json:"poolName"`
// MinAllocatable defines the minimum amount of resources *guaranteed* or reserved
// for this pool. This is the lower bound that the pool can always access.
// Interpretation:
// - Acts like a reservation or guaranteed quota.
// - Ensures workloads in this pool always get at least these resources.
MinAllocatable *v1.ResourceList `json:"minAllocatable,omitempty"`
// MaxAllocatable defines the maximum amount of resources this pool
// can consume, including any resources it may opportunistically
// borrowed from other pools.
// Interpretation:
// - Acts like an upper bound / quota ceiling.
// - Workloads in this pool cannot exceed this allocation, even if more
// resources are available on the node.
// - Supports resource sharing between pools, but with clear limits.
MaxAllocatable *v1.ResourceList `json:"maxAllocatable,omitempty"`
}
ResourcePool represents a pool of resources reserved for a specific workload type. Concept:
- A ResourcePool is workload-oriented. It defines a reserved or guaranteed set of resources and the possible upper bound for a workload (e.g., GPU workloads, latency-sensitive services).
- Unlike ResourcePackages (which divide total node/numa resources into fixed CPU:Memory bundles), ResourcePools allow flexible reservation and borrowing of resources.
Data source:
- ResourcePools are derived from metrics reported in a NodeProfileDescriptor CRD.
- These metrics are mapped into MinAllocatable/MaxAllocatable values.
func (*ResourcePool) DeepCopy ¶ added in v0.5.4
func (in *ResourcePool) DeepCopy() *ResourcePool
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourcePool.
func (*ResourcePool) DeepCopyInto ¶ added in v0.5.4
func (in *ResourcePool) DeepCopyInto(out *ResourcePool)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceUsage ¶ added in v0.5.0
type ResourceUsage struct {
// NUMAUsage contains the real-time resource usage for each NUMA
NUMAUsage []NUMAMetricInfo `json:"numaUsage,omitempty"`
// GenericUsage contains the real-time resource usage
GenericUsage *ResourceMetric `json:"genericUsage,omitempty"`
}
func (*ResourceUsage) DeepCopy ¶ added in v0.5.0
func (in *ResourceUsage) DeepCopy() *ResourceUsage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsage.
func (*ResourceUsage) DeepCopyInto ¶ added in v0.5.0
func (in *ResourceUsage) DeepCopyInto(out *ResourceUsage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Resources ¶ added in v0.1.2
type Resources struct {
// +optional
Allocatable *v1.ResourceList `json:"allocatable,omitempty"`
// +optional
Capacity *v1.ResourceList `json:"capacity,omitempty"`
// ResourcePackages defines compute packages available on the node/numa.
// Concept:
// - ResourcePackages are node/numa-oriented.
// - A ResourcePackage represents a subdivision of the total node/numa resources into
// standardized units. Each unit may define one or more resource dimensions
// (e.g., CPU, memory, disk, network).
// - Pods associated with a package must consume resources following the
// same ratio. If a Pod is not bound to a package, it falls back to
// the "default" package (or its variants: "default-1", "default-2").
// Difference vs ResourcePools:
// - ResourcePackages: split all node/numa resources into standard shapes (abstracting
// physical resources into units).
// - ResourcePools: reserve/limit resources for a particular workload type.
// +optional
// +listMapKey=packageName
// +listType=map
ResourcePackages []ResourcePackage `json:"resourcePackages,omitempty"`
// ResourcePools defines pools of resources reserved for specific workloads.
// Concept:
// - ResourcePools are workload-oriented.
// - They allow a workload type (e.g. GPU jobs, latency-sensitive tasks) to
// reserve a guaranteed amount of resources (via MinAllocatable) while
// also optionally borrowing up to a maximum limit (via MaxAllocatable).
// Difference vs ResourcePackages:
// - ResourcePools are for *workload reservations* (claiming resources for
// certain job types).
// - ResourcePackages are for *node subdivisions* (splitting all node resources into
// standard allocation units).
// +optional
// +listMapKey=poolName
// +listType=map
ResourcePools []ResourcePool `json:"resourcePools,omitempty"`
}
func (*Resources) DeepCopy ¶ added in v0.1.2
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Resources.
func (*Resources) DeepCopyInto ¶ added in v0.1.2
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScopedNodeMetrics ¶ added in v0.5.1
type ScopedNodeMetrics struct {
// +optional
Scope string `json:"scope,omitempty"`
// +optional
Metrics []MetricValue `json:"metrics,omitempty"`
}
func (*ScopedNodeMetrics) DeepCopy ¶ added in v0.5.1
func (in *ScopedNodeMetrics) DeepCopy() *ScopedNodeMetrics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScopedNodeMetrics.
func (*ScopedNodeMetrics) DeepCopyInto ¶ added in v0.5.1
func (in *ScopedNodeMetrics) DeepCopyInto(out *ScopedNodeMetrics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScopedPodMetrics ¶ added in v0.5.1
type ScopedPodMetrics struct {
// +optional
Scope string `json:"scope,omitempty"`
// +optional
PodMetrics []PodMetric `json:"podMetrics,omitempty"`
}
func (*ScopedPodMetrics) DeepCopy ¶ added in v0.5.1
func (in *ScopedPodMetrics) DeepCopy() *ScopedPodMetrics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScopedPodMetrics.
func (*ScopedPodMetrics) DeepCopyInto ¶ added in v0.5.1
func (in *ScopedPodMetrics) DeepCopyInto(out *ScopedPodMetrics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Sibling ¶ added in v0.1.7
type Sibling struct {
// Type represents the type of this Sibling.
// For instance, Socket, Numa, GPU, NIC, Disk and so on.
Type TopologyType `json:"type"`
// Name represents the name of this Sibling.
Name string `json:"name"`
// Attributes are the attributes of the relationship between two Zones.
// For instance, the distance between tow NUMA nodes, the connection type between two GPUs, etc.
// +patchMergeKey=name
// +patchStrategy=merge
Attributes []Attribute `json:"attributes,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
}
Sibling describes the relationship between two Zones.
func (*Sibling) DeepCopy ¶ added in v0.1.7
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sibling.
func (*Sibling) DeepCopyInto ¶ added in v0.1.7
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Taint ¶
type Taint struct {
// Taint is standard Kubernetes Taint
v1.Taint `json:",inline"`
// QoSLevel specifies the QoS level of pods that this taint applies to.
// +kubebuilder:validation:Enum=reclaimed_cores;shared_cores;dedicated_cores;system_cores
QoSLevel consts.QoSLevel `json:"qosLevel"`
}
Taint wraps standard Kubernetes Taint with QoSLevel.
func (*Taint) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Taint.
func (*Taint) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TopologyPolicy ¶ added in v0.1.2
type TopologyPolicy string
const ( // TopologyPolicyNone policy is the default policy and does not perform any topology alignment. TopologyPolicyNone TopologyPolicy = "None" // TopologyPolicySingleNUMANodeContainerLevel represents single-numa-node policy and container level. TopologyPolicySingleNUMANodeContainerLevel TopologyPolicy = "SingleNUMANodeContainerLevel" // TopologyPolicySingleNUMANodePodLevel represents single-numa-node policy and pod level. TopologyPolicySingleNUMANodePodLevel TopologyPolicy = "SingleNUMANodePodLevel" // TopologyPolicyRestrictedContainerLevel represents restricted policy and container level. TopologyPolicyRestrictedContainerLevel TopologyPolicy = "RestrictedContainerLevel" // TopologyPolicyRestrictedPodLevel represents restricted policy and pod level. TopologyPolicyRestrictedPodLevel TopologyPolicy = "RestrictedPodLevel" // TopologyPolicyBestEffortContainerLevel represents best-effort policy and container level. TopologyPolicyBestEffortContainerLevel TopologyPolicy = "BestEffortContainerLevel" // TopologyPolicyBestEffortPodLevel represents best-effort policy and pod level. TopologyPolicyBestEffortPodLevel TopologyPolicy = "BestEffortPodLevel" // TopologyPolicyNumericContainerLevel represents numeric policy and container level. TopologyPolicyNumericContainerLevel TopologyPolicy = "NumericContainerLevel" // TopologyPolicyNumericPodLevel represents numeric policy and pod level. TopologyPolicyNumericPodLevel TopologyPolicy = "NumericPodLevel" )
type TopologyType ¶ added in v0.1.2
type TopologyType string
const ( // TopologyTypeSocket indicates socket-level topology TopologyTypeSocket TopologyType = "Socket" // TopologyTypeNuma indicates numa-level topology TopologyTypeNuma TopologyType = "Numa" // TopologyTypeCacheGroup indicates cache-group-level topology TopologyTypeCacheGroup TopologyType = "L3CacheGroup" // TopologyTypeGPU indicates a zone for gpu device TopologyTypeGPU TopologyType = "GPU" // TopologyTypeNIC indicates a zone for network device TopologyTypeNIC TopologyType = "NIC" )
type TopologyZone ¶ added in v0.1.2
type TopologyZone struct {
// Type represents which kind of resource this TopologyZone is for;
// for instance, Socket, Numa, GPU, NIC, Disk and so on.
Type TopologyType `json:"type"`
// Name represents the name for the given type for resource; for instance,
// - disk-for-log, disk-for-storage may have different usage or attributes, so we
// need separate structure to distinguish them.
Name string `json:"name"`
// Resources defines the numeric quantities in this TopologyZone; for instance,
// - a TopologyZone with type TopologyTypeGPU may have both gpu and gpu-memory
// - a TopologyZone with type TopologyTypeNIC may have both ingress and egress bandwidth
// +optional
Resources Resources `json:"resources"`
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
Attributes []Attribute `json:"attributes,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
// +optional
// +patchMergeKey=consumer
// +patchStrategy=merge
Allocations []*Allocation `json:"allocations,omitempty" patchStrategy:"merge" patchMergeKey:"consumer"`
// Children represents the ownerships between multiple TopologyZone; for instance,
// - a TopologyZone with type TopologyTypeSocket may have multiple childed TopologyZone
// with type TopologyTypeNuma to reflect the physical connections for a node
// - a TopologyZone with type `nic` may have multiple childed TopologyZone with type `vf`
// to reflect the `physical and virtual` relations between devices
// todo: in order to bypass the lacked functionality of recursive structure definition,
// we need to skip validation of this field for now; will re-add this validation logic
// if the community supports $ref, for more information, please
// refer to https://github.com/kubernetes/kubernetes/issues/62872
// +optional
// +kubebuilder:validation:Schemaless
// +kubebuilder:pruning:PreserveUnknownFields
Children []*TopologyZone `json:"children,omitempty"`
// Siblings represents the relationship between TopologyZones at the same level; for instance,
// the distance between NUMA nodes.
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
Siblings []Sibling `json:"siblings,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
}
func (*TopologyZone) DeepCopy ¶ added in v0.1.2
func (in *TopologyZone) DeepCopy() *TopologyZone
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TopologyZone.
func (*TopologyZone) DeepCopyInto ¶ added in v0.1.2
func (in *TopologyZone) DeepCopyInto(out *TopologyZone)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.