convert cpu times to seconds
This commit is contained in:
parent
083414a22a
commit
1146d10e26
|
@ -308,17 +308,17 @@ int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_cpu_metrics(sigar_cpu_t *cpu, char *line)
|
static void get_cpu_metrics(sigar_t *sigar, sigar_cpu_t *cpu, char *line)
|
||||||
{
|
{
|
||||||
char *ptr = sigar_skip_token(line); /* "cpu%d" */
|
char *ptr = sigar_skip_token(line); /* "cpu%d" */
|
||||||
|
|
||||||
cpu->user += sigar_strtoul(ptr);
|
cpu->user += sigar_strtoul(ptr) / sigar->ticks;
|
||||||
cpu->nice += sigar_strtoul(ptr);
|
cpu->nice += sigar_strtoul(ptr) / sigar->ticks;
|
||||||
cpu->sys += sigar_strtoul(ptr);
|
cpu->sys += sigar_strtoul(ptr) / sigar->ticks;
|
||||||
cpu->idle += sigar_strtoul(ptr);
|
cpu->idle += sigar_strtoul(ptr) / sigar->ticks;
|
||||||
if (*ptr == ' ') {
|
if (*ptr == ' ') {
|
||||||
/* 2.6+ kernels only */
|
/* 2.6+ kernels only */
|
||||||
cpu->wait += sigar_strtoul(ptr);
|
cpu->wait += sigar_strtoul(ptr) / sigar->ticks;
|
||||||
}
|
}
|
||||||
cpu->total += cpu->user + cpu->nice + cpu->sys + cpu->idle + cpu->wait;
|
cpu->total += cpu->user + cpu->nice + cpu->sys + cpu->idle + cpu->wait;
|
||||||
}
|
}
|
||||||
|
@ -333,7 +333,7 @@ int sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
SIGAR_ZERO(cpu);
|
SIGAR_ZERO(cpu);
|
||||||
get_cpu_metrics(cpu, buffer);
|
get_cpu_metrics(sigar, cpu, buffer);
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
@ -370,7 +370,7 @@ int sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist)
|
||||||
SIGAR_ZERO(cpu);
|
SIGAR_ZERO(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_cpu_metrics(cpu, ptr);
|
get_cpu_metrics(sigar, cpu, ptr);
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -381,7 +381,7 @@ int sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist)
|
||||||
/* likely older kernel where cpu\d is not present */
|
/* likely older kernel where cpu\d is not present */
|
||||||
cpu = &cpulist->data[cpulist->number++];
|
cpu = &cpulist->data[cpulist->number++];
|
||||||
SIGAR_ZERO(cpu);
|
SIGAR_ZERO(cpu);
|
||||||
get_cpu_metrics(cpu, cpu_total);
|
get_cpu_metrics(sigar, cpu, cpu_total);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
|
|
|
@ -86,6 +86,9 @@ typedef enum {
|
||||||
perf_offsets[ix] ? \
|
perf_offsets[ix] ? \
|
||||||
*((DWORD *)((BYTE *)counter_block + perf_offsets[ix])) : 0
|
*((DWORD *)((BYTE *)counter_block + perf_offsets[ix])) : 0
|
||||||
|
|
||||||
|
/* 1/100ns units to seconds */
|
||||||
|
#define NS100_2SEC(t) ((t) / 10000000)
|
||||||
|
|
||||||
static PERF_OBJECT_TYPE *get_perf_object(sigar_t *sigar, char *counter_key,
|
static PERF_OBJECT_TYPE *get_perf_object(sigar_t *sigar, char *counter_key,
|
||||||
DWORD *err)
|
DWORD *err)
|
||||||
{
|
{
|
||||||
|
@ -403,11 +406,11 @@ static int get_idle_cpu(sigar_t *sigar, sigar_cpu_t *cpu,
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<num; i++) {
|
for (i=0; i<num; i++) {
|
||||||
cpu->idle += info[i].IdleTime.QuadPart;
|
cpu->idle += NS100_2SEC(info[i].IdleTime.QuadPart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (idx < num) {
|
else if (idx < num) {
|
||||||
cpu->idle = info[idx].IdleTime.QuadPart;
|
cpu->idle = NS100_2SEC(info[idx].IdleTime.QuadPart);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return ERROR_INVALID_DATA;
|
return ERROR_INVALID_DATA;
|
||||||
|
@ -473,9 +476,11 @@ static int sigar_cpu_ntsys_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
||||||
SIGAR_ZERO(cpu);
|
SIGAR_ZERO(cpu);
|
||||||
|
|
||||||
for (i=0; i<num; i++) {
|
for (i=0; i<num; i++) {
|
||||||
cpu->idle += info[i].IdleTime.QuadPart;
|
cpu->idle += NS100_2SEC(info[i].IdleTime.QuadPart);
|
||||||
cpu->user += info[i].UserTime.QuadPart;
|
cpu->user += NS100_2SEC(info[i].UserTime.QuadPart);
|
||||||
cpu->sys += info[i].KernelTime.QuadPart - info[i].IdleTime.QuadPart;
|
cpu->sys += NS100_2SEC(info[i].KernelTime.QuadPart -
|
||||||
|
info[i].IdleTime.QuadPart);
|
||||||
|
cpu->total += cpu->idle + cpu->user + cpu->sys;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
|
@ -599,9 +604,10 @@ static int sigar_cpu_list_ntsys_get(sigar_t *sigar,
|
||||||
SIGAR_ZERO(cpu);
|
SIGAR_ZERO(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
idle = info[i].IdleTime.QuadPart;
|
idle = NS100_2SEC(info[i].IdleTime.QuadPart);
|
||||||
user = info[i].UserTime.QuadPart;
|
user = NS100_2SEC(info[i].UserTime.QuadPart);
|
||||||
sys = info[i].KernelTime.QuadPart - info[i].IdleTime.QuadPart;
|
sys = NS100_2SEC(info[i].KernelTime.QuadPart -
|
||||||
|
info[i].IdleTime.QuadPart);
|
||||||
cpu->idle += idle;
|
cpu->idle += idle;
|
||||||
cpu->user += user;
|
cpu->user += user;
|
||||||
cpu->sys += sys;
|
cpu->sys += sys;
|
||||||
|
@ -823,7 +829,7 @@ SIGAR_DECLARE(int) sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FILETIME2SEC(ft) \
|
#define FILETIME2SEC(ft) \
|
||||||
(((ft.dwHighDateTime << 32) | ft.dwLowDateTime) / 10000000)
|
NS100_2SEC(((ft.dwHighDateTime << 32) | ft.dwLowDateTime))
|
||||||
|
|
||||||
SIGAR_DECLARE(int) sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
|
SIGAR_DECLARE(int) sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
|
||||||
sigar_proc_time_t *proctime)
|
sigar_proc_time_t *proctime)
|
||||||
|
|
Loading…
Reference in New Issue