123456789101112131415161718192021222324252627282930313233 |
- package sysinfo // import "github.com/docker/docker/pkg/sysinfo"
- import (
- "runtime"
- "golang.org/x/sys/unix"
- )
- // numCPU queries the system for the count of threads available
- // for use to this process.
- //
- // Issues two syscalls.
- // Returns 0 on errors. Use |runtime.NumCPU| in that case.
- func numCPU() int {
- // Gets the affinity mask for a process: The very one invoking this function.
- pid := unix.Getpid()
- var mask unix.CPUSet
- err := unix.SchedGetaffinity(pid, &mask)
- if err != nil {
- return 0
- }
- return mask.Count()
- }
- // NumCPU returns the number of CPUs which are currently online
- func NumCPU() int {
- if ncpu := numCPU(); ncpu > 0 {
- return ncpu
- }
- return runtime.NumCPU()
- }
|