WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] Enable Oprofile to separate samples by VCPU

To: "Santos, Jose Renato G" <joserenato.santos@xxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Enable Oprofile to separate samples by VCPU
From: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Date: Tue, 06 Jan 2009 14:05:32 +0000
Cc: weiming <zephyr.zhao@xxxxxxxxx>, Niraj Tolia <ntolia@xxxxxxxxx>
Delivery-date: Tue, 06 Jan 2009 06:05:57 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <EF547E542C520A4D858CFEF5B404D05331C21DCCF2@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Aclu6NdR+EzKIuwfTceNUnE53urM5QAurWygABkSVS0=
Thread-topic: [Xen-devel] [PATCH] Enable Oprofile to separate samples by VCPU
User-agent: Microsoft-Entourage/12.14.0.081024
Doesn't apply to linux-2.6.18-xen.hg. I'm not sure if it's a patch
formatting issue or if the patch applies to a different tree.

 -- Keir

On 06/01/2009 02:18, "Santos, Jose Renato G" <joserenato.santos@xxxxxx>
wrote:

> 
> Currently Oprofile cannot separate samples by VCPU for Xen domains in passive
> mode.
> This patch fix that.
> 
> Renato
> 
> =====================================
> Signed-of-by: Jose Renato Santos <jsantos@xxxxxxxxxx>
> 
> # HG changeset patch
> # User Jose Renato Santos <jsantos@xxxxxxxxxx>
> # Date 1221866450 25200
> # Node ID b01d4ed42d0904eefcc0b70899b5f388b0be4de7
> # Parent  7e3c615803843e8f06b1225ee9b94909f14b8d5e
> [xenoprof] Assign passive domain samples to the right vcpu.
> 
> diff -r 7e3c61580384 -r b01d4ed42d09 drivers/oprofile/buffer_sync.c
> --- a/drivers/oprofile/buffer_sync.c    Mon Aug 25 09:32:10 2008 -0700
> +++ b/drivers/oprofile/buffer_sync.c    Fri Sep 19 16:20:50 2008 -0700
> @@ -276,7 +276,15 @@ static unsigned long lookup_dcookie(stru
> 
> 
>  static unsigned long last_cookie = INVALID_COOKIE;
> -
> +
> +/* same as add_cpu_switch() without invalidating COOKIE */
> +static void add_vcpu_switch(int i)
> +{
> +       add_event_entry(ESCAPE_CODE);
> +       add_event_entry(CPU_SWITCH_CODE);
> +       add_event_entry(i);
> +}
> +
>  static void add_cpu_switch(int i)
>  {
>         add_event_entry(ESCAPE_CODE);
> @@ -572,6 +580,7 @@ void sync_buffer(int cpu)
>                         if (domain_switch) {
>                                 cpu_current_domain[cpu] = s->eip;
>                                 add_domain_switch(s->eip);
> +                               add_vcpu_switch(s->event);
>                                 domain_switch = 0;
>                         } else {
>                                 if (cpu_current_domain[cpu] !=
> @@ -595,6 +604,7 @@ void sync_buffer(int cpu)
>         /* We reset domain to COORDINATOR at each CPU switch */
>         if (cpu_current_domain[cpu] != COORDINATOR_DOMAIN) {
>                 add_domain_switch(COORDINATOR_DOMAIN);
> +               add_vcpu_switch(cpu);
>         }
> 
>         mark_done(cpu);
> diff -r 7e3c61580384 -r b01d4ed42d09 drivers/oprofile/cpu_buffer.c
> --- a/drivers/oprofile/cpu_buffer.c     Mon Aug 25 09:32:10 2008 -0700
> +++ b/drivers/oprofile/cpu_buffer.c     Fri Sep 19 16:20:50 2008 -0700
> @@ -281,7 +281,7 @@ void oprofile_add_trace(unsigned long pc
>         add_sample(cpu_buf, pc, 0);
>  }
> 
> -int oprofile_add_domain_switch(int32_t domain_id)
> +int oprofile_add_domain_switch(int32_t domain_id, unsigned int vcpu)
>  {
>         struct oprofile_cpu_buffer * cpu_buf =
> &cpu_buffer[smp_processor_id()];
> 
> @@ -293,7 +293,7 @@ int oprofile_add_domain_switch(int32_t d
>                 return 0;
> 
>         add_code(cpu_buf, CPU_DOMAIN_SWITCH);
> -       add_sample(cpu_buf, domain_id, 0);
> +       add_sample(cpu_buf, domain_id, vcpu);
> 
>         current_domain = domain_id;
> 
> diff -r 7e3c61580384 -r b01d4ed42d09 drivers/xen/xenoprof/xenoprofile.c
> --- a/drivers/xen/xenoprof/xenoprofile.c        Mon Aug 25 09:32:10 2008 -0700
> +++ b/drivers/xen/xenoprof/xenoprofile.c        Fri Sep 19 16:20:50 2008 -0700
> @@ -171,27 +171,23 @@ static void xenoprof_handle_passive(void
>  static void xenoprof_handle_passive(void)
>  {
>         int i, j;
> -       int flag_domain, flag_switch = 0;
> +       int flag_switch = 0;
> 
>         for (i = 0; i < pdomains; i++) {
> -               flag_domain = 0;
>                 for (j = 0; j < passive_domains[i].nbuf; j++) {
>                         xenoprof_buf_t *buf = p_xenoprof_buf[i][j];
>                         if (buf->event_head == buf->event_tail)
>                                 continue;
> -                       if (!flag_domain) {
> -                               if (!oprofile_add_domain_switch(
> -                                       passive_domains[i].domain_id))
> -                                       goto done;
> -                               flag_domain = 1;
> -                       }
> +                       if (!oprofile_add_domain_switch(
> +                                   passive_domains[i].domain_id, j))
> +                               goto done;
>                         xenoprof_add_pc(buf, 1);
>                         flag_switch = 1;
>                 }
>         }
>  done:
>         if (flag_switch)
> -               oprofile_add_domain_switch(COORDINATOR_DOMAIN);
> +               oprofile_add_domain_switch(COORDINATOR_DOMAIN,
> smp_processor_id());
>  }
> 
>  static irqreturn_t
> diff -r 7e3c61580384 -r b01d4ed42d09 include/linux/oprofile.h
> --- a/include/linux/oprofile.h  Mon Aug 25 09:32:10 2008 -0700
> +++ b/include/linux/oprofile.h  Fri Sep 19 16:20:50 2008 -0700
> @@ -86,7 +86,7 @@ void oprofile_add_trace(unsigned long ei
>  void oprofile_add_trace(unsigned long eip);
> 
>  /* add a domain switch entry */
> -int oprofile_add_domain_switch(int32_t domain_id);
> +int oprofile_add_domain_switch(int32_t domain_id, unsigned int vcpu);
> 
>  /**
>   * Create a file of the given name as a child of the given root, with
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>