Forcing apps to collect GC stats?

Johan Tibell johan.tibell at gmail.com
Thu Jul 31 17:00:32 UTC 2014


We already have GHC.Stats. It would be nice if it was put there.

On Thu, Jul 31, 2014 at 6:55 PM, Austin Seipp <austin at well-typed.com> wrote:
> The 'safe' mark was just an oversight from me - I don't really think
> it matters, considering it's only called once at startup anyway.
> Similarly I imagine the oversight is negligible in the Criterion or
> ekg case.
>
> And also, take note the conditional is very specific; you want
> COLLECT_GC_STATS only when NO_GC_STATS is the current setting - if you
> unconditionally force COLLECT_GC_STATS, then things like `+RTS
> -sstderr -RTS` will no longer work. I mention this because I messed it
> up originally. :)
>
> Given we already use this in GHC, and other users want it, it's
> probably reasonable to put such an interface in `base` somewhere, e.g.
>
> data GCStatisticsOption = NoStatistics | CollectStatistics |
> VerboseStatistics ...
>
> getGcStatistics :: IO GcStatisticsOption
> setGcStatistics :: GcStatisticsOption -> IO ()
> modifyGcStatistics :: (GcStatisticsOption -> GcStatisticsOption) -> IO ()
>
> or something like that.
>
> The special case inside GHC could then be handled with such an API I suppose.
>
>
> On Thu, Jul 31, 2014 at 11:41 AM, Johan Tibell <johan.tibell at gmail.com> wrote:
>> Indeed. I filed a bug earlier today to make use of this.
>>
>> On Thu, Jul 31, 2014 at 6:15 PM, Edward Kmett <ekmett at gmail.com> wrote:
>>> Interesting.
>>>
>>> I suppose ekg could also (ab)use this.
>>>
>>> Johan?
>>>
>>> -Edward
>>>
>>>
>>> On Thu, Jul 31, 2014 at 5:51 AM, Simon Marlow <marlowsd at gmail.com> wrote:
>>>>
>>>> Hey Bryan,
>>>>
>>>> Sorry for the delay.
>>>>
>>>>
>>>> On 15/07/14 01:57, Bryan O'Sullivan wrote:
>>>>>
>>>>> I spent a bit of time over the weekend trying to figure out how to force
>>>>> the RTS to collect GC statistics, but was unable to do so.
>>>>>
>>>>> I'm currently working on enriching criterion's ability to gather data,
>>>>> among which I'd like to see GC statistics. If I try to obtain GC stats
>>>>> using criterion when I'm not running the benchmark app with +RTS -T, I
>>>>> get an exception.
>>>>>
>>>>> Is there a way to allow criterion to forcibly enable stats collection?
>>>>> My efforts to do so have gotten me nowhere. It would be unfortunate if I
>>>>> had to tell users of criterion that they should always run with +RTS -T
>>>>> or add a -rtsopts clause, as they'll simply forget.
>>>>>
>>>>> And while I'm asking, why does GHC not simply collect GC stats by
>>>>> default? Collecting them seems to have zero cost, from what I can see?
>>>>
>>>>
>>>> So you can do this in the same way as GHC. See
>>>>
>>>>
>>>> https://phabricator.haskell.org/diffusion/GHC/browse/master/ghc/hschooks.c;6fa6caad0cb4ba99b2c0b444b0583190e743dd63$18-28
>>>>
>>>> Which is imported into Haskell like this:
>>>>
>>>>
>>>> https://phabricator.haskell.org/diffusion/GHC/browse/master/ghc/Main.hs;6fa6caad0cb4ba99b2c0b444b0583190e743dd63$847-848
>>>>
>>>> I'm not sure why it's marked "safe", but it doesn't hurt.
>>>>
>>>> This API is kind-of public, in the sense that we deliberately expose it
>>>> via the Rts.h header, and I'll try not to break it gratuitously.
>>>>
>>>> Cheers,
>>>> Simon
>>>>
>>>> _______________________________________________
>>>> ghc-devs mailing list
>>>> ghc-devs at haskell.org
>>>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>>
>>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>
>
>
>
> --
> Regards,
>
> Austin Seipp, Haskell Consultant
> Well-Typed LLP, http://www.well-typed.com/


More information about the ghc-devs mailing list