
Hi Ben,
Yes, there are FFI calls between the two getRTSStats calls. FFI calls are C
APIs to get some OS stats like clock time or cpu time etc. Now I know that
this is not expected, let me try to minimize the example and see where it
goes. I will try removing the FFI calls as well.
-harendra
On 9 November 2017 at 23:49, Ben Gamari
Harendra Kumar
writes: Hi,
I am trying to use the mutator_cpu_ns and mutator_elapsed_ns from GHC 8.2 RTSStats structure retrieved using getRTSStats API documented here - https://hackage.haskell.org/package/base-4.10.0.0/docs/GHC-Stats.html .
I am seeing that the values of these stats retrieved about 30 ms later are lower than the values retrieved earlier. Sometimes even after 100 ms the values decrease from the previous ones. However, as the time duration between two calls increase this becomes less and less likely.
Is this an expected behavior or am I using it incorrectly? If it is expected, why does it happen, what is the underlying mechanism that makes it happen?
Hmm, interesting. I don't believe this should happen and I do know of bugs in the RTS's time accounting at exit-time (manifesting in profiling issues, e.g. #14257) however what you describe doesn't seem to fit that description. Do you have a simple repro? Is there anything special about your program (e.g. lots of FFI calls)?
Cheers,
- Ben