mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +00:00
Merge pull request #74016 from ahadas/topology_cleanup
Cleanup in topology.go
This commit is contained in:
commit
4b1282d925
@ -18,7 +18,6 @@ package topology
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
|
||||||
|
|
||||||
cadvisorapi "github.com/google/cadvisor/info/v1"
|
cadvisorapi "github.com/google/cadvisor/info/v1"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
@ -141,36 +140,33 @@ func (d CPUDetails) CPUsInCore(id int) cpuset.CPUSet {
|
|||||||
|
|
||||||
// Discover returns CPUTopology based on cadvisor node info
|
// Discover returns CPUTopology based on cadvisor node info
|
||||||
func Discover(machineInfo *cadvisorapi.MachineInfo) (*CPUTopology, error) {
|
func Discover(machineInfo *cadvisorapi.MachineInfo) (*CPUTopology, error) {
|
||||||
|
|
||||||
if machineInfo.NumCores == 0 {
|
if machineInfo.NumCores == 0 {
|
||||||
return nil, fmt.Errorf("could not detect number of cpus")
|
return nil, fmt.Errorf("could not detect number of cpus")
|
||||||
}
|
}
|
||||||
|
|
||||||
CPUDetails := CPUDetails{}
|
CPUDetails := CPUDetails{}
|
||||||
numCPUs := machineInfo.NumCores
|
|
||||||
numPhysicalCores := 0
|
numPhysicalCores := 0
|
||||||
var coreID int
|
|
||||||
var err error
|
|
||||||
|
|
||||||
for _, socket := range machineInfo.Topology {
|
for _, socket := range machineInfo.Topology {
|
||||||
numPhysicalCores += len(socket.Cores)
|
numPhysicalCores += len(socket.Cores)
|
||||||
for _, core := range socket.Cores {
|
for _, core := range socket.Cores {
|
||||||
if coreID, err = getUniqueCoreID(core.Threads); err != nil {
|
if coreID, err := getUniqueCoreID(core.Threads); err == nil {
|
||||||
klog.Errorf("could not get unique coreID for socket: %d core %d threads: %v",
|
|
||||||
socket.Id, core.Id, core.Threads)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
for _, cpu := range core.Threads {
|
for _, cpu := range core.Threads {
|
||||||
CPUDetails[cpu] = CPUInfo{
|
CPUDetails[cpu] = CPUInfo{
|
||||||
CoreID: coreID,
|
CoreID: coreID,
|
||||||
SocketID: socket.Id,
|
SocketID: socket.Id,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
klog.Errorf("could not get unique coreID for socket: %d core %d threads: %v",
|
||||||
|
socket.Id, core.Id, core.Threads)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &CPUTopology{
|
return &CPUTopology{
|
||||||
NumCPUs: numCPUs,
|
NumCPUs: machineInfo.NumCores,
|
||||||
NumSockets: len(machineInfo.Topology),
|
NumSockets: len(machineInfo.Topology),
|
||||||
NumCores: numPhysicalCores,
|
NumCores: numPhysicalCores,
|
||||||
CPUDetails: CPUDetails,
|
CPUDetails: CPUDetails,
|
||||||
@ -181,7 +177,6 @@ func Discover(machineInfo *cadvisorapi.MachineInfo) (*CPUTopology, error) {
|
|||||||
// for a given Threads []int slice. This will assure that coreID's are
|
// for a given Threads []int slice. This will assure that coreID's are
|
||||||
// platform unique (opposite to what cAdvisor reports - socket unique)
|
// platform unique (opposite to what cAdvisor reports - socket unique)
|
||||||
func getUniqueCoreID(threads []int) (coreID int, err error) {
|
func getUniqueCoreID(threads []int) (coreID int, err error) {
|
||||||
err = nil
|
|
||||||
if len(threads) == 0 {
|
if len(threads) == 0 {
|
||||||
return 0, fmt.Errorf("no cpus provided")
|
return 0, fmt.Errorf("no cpus provided")
|
||||||
}
|
}
|
||||||
@ -190,8 +185,12 @@ func getUniqueCoreID(threads []int) (coreID int, err error) {
|
|||||||
return 0, fmt.Errorf("cpus provided are not unique")
|
return 0, fmt.Errorf("cpus provided are not unique")
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpThreads := make([]int, len(threads))
|
min := threads[0]
|
||||||
copy(tmpThreads, threads)
|
for _, thread := range threads[1:] {
|
||||||
sort.Ints(tmpThreads)
|
if thread < min {
|
||||||
return tmpThreads[0], err
|
min = thread
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return min, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user