mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 18:00:08 +00:00
Cleanup in topology.go
1. Find the minimal thread number within a core using a single loop rather than by sorting the thread numbers. 2. Inline getUniqueCoreID#err and Discover#numCPUs variables. 3. Narrow the scope of Discover#coreID and Discover#err variables. Signed-off-by: Arik Hadas <ahadas@redhat.com>
This commit is contained in:
parent
120bcd7ddd
commit
c3a533e5b2
@ -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