[LLVMdev] IC profiling infrastructure
Betul Buyukkurt
betulb at codeaurora.org
Mon Jun 29 06:14:22 PDT 2015
Ping?
-----Original Message-----
From: Betul Buyukkurt [mailto:betulb at codeaurora.org]
Sent: Thursday, June 25, 2015 11:47 AM
To: Xinliang David Li
Cc: Justin Bogner; Betul Buyukkurt; llvmdev
Subject: Re: [LLVMdev] IC profiling infrastructure
> Justin, do you have more concerns on keeping value_kind?
Hi Justin,
The next CL's according to the merge plan all depend on the value_kind.
Therefore both http://reviews.llvm.org/D10471 and
http://reviews.llvm.org/D10674 introduce it. Could you please review these
CL's?
As David stated, we need to bring the value_kind discussion to finalization
w/ a decision. Since the original IC profiling patches to today it's been
over two months and we're still not arrived at a conclusion.
-Betul
> If there is still disagreement, can we agree to move on with it for
> now ? After the initial version of the patches checked in, we can do
> more serious testings with large apps and revisit this if there are
> problems discovered.
>
> thanks,
>
> David
>
>
>
> On Mon, Jun 15, 2015 at 10:47 PM, Xinliang David Li
> <davidxl at google.com>
> wrote:
>>> But since the consumer is the frontend, and it knows which counts
>>> are which, it knows the kind, no? I don't understand how storing the
>>> kind info helps or hurts - it's just redundant.
>>
>> Yes, the frontend consumer knows, but the raw reader does not. It is
>> natural to do those processing when processing the raw profile data
>> (for instance when function pointer to name mapping still exists).
>>
>>>
>>>>>
>>>>> The other thing we should do is store which profiling options are
>>>>> enabled, in both formats. When we specify profile-instr-use it'll
>>>>> be less error prone if we can detect whether or not this includes
>>>>> indirect call profiling without checking other options, and it's
>>>>> probably a good idea for "llvm-profdata merge" to disallow merging
>>>>> profiles that are gathering different sets of data. A bitfield
>>>>> seems suitable for this.
>>>>
>>>> For value profiling, allowing profile-gen and profile-use passes
>>>> using different options is a useful feature. Consider the following
>>>> scenarios:
>>>> 1) collect the same profile data once with all kinds of value profile
>>>> data collected. The exact same profile data can be used in
>>>> performance
>>>> experiments with different kinds of value profiling
>>>> enabled/disabled
>>>
>>> This use case is pretty easy to accomodate for with the model where
>>> the profile stores its type. We could autodetect the type to decide
>>> how to interpret the profile, and if more specific profile flags are
>>> set simply ignore some of the data. The thing that the file format
>>> storing the type gives us is that it's harder to misinterpret the
>>> data by supplying the mismatching flags between reading and writing.
>>
>> Yes, this is achievable with some extra effort -- for instance by
>> collecting the profile sites of all kinds regardless of the flags.
>> After profiling matching, simply drop selected sites according to the
>> flags.
>>
>> This adds complexity of the code. With value kinds encoded in profile
>> data, the handling is much simpler -- each value profiler only needs
>> to deal with its own kind.
>>
>>>
>>>> 2) work around profile-use/value transformation bug selectively for
>>>> some file without the need to change anything in instrumentation
>>>> pass
>>>
>>> I'm not sure I understand what you mean here.
>>
>> Similar to the above, but for correctness.
>>
>>>
>>>> Besides, with the latest patch, the value_kind is not recorded in
>>>> each profile value thus the overhead is minimized.
>>>
>>> The overhead is low, sure, but the code complexity of dealing with
>>> the multiple kinds in this way is quite real.
>>
>> I actually believe having value-kind can help reduce code complexity
>> instead of the other way around. What is the extra complexity?
>>
>> thanks,
>>
>> David
>>
>>
>>>Since I'm not convinced we're
>>> getting real benefit from storing the kind, I don't believe this
>>>trade-off is worth it.
>>>
>>>> thanks,
>>>>
>>>> David
>
More information about the llvm-dev
mailing list