Remove unneeded ncpu variable

This commit is contained in:
stuart nelson 2016-09-18 17:36:39 +02:00
parent 9f7822ccdc
commit 8cc06aab04
1 changed files with 10 additions and 12 deletions

View File

@ -50,15 +50,16 @@ setupSysctlMIBs() {
} }
int int
getCPUTimes(int *ncpu, char **cputime) { getCPUTimes(char **cputime) {
size_t len; size_t len;
// Get number of cpu cores. // Get number of cpu cores.
int mib[2]; int mib[2];
int ncpu;
mib[0] = CTL_HW; mib[0] = CTL_HW;
mib[1] = HW_NCPU; mib[1] = HW_NCPU;
len = sizeof(*ncpu); len = sizeof(ncpu);
if (sysctl(mib, 2, ncpu, &len, NULL, 0)) { if (sysctl(mib, 2, &ncpu, &len, NULL, 0)) {
return -1; return -1;
} }
@ -73,22 +74,22 @@ getCPUTimes(int *ncpu, char **cputime) {
long freq = clockrate.stathz > 0 ? clockrate.stathz : clockrate.hz; long freq = clockrate.stathz > 0 ? clockrate.stathz : clockrate.hz;
// Get the cpu times. // Get the cpu times.
struct kinfo_cputime cp_t[*ncpu]; struct kinfo_cputime cp_t[ncpu];
bzero(cp_t, sizeof(struct kinfo_cputime)*(*ncpu)); bzero(cp_t, sizeof(struct kinfo_cputime)*ncpu);
len = sizeof(cp_t[0])*(*ncpu); len = sizeof(cp_t[0])*ncpu;
if (sysctlbyname("kern.cputime", &cp_t, &len, NULL, 0)) { if (sysctlbyname("kern.cputime", &cp_t, &len, NULL, 0)) {
return -1; return -1;
} }
// string needs to hold (5*ncpu)(uint64_t + char) // string needs to hold (5*ncpu)(uint64_t + char)
// The char is the space between values. // The char is the space between values.
int cputime_size = (sizeof(uint64_t)+sizeof(char))*(5*(*ncpu)); int cputime_size = (sizeof(uint64_t)+sizeof(char))*(5*ncpu);
*cputime = (char *) malloc(cputime_size); *cputime = (char *) malloc(cputime_size);
bzero(*cputime, cputime_size); bzero(*cputime, cputime_size);
uint64_t user, nice, sys, intr, idle; uint64_t user, nice, sys, intr, idle;
user = nice = sys = intr = idle = 0; user = nice = sys = intr = idle = 0;
for (int i = 0; i < *ncpu; ++i) { for (int i = 0; i < ncpu; ++i) {
user = ((double) cp_t[i].cp_user) / freq; user = ((double) cp_t[i].cp_user) / freq;
nice = ((double) cp_t[i].cp_nice) / freq; nice = ((double) cp_t[i].cp_nice) / freq;
sys = ((double) cp_t[i].cp_sys) / freq; sys = ((double) cp_t[i].cp_sys) / freq;
@ -140,18 +141,15 @@ func (c *statCollector) Update(ch chan<- prometheus.Metric) error {
// //
// Look into sys/kern/kern_clock.c for details. // Look into sys/kern/kern_clock.c for details.
var ncpu C.int
var cpuTimesC *C.char var cpuTimesC *C.char
var fieldsCount = 5 var fieldsCount = 5
if C.getCPUTimes(&ncpu, &cpuTimesC) == -1 { if C.getCPUTimes(&cpuTimesC) == -1 {
return errors.New("could not retrieve CPU times") return errors.New("could not retrieve CPU times")
} }
cpuTimes := strings.Split(strings.TrimSpace(C.GoString(cpuTimesC)), " ") cpuTimes := strings.Split(strings.TrimSpace(C.GoString(cpuTimesC)), " ")
C.free(unsafe.Pointer(cpuTimesC)) C.free(unsafe.Pointer(cpuTimesC))
// TODO: Figure out why the string is always growing
fmt.Println(cpuTimes)
// Export order: user nice sys intr idle // Export order: user nice sys intr idle
cpuFields := []string{"user", "nice", "sys", "interrupt", "idle"} cpuFields := []string{"user", "nice", "sys", "interrupt", "idle"}