Involved Source Files Package numcpus provides information about the number of CPUs in the system.
It gets the number of CPUs (online, offline, present, possible or kernel
maximum) on Linux, Darwin, FreeBSD, NetBSD, OpenBSD, DragonflyBSD,
Solaris/Illumos or Windows systems.
On Linux, the information is retrieved by reading the corresponding CPU
topology files in /sys/devices/system/cpu.
On BSD systems, the information is retrieved using the hw.ncpu and
hw.ncpuonline sysctls, if supported.
On Windows systems, the information is retrieved using the
GetActiveProcessorCount and GetMaximumProcessorCount functions, respectively.
Not all functions are supported on Darwin, FreeBSD, NetBSD, OpenBSD,
DragonflyBSD, Solaris/Illumos and Windows. ErrNotSupported is returned in
case a function is not supported on a particular platform.numcpus_linux.go
Code Examples
package main
import (
"fmt"
"os"
"github.com/tklauser/numcpus"
)
func main() {
offline, err := numcpus.GetOffline()
if err != nil {
fmt.Fprintf(os.Stderr, "GetOffline: %v\n", err)
}
fmt.Printf("# of offline CPUs: %v\n", offline)
}
package main
import (
"fmt"
"os"
"github.com/tklauser/numcpus"
)
func main() {
online, err := numcpus.GetOnline()
if err != nil {
fmt.Fprintf(os.Stderr, "GetOnline: %v\n", err)
}
fmt.Printf("# of online CPUs: %v\n", online)
}
package main
import (
"fmt"
"os"
"github.com/tklauser/numcpus"
)
func main() {
possible, err := numcpus.GetPossible()
if err != nil {
fmt.Fprintf(os.Stderr, "GetPossible: %v\n", err)
}
fmt.Printf("# of possible CPUs: %v\n", possible)
}
package main
import (
"fmt"
"os"
"github.com/tklauser/numcpus"
)
func main() {
present, err := numcpus.GetPresent()
if err != nil {
fmt.Fprintf(os.Stderr, "GetPresent: %v\n", err)
}
fmt.Printf("# of present CPUs: %v\n", present)
}
Package-Level Functions (total 6)
GetConfigured returns the number of CPUs configured on the system. This
function should return the same value as `getconf _SC_NPROCESSORS_CONF` on a
unix system.
GetKernelMax returns the maximum number of CPUs allowed by the kernel
configuration. This function is only supported on Linux and Windows systems.
GetOffline returns the number of offline CPUs, i.e. CPUs that are not online
because they have been hotplugged off or exceed the limit of CPUs allowed by
the kernel configuration (see GetKernelMax). This function is only supported
on Linux systems.
GetOnline returns the number of CPUs that are online and being scheduled.
GetPossible returns the number of possible CPUs, i.e. CPUs that
have been allocated resources and can be brought online if they are present.
GetPresent returns the number of CPUs present in the system.
Package-Level Variables (only one)
ErrNotSupported is the error returned when the function is not supported.
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.