go-qemu/pkg/types/smp.go
2025-03-28 11:09:50 -04:00

39 lines
1.6 KiB
Go

package types
/*
Note: Different machines may have different subsets of the CPU topology
parameters supported, so the actual meaning of the supported parameters
will vary accordingly. For example, for a machine type that supports a
three-level CPU hierarchy of sockets/cores/threads, the parameters will
sequentially mean as below:
sockets means the number of sockets on the machine board
cores means the number of cores in one socket
threads means the number of threads in one core
For a particular machine type board, an expected CPU topology hierarchy
can be defined through the supported sub-option. Unsupported parameters
can also be provided in addition to the sub-option, but their values
must be set as 1 in the purpose of correct parsing.
*/
type SMP struct {
// The number of initial CPUs
Cpus uint `json:"cpus,omitempty" omit:"tag"`
// Maximum number of total CPUs, including offline CPUs for hotplug, etc
MaxCpus uint `json:"maxcpus,omitempty"`
// Number of drawers on the machine board
Drawers uint `json:"drawers,omitempty"`
// Number of books in one drawer
Books uint `json:"books,omitempty"`
// Number of sockets in one book
Sockets uint `json:"sockets,omitempty"`
// Number of dies in one socket
Dies uint `json:"dies,omitempty"`
// Number of clusters in one die
Clusters uint `json:"clusters,omitempty"`
// Number of modules in one cluster
Modules uint `json:"modules,omitempty"`
// Number of cores in one module
Cores uint `json:"cores,omitempty"`
// Number of threads in one core
Threads uint `json:"threads,omitempty"`
}