diff --git a/common/pkg/sysinfo/numcpu_windows.go b/common/pkg/sysinfo/numcpu_windows.go index 13c42d2803..57f9ee4d4b 100644 --- a/common/pkg/sysinfo/numcpu_windows.go +++ b/common/pkg/sysinfo/numcpu_windows.go @@ -3,6 +3,7 @@ package sysinfo import ( + "math/bits" "unsafe" "golang.org/x/sys/windows" @@ -22,7 +23,5 @@ func numCPU() int { if ret == 0 { return 0 } - // For every available thread a bit is set in the mask. - ncpu := int(popcnt(uint64(mask))) - return ncpu + return bits.OnesCount64(uint64(mask)) } diff --git a/common/pkg/sysinfo/nummem_linux.go b/common/pkg/sysinfo/nummem_linux.go deleted file mode 100644 index 739a7ffb19..0000000000 --- a/common/pkg/sysinfo/nummem_linux.go +++ /dev/null @@ -1,32 +0,0 @@ -//go:build linux - -package sysinfo - -import ( - "unsafe" - - "golang.org/x/sys/unix" -) - -// NUMANodeCount queries the system for the count of Memory Nodes available -// for use to this process. -func NUMANodeCount() int { - // this is the correct flag name (not defined in the unix package) - //nolint:revive - MPOL_F_MEMS_ALLOWED := (1 << 2) - var mask [1024 / 64]uintptr - _, _, err := unix.RawSyscall6(unix.SYS_GET_MEMPOLICY, 0, uintptr(unsafe.Pointer(&mask[0])), uintptr(len(mask)*8), 0, uintptr(MPOL_F_MEMS_ALLOWED), 0) - if err != 0 { - return 0 - } - - // For every available thread a bit is set in the mask. - nmem := 0 - for _, e := range mask { - if e == 0 { - continue - } - nmem += int(popcnt(uint64(e))) - } - return nmem -} diff --git a/common/pkg/sysinfo/nummem_unsupported.go b/common/pkg/sysinfo/nummem_unsupported.go deleted file mode 100644 index 2b6bbaf2d2..0000000000 --- a/common/pkg/sysinfo/nummem_unsupported.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build (windows && ignore) || osx - -package sysinfo - -// NUMANodeCount queries the system for the count of Memory Nodes available -// for use to this process. Returns 0 on non NUMAs systems. -func NUMANodeCount() int { - return 0 -} diff --git a/common/pkg/sysinfo/sysinfo.go b/common/pkg/sysinfo/sysinfo.go index 7c6a4585c5..5086a9dcc8 100644 --- a/common/pkg/sysinfo/sysinfo.go +++ b/common/pkg/sysinfo/sysinfo.go @@ -133,16 +133,6 @@ func isCpusetListAvailable(provided, available string) (bool, error) { return true, nil } -// Returns bit count of 1, used by NumCPU -func popcnt(x uint64) (n byte) { - x -= (x >> 1) & 0x5555555555555555 - x = (x>>2)&0x3333333333333333 + x&0x3333333333333333 - x += x >> 4 - x &= 0x0f0f0f0f0f0f0f0f - x *= 0x0101010101010101 - return byte(x >> 56) -} - // GetDefaultPidsLimit returns the default pids limit to run containers with func GetDefaultPidsLimit() int64 { sysInfo := New(true) diff --git a/common/pkg/sysinfo/sysinfo_linux_test.go b/common/pkg/sysinfo/sysinfo_linux_test.go index 4c95b089aa..8b51d0437f 100644 --- a/common/pkg/sysinfo/sysinfo_linux_test.go +++ b/common/pkg/sysinfo/sysinfo_linux_test.go @@ -97,13 +97,3 @@ func TestNumCPU(t *testing.T) { t.Fatal("CPU returned must be greater than zero") } } - -func TestNumMems(t *testing.T) { - if _, err := os.Stat("/proc/self/numa_maps"); !errors.Is(err, os.ErrNotExist) { - t.Skip("NUMA must be supported") - } - cpuMems := NUMANodeCount() - if cpuMems < 0 { - t.Fatal("Invalid number of memory nodes, must be 0 or greater.") - } -}