1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

stats: avoid cgo in collector

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi 2019-06-04 20:55:46 -07:00
parent 230a55d337
commit cf104d85c3

View file

@ -9,13 +9,9 @@ import (
"strings" "strings"
"github.com/opencontainers/runc/libcontainer/system" "github.com/opencontainers/runc/libcontainer/system"
"golang.org/x/sys/unix"
) )
/*
#include <unistd.h>
*/
import "C"
// platformNewStatsCollector performs platform specific initialisation of the // platformNewStatsCollector performs platform specific initialisation of the
// Collector structure. // Collector structure.
func platformNewStatsCollector(s *Collector) { func platformNewStatsCollector(s *Collector) {
@ -70,13 +66,10 @@ func (s *Collector) getSystemCPUUsage() (uint64, error) {
} }
func (s *Collector) getNumberOnlineCPUs() (uint32, error) { func (s *Collector) getNumberOnlineCPUs() (uint32, error) {
i, err := C.sysconf(C._SC_NPROCESSORS_ONLN) var cpuset unix.CPUSet
// According to POSIX - errno is undefined after successful err := unix.SchedGetaffinity(0, &cpuset)
// sysconf, and can be non-zero in several cases, so look for if err != nil {
// error in returned value not in errno.
// (https://sourceware.org/bugzilla/show_bug.cgi?id=21536)
if i == -1 {
return 0, err return 0, err
} }
return uint32(i), nil return uint32(cpuset.Count()), nil
} }