On 01.03.10 22:07:09, eran...@google.com wrote: > This patch adds support for randomizing the sampling period. > Randomization is very useful to mitigate the bias that exists > with sampling. The random number generator does not need to > be sophisticated. This patch uses the builtin random32() > generator. > > The user activates randomization by setting the perf_event_attr.random > field to 1 and by passing a bitmask to control the range of variation > above the base period. Period will vary from period to period & mask. > Note that randomization is not available when a target interrupt rate > (freq) is enabled.
Instead of providing a mask I would prefer to either use a bit width parameter there the mask can be calculated from or to specify a range the period may vary. > > The last used period can be collected using the PERF_SAMPLE_PERIOD flag > in sample_type. > > The patch has been tested on X86. There is also code for PowerPC but > I could not test it. > > Signed-off-by: Stephane Eranian <eran...@google.com> > > -- > arch/powerpc/kernel/perf_event.c | 3 +++ > arch/x86/kernel/cpu/perf_event.c | 2 ++ > arch/x86/kernel/cpu/perf_event_intel.c | 4 ++++ I agree with Peter, I also don't see the need to touch arch specific code. > include/linux/perf_event.h | 7 +++++-- > kernel/perf_event.c | 24 ++++++++++++++++++++++++ > 5 files changed, 38 insertions(+), 2 deletions(-) > [...] > +void perf_randomize_event_period(struct perf_event *event) > +{ > + u64 new_seed; > + u64 mask = event->attr.random_mask; > + > + event->hw.last_period = event->hw.sample_period; > + > + new_seed = random32(); > + > + if (unlikely(mask >> 32)) > + new_seed |= (u64)random32() << 32; > + > + event->hw.sample_period = event->attr.sample_period + (new_seed & mask); Only adding the random value will lead to longer sample periods on average. To compensate this you could calculate something like: event->hw.sample_period = event->attr.sample_period + (new_seed & mask) - (mask >> 1); Or, the offset is already in sample_period. Also a range check for sample_period is necessary to avoid over- or underflows. -Robert > +} -- Advanced Micro Devices, Inc. Operating System Research Center email: robert.rich...@amd.com ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel