[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 03/16] xen: sched: improve domain creation tracing
by doing the following two things: - move TRC_SCHED_DOM_{ADD,REM}, into the functions that do the actual scheduling-related domain initialization; - add two 'generic' DOM_{ADD,REM} events. They're made part of the TRC_DOM0 tracing class, as Dom0 is, usually, from where domains are created and destroyed. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> --- Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- Changes from v1: * added generic domain creation and destruction events, as suggested during review. --- xen/common/domain.c | 5 ++++- xen/common/schedule.c | 4 ++-- xen/include/public/trace.h | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/xen/common/domain.c b/xen/common/domain.c index 425767c..45273d4 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -270,6 +270,8 @@ struct domain *domain_create(domid_t domid, unsigned int domcr_flags, d->domain_id = domid; + TRACE_1D(TRC_DOM0_DOM_ADD, d->domain_id); + lock_profile_register_struct(LOCKPROF_TYPE_PERDOM, d, domid, "Domain"); if ( (err = xsm_alloc_security_domain(d)) != 0 ) @@ -864,10 +866,11 @@ void domain_destroy(struct domain *d) if ( atomic_cmpxchg(&d->refcnt, 0, DOMAIN_DESTROYED) != 0 ) return; + TRACE_1D(TRC_DOM0_DOM_REM, d->domain_id); + cpupool_rm_domain(d); /* Delete from task list and task hashtable. */ - TRACE_1D(TRC_SCHED_DOM_REM, d->domain_id); spin_lock(&domlist_update_lock); pd = &domain_list; while ( *pd != d ) diff --git a/xen/common/schedule.c b/xen/common/schedule.c index c87922f..27695e3 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -241,8 +241,6 @@ int sched_init_vcpu(struct vcpu *v, unsigned int processor) if ( v->sched_priv == NULL ) return 1; - TRACE_2D(TRC_SCHED_DOM_ADD, v->domain->domain_id, v->vcpu_id); - /* Idle VCPUs are scheduled immediately, so don't put them in runqueue. */ if ( is_idle_domain(d) ) { @@ -369,12 +367,14 @@ void sched_destroy_vcpu(struct vcpu *v) int sched_init_domain(struct domain *d) { SCHED_STAT_CRANK(dom_init); + TRACE_1D(TRC_SCHED_DOM_ADD, d->domain_id); return SCHED_OP(DOM2OP(d), init_domain, d); } void sched_destroy_domain(struct domain *d) { SCHED_STAT_CRANK(dom_destroy); + TRACE_1D(TRC_SCHED_DOM_REM, d->domain_id); SCHED_OP(DOM2OP(d), destroy_domain, d); } diff --git a/xen/include/public/trace.h b/xen/include/public/trace.h index 274f8f6..5ef9c37 100644 --- a/xen/include/public/trace.h +++ b/xen/include/public/trace.h @@ -85,6 +85,9 @@ ((TRC_SCHED_##_c << TRC_SCHED_ID_SHIFT) & TRC_SCHED_ID_MASK) ) + \ (_e & TRC_SCHED_EVT_MASK) ) +/* Trace classes for DOM0 operations */ +#define TRC_DOM0_DOMOPS 0x00041000 /* Domains manipulations */ + /* Trace classes for Hardware */ #define TRC_HW_PM 0x00801000 /* Power management traces */ #define TRC_HW_IRQ 0x00802000 /* Traces relating to the handling of IRQs */ @@ -113,6 +116,9 @@ #define TRC_SCHED_SWITCH_INFNEXT (TRC_SCHED_VERBOSE + 15) #define TRC_SCHED_SHUTDOWN_CODE (TRC_SCHED_VERBOSE + 16) +#define TRC_DOM0_DOM_ADD (TRC_DOM0_DOMOPS + 1) +#define TRC_DOM0_DOM_REM (TRC_DOM0_DOMOPS + 2) + #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) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |