It looks like what's happening is that the writer_thread is spinning constantly calling mono_lock_free_queue_dequeue(). Adding a nanosleep(100000) in the outer loop fixes the CPU usage, with no ill effects that I can see. How often does the writer thread need to dequeue/write out data?
As far as I can tell this would affect any users of the log profiler. chris -----Original Message----- From: Greg Young [mailto:[email protected]] Sent: Monday, August 15, 2016 5:15 PM To: Chris Swiedler <[email protected]> Cc: mono-devel-list <[email protected]> Subject: Re: [Mono-dev] Profiling with heapshot (only) +1 +https://github.com/mono/mono/blob/master/mono/profiler/proflog.c#L4811 ill have to try it then On Tue, Aug 16, 2016 at 1:12 AM, Chris Swiedler <[email protected]> wrote: > The heapshot option turns both of those off automatically (and empirically, > adding nocalls/noalloc doesn't help the CPU usage). > > chris > > -----Original Message----- > From: Greg Young [mailto:[email protected]] > Sent: Monday, August 15, 2016 5:07 PM > To: Chris Swiedler <[email protected]> > Cc: mono-devel-list <[email protected]> > Subject: Re: [Mono-dev] Profiling with heapshot (only) > > Likely also noalloc. > > Cheers, > > Greg > > On Tue, Aug 16, 2016 at 1:04 AM, Greg Young <[email protected]> wrote: >> https://github.com/mono/mono/blob/master/mono/profiler/proflog.c#L477 >> 2 >> >> Is an option you want. Without the enter/leave hooks are registered >> which has a significant cost. >> >> Not sure if this is the only option or just one of a few (have not >> tested on your use case) >> >> Cheers, >> >> Greg >> >> On Tue, Aug 16, 2016 at 12:57 AM, Chris Swiedler >> <[email protected]> wrote: >>> I'm trying to use the heapshot=ondemand feature of the logging profiler. I >>> want to turn off all of the other features of the logging profiler, since >>> the allocation/method tracing stuff runs too slow to be useful in the >>> situation that I need to test. However, even with a command line like this: >>> >>> mono-sgen --debug >>> --profile=log:heapshot,heapshot=ondemand,time=fast,port=7103,output= >>> % >>> p.mlpd >>> >>> ...I still get extremely high CPU usage in my apps. From what I understand >>> of the heapshot part of the profiler, it shouldn't need to incur any >>> overhead except when generating the heapshot file. Is there any way to >>> reduce the runtime overhead when it's not generating a heapshot? This link >>> suggests that I should disable counters, but I don't see any options for >>> that: >>> >>> http://mono.1490590.n4.nabble.com/Problems-with-mono-log-pofiler-td4 >>> 6 >>> 65572.html >>> >>> thanks, >>> chris >>> _______________________________________________ >>> Mono-devel-list mailing list >>> [email protected] >>> http://lists.dot.net/mailman/listinfo/mono-devel-list >> >> >> >> -- >> Studying for the Turing test > > > > -- > Studying for the Turing test -- Studying for the Turing test _______________________________________________ Mono-devel-list mailing list [email protected] http://lists.dot.net/mailman/listinfo/mono-devel-list
