add cpu.irq for windows
This commit is contained in:
parent
f03b59703e
commit
c0bd0b1830
|
@ -445,7 +445,7 @@ use vars qw(%classes %cmds);
|
|||
{
|
||||
name => 'irq', type => 'Long',
|
||||
desc => 'Total system cpu time servicing interrupts',
|
||||
plat => 'FLH'
|
||||
plat => 'FLHW'
|
||||
},
|
||||
{
|
||||
name => 'soft_irq', type => 'Long',
|
||||
|
@ -492,7 +492,7 @@ use vars qw(%classes %cmds);
|
|||
{
|
||||
name => 'irq', type => 'Double',
|
||||
desc => 'Percent system cpu time servicing interrupts',
|
||||
plat => 'FLH'
|
||||
plat => 'FLHW'
|
||||
},
|
||||
{
|
||||
name => 'soft_irq', type => 'Double',
|
||||
|
|
|
@ -49,8 +49,8 @@ public class CpuInfo extends SigarCommandBase {
|
|||
println("Wait Time....." + CpuPerc.format(cpu.getWait()));
|
||||
println("Nice Time....." + CpuPerc.format(cpu.getNice()));
|
||||
println("Combined......" + CpuPerc.format(cpu.getCombined()));
|
||||
if (SigarLoader.IS_LINUX) {
|
||||
println("Irq Time......" + CpuPerc.format(cpu.getIrq()));
|
||||
if (SigarLoader.IS_LINUX) {
|
||||
println("SoftIrq Time.." + CpuPerc.format(cpu.getSoftIrq()));
|
||||
println("Steal Time...." + CpuPerc.format(cpu.getSteal()));
|
||||
}
|
||||
|
|
|
@ -221,8 +221,9 @@ typedef struct {
|
|||
LARGE_INTEGER IdleTime;
|
||||
LARGE_INTEGER KernelTime;
|
||||
LARGE_INTEGER UserTime;
|
||||
LARGE_INTEGER Reserved1[2];
|
||||
ULONG Reserved2;
|
||||
LARGE_INTEGER DpcTime;
|
||||
LARGE_INTEGER InterruptTime;
|
||||
ULONG InterruptCount;
|
||||
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
|
||||
|
||||
#define SystemProcessorPerformanceInformation 8
|
||||
|
|
|
@ -37,11 +37,13 @@
|
|||
#define PERF_TITLE_CPU_USER 142
|
||||
#define PERF_TITLE_CPU_IDLE 1746
|
||||
#define PERF_TITLE_CPU_SYS 144
|
||||
#define PERF_TITLE_CPU_IRQ 698
|
||||
|
||||
typedef enum {
|
||||
PERF_IX_CPU_USER,
|
||||
PERF_IX_CPU_IDLE,
|
||||
PERF_IX_CPU_SYS,
|
||||
PERF_IX_CPU_IRQ,
|
||||
PERF_IX_CPU_MAX
|
||||
} perf_cpu_offsets_t;
|
||||
|
||||
|
@ -698,6 +700,9 @@ static PERF_INSTANCE_DEFINITION *get_cpu_instance(sigar_t *sigar,
|
|||
case PERF_TITLE_CPU_IDLE:
|
||||
perf_offsets[PERF_IX_CPU_IDLE] = offset;
|
||||
break;
|
||||
case PERF_TITLE_CPU_IRQ:
|
||||
perf_offsets[PERF_IX_CPU_IRQ] = offset;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -780,9 +785,10 @@ static int sigar_cpu_perflib_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
|||
cpu->sys = PERF_VAL_CPU(PERF_IX_CPU_SYS);
|
||||
cpu->user = PERF_VAL_CPU(PERF_IX_CPU_USER);
|
||||
status = get_idle_cpu(sigar, cpu, -1, counter_block, perf_offsets);
|
||||
cpu->irq = PERF_VAL_CPU(PERF_IX_CPU_IRQ);
|
||||
cpu->nice = 0; /* no nice here */
|
||||
cpu->wait = 0; /*N/A?*/
|
||||
cpu->total = cpu->sys + cpu->user + cpu->idle + cpu->wait;
|
||||
cpu->total = cpu->sys + cpu->user + cpu->idle + cpu->wait + cpu->irq;
|
||||
|
||||
if (status != SIGAR_OK) {
|
||||
sigar_log_printf(sigar, SIGAR_LOG_WARN,
|
||||
|
@ -814,6 +820,7 @@ static int sigar_cpu_ntsys_get(sigar_t *sigar, sigar_cpu_t *cpu)
|
|||
cpu->user += NS100_2MSEC(info[i].UserTime.QuadPart);
|
||||
cpu->sys += NS100_2MSEC(info[i].KernelTime.QuadPart -
|
||||
info[i].IdleTime.QuadPart);
|
||||
cpu->irq += NS100_2MSEC(info[i].InterruptTime.QuadPart);
|
||||
cpu->total += cpu->idle + cpu->user + cpu->sys;
|
||||
}
|
||||
|
||||
|
@ -879,11 +886,12 @@ static int sigar_cpu_list_perflib_get(sigar_t *sigar,
|
|||
|
||||
cpu->sys += PERF_VAL_CPU(PERF_IX_CPU_SYS);
|
||||
cpu->user += PERF_VAL_CPU(PERF_IX_CPU_USER);
|
||||
cpu->irq += PERF_VAL_CPU(PERF_IX_CPU_IRQ);
|
||||
get_idle_cpu(sigar, cpu, i, counter_block, perf_offsets);
|
||||
cpu->nice = cpu->wait = 0; /*N/A*/
|
||||
|
||||
/*XXX adding up too much here if xeon, but not using this atm*/
|
||||
cpu->total += cpu->sys + cpu->user + cpu->idle;
|
||||
cpu->total += cpu->sys + cpu->user + cpu->idle + cpu->irq;
|
||||
|
||||
inst = PdhNextInstance(inst);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue