Re: [patch 4/4] Handle memory unmap while hardware sampling isrunning

From: Robert Richter
Date: Mon Jan 03 2011 - 15:39:22 EST


On 20.12.10 08:05:45, graalfs@xxxxxxxxxxxxxxxxxx wrote:
> From: graalfs@xxxxxxxxxxxxxxxxxx
>
> During memory unmap hardware sampling is deactivated.
> After all samples have been collected hardware sampling is reactivated again.

Do you mean you switch off the profiler for each buffer sync? This
happens per default every 100ms. Why is this needed? Which memory is
unmapped?

This hooks in the sync_buffer() are ugly. We must try to find a better
solution here.

There is oprofile_put_buff() that allows to write directly to the the
event buffer which is used in powerpc/cell.

-Robert

>
> Signed-off-by: Mahesh Salgaonkar <mahesh@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Maran Pakkirisamy <maranp@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Heinz Graalfs <graalfs@xxxxxxxxxxxxxxxxxx>
> ---
> arch/s390/oprofile/hwsampler_files.c | 2 +-
> drivers/oprofile/buffer_sync.c | 13 +++++++++++++
> 2 files changed, 14 insertions(+), 1 deletion(-)
>
> Index: linux-2.6/drivers/oprofile/buffer_sync.c
> ===================================================================
> --- linux-2.6.orig/drivers/oprofile/buffer_sync.c
> +++ linux-2.6/drivers/oprofile/buffer_sync.c
> @@ -32,6 +32,11 @@
> #include <linux/sched.h>
> #include <linux/gfp.h>
>
> +#ifdef CONFIG_OPROFILE_HWSAMPLING_MODE
> +#include <asm/hwsampler.h>
> +extern unsigned long oprofile_hwsampler;
> +#endif
> +
> #include "oprofile_stats.h"
> #include "event_buffer.h"
> #include "cpu_buffer.h"
> @@ -513,6 +518,10 @@ void sync_buffer(int cpu)
>
> mutex_lock(&buffer_mutex);
>
> +#ifdef CONFIG_OPROFILE_HWSAMPLING_MODE
> + if (oprofile_hwsampler)
> + hwsampler_deactivate(cpu);
> +#endif
> add_cpu_switch(cpu);
>
> op_cpu_buffer_reset(cpu);
> @@ -569,6 +578,10 @@ void sync_buffer(int cpu)
>
> mark_done(cpu);
>
> +#ifdef CONFIG_OPROFILE_HWSAMPLING_MODE
> + if (oprofile_hwsampler)
> + hwsampler_activate(cpu);
> +#endif
> mutex_unlock(&buffer_mutex);
> }
>
> Index: linux-2.6/arch/s390/oprofile/hwsampler_files.c
> ===================================================================
> --- linux-2.6.orig/arch/s390/oprofile/hwsampler_files.c
> +++ linux-2.6/arch/s390/oprofile/hwsampler_files.c
> @@ -22,7 +22,7 @@ unsigned long oprofile_max_interval;
> static unsigned long oprofile_sdbt_blocks = DEFAULT_SDBT_BLOCKS;
> static unsigned long oprofile_sdb_blocks = DEFAULT_SDB_BLOCKS;
>
> -static unsigned long oprofile_hwsampler;
> +unsigned long oprofile_hwsampler;
>
> static int oprofile_hwsampler_start(void)
> {
>
>

--
Advanced Micro Devices, Inc.
Operating System Research Center

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/