Messages in this thread | | | Subject | Re: [PATCH RFC] perf_counter: Don't swap contexts containing locked mutex | From | Peter Zijlstra <> | Date | Fri, 29 May 2009 10:10:44 +0200 |
| |
On Fri, 2009-05-29 at 10:06 +0200, Peter Zijlstra wrote: > > @@ -919,7 +919,8 @@ static int context_equiv(struct perf_counter_context *ctx1, > > struct perf_counter_context *ctx2) > > { > > return ctx1->parent_ctx && ctx1->parent_ctx == ctx2->parent_ctx > > - && ctx1->parent_gen == ctx2->parent_gen; > > + && ctx1->parent_gen == ctx2->parent_gen > > + && ctx1->parent_gen != ~0ull; > > } > > There's a nasty surprise for people a few generations down the line. All > of a sudden performance drops for a while for some unknown reason, and > then its good again,.. how odd ;-)
OK, so I was joking, but my brain just came up with:
static void inc_generation(struct perf_counter_ctx *ctx) { ctx->generation = ++ctx->generation & 0x7FFFFFFFFFFFFFFF; }
| |