[PATCH] gcov: use mmap pools for KVP.
Martin Liška
mliska@suse.cz
Fri Jan 22 14:19:54 GMT 2021
On 1/22/21 3:10 PM, Jan Hubicka wrote:
>> On Fri, Jan 22, 2021 at 2:42 PM Martin Liška <mliska@suse.cz> wrote:
>>>
>>> On 1/22/21 2:38 PM, Jan Hubicka wrote:
>>>> This looks like reasonable solution for Linux (i was thinking of it too)
>>>> but I wonder what about setups w/o mmap support, like mingw32?
>>>
>>> The code still uses malloc approach then.
>>>
>>>> I think we need some fallback there. I was wondering if simply
>>>> disabling topn profiling until gcov_init time (where we seems to assume
>>>> that malloc already works) would work in that case.
>>>> We may lose some speculation during program construction, but that does
>>>> not seem very bad...
>>>
>>> This does not help you as we may still potentially call malloc during context
>>> when alternative allocator locks malloc/free functions.
>>>
>>> Note that situation is very rare and assuming mmap seems to me a reasonable.
>>
>> Btw, you may want to copy/split out the code from generic-morestack.c which
>> has a comment
>>
>> /* Some systems use LD_PRELOAD or similar tricks to add hooks to
>> mmap/munmap. That breaks this code, because when we call mmap
>> ...
>> Try to avoid the
>> problem by calling syscall directly. We only do this on GNU/Linux
>> for now, but it should be easy to add support for more systems with
>> testing. */
> Fun, but I can imagine people doing that...
>>
>> which suggests that we're going to run into the same issue as with malloc
>> when people profile their mmap hook ...
>>
>> Btw, I wonder if it's possible to bring back the original non-allocated counter
>> mode via some -fXYZ flag and using a different counter kind (so both
>> allocation schemes can co-exist?). On systems that cannot handle the
>> mmap path we could default to the old scheme.
>
> It is definitly doable (gcov machinery is quite flexible WRT having more
> types of counters).
Yes, that would introduce back the dropped TOPN counters which I intentionally
dropped.
> We could however also ask users to either resort to
> -fno-profile-values or implement mmap equivalent ifdefs to libgcov if
> they really care about malloc profiling.
Seems reasonable to me.
Well, the current approach makes some assumptions on mmap (and malloc), but
they seem reasonable to me. I don't expect anybody building Mingw Firefox PGO build,
it's likely unsupported configuration.
Another observation about the tcmalloc 'malloc' implementation. It hangs in a PGO build,
but libgcov would be happy if NULL would be returned.
Martin
>
> So personally I do not see this as a must feature (and I think Martin
> was really looking forward to drop the former topn profile
> implementation :)
>
> Another intersting case would be, of course, profiling of kernel...
>
> Honza
>
More information about the Gcc-patches
mailing list