diff -r 3b7cbf32fee9 xen/common/sched_credit.c --- a/xen/common/sched_credit.c Mon Aug 31 10:54:32 2009 +0100 +++ b/xen/common/sched_credit.c Mon Aug 31 14:07:53 2009 +0100 @@ -21,6 +21,7 @@ #include #include #include +#include /* * CSCHED_STATS @@ -226,7 +227,21 @@ if ( delta > 0 ) { atomic_sub(CSCHED_STIME_TO_CREDIT(delta)+1, &svc->credit); svc->start_time = now; - } + } + + if ( tb_init_done ) + { + struct { + int32_t credit; + int d:16,v:16; + } t; + + t.credit = atomic_read(&svc->credit); + t.d = svc->vcpu->domain->domain_id; + t.v = svc->vcpu->vcpu_id; + + __trace_var(TRC_SCHED_CREDIT_BURN, 0, sizeof(t), (unsigned char *)&t); + } } static inline void diff -r 3b7cbf32fee9 xen/include/public/trace.h --- a/xen/include/public/trace.h Mon Aug 31 10:54:32 2009 +0100 +++ b/xen/include/public/trace.h Mon Aug 31 14:07:53 2009 +0100 @@ -53,8 +53,11 @@ #define TRC_HVM_HANDLER 0x00082000 /* various HVM handlers */ #define TRC_SCHED_MIN 0x00021000 /* Just runstate changes */ +#define TRC_SCHED_SCHEDULER 0x00022000 /* Scheduler-specific */ #define TRC_SCHED_VERBOSE 0x00028000 /* More inclusive scheduling */ +#define TRC_SCHED_CREDIT (TRC_SCHED_SCHEDULER + 0x100) /* Credit scheduler tracing */ + /* Trace events per class */ #define TRC_LOST_RECORDS (TRC_GEN + 1) #define TRC_TRACE_WRAP_BUFFER (TRC_GEN + 2) @@ -79,6 +82,8 @@ #define TRC_SCHED_SWITCH_INFPREV (TRC_SCHED_VERBOSE + 14) #define TRC_SCHED_SWITCH_INFNEXT (TRC_SCHED_VERBOSE + 15) +#define TRC_SCHED_CREDIT_BURN (TRC_SCHED_CREDIT + 1) + #define TRC_MEM_PAGE_GRANT_MAP (TRC_MEM + 1) #define TRC_MEM_PAGE_GRANT_UNMAP (TRC_MEM + 2) #define TRC_MEM_PAGE_GRANT_TRANSFER (TRC_MEM + 3)