On 2013-02-04 4:39 PM, Brian Smith wrote:> Ehsan Akhgari wrote:
>> On 2013-02-04 11:44 AM, Ehsan Akhgari wrote:
>>> 3. What is the performance difference between Visual Studio
>>> 2012 PGO builds and Visual Studio 2010 builds? IMO, before
>>> we decide whether to disable PGO on Windows, we need to get
>>> good benchmark results for Visual Studio **2012** PGO builds,
>>> to make sure we're not throwing away wins that could come
>>> "just" solving this problem in a different way + upgrading
>>> the compiler.
>>>
>>>
>>> That's something that we should probably measure as well. Filed
>>> bug 837724 for that.
>>
>> Note that I misread this and thought you're talking about VS2010 PGO
>> builds versus VS2012 non-PGO builds, and that's what bug 837724 is
>> about. As I've already said in this thread, VS2012 uses more memory
>> for PGO compilations than VS2010, so upgrading to that for PGO builds
>> is out of the question.
>
> That seems to be assuming that there is nothing reasonable we can do
to make VS2012 PGO builds work. However, in order to know what is a
reasonable amount of effort, you have to know what the benefits would
be. For example, let's say we lived in a magical alternate universe
where VS2012 PGO builds cut Firefox's memory usage by 50% and made
everything twice as fast compared to VS2010 PGO builds. Then, we would
consider even man-years of effort to be reasonable. On the other hand,
if Firefox were twice as slow when built with VS2012 PGO builds, then no
amount of effort would be reasonable. So, you have to know the
performance difference between VS2012 PGO builds and VS2010 PGO builds
before we can reject the possibility of VS2012 PGO.
I'm entirely puzzled by what you're suggesting here... VS2012 PGO
builds work fine. It's just that the linker max vmem usage is higher,
as I have mentioned in my first post to this thread. So for the current
discussion, we don't get any gains from switching to VS2012 (and in fact
we lost ~200MB of memory.) As long as that stands, any other changes in
the characteristics of Firefox compiled with VS2012 (such as Firefox's
memory usage or speed) are irrelevant for the current discussion.
If and when we decide to look into upgrading to VS2012 for other
reasons, those other factors can be investigated.
> Also, I want to echo khuey's comment: It seems like a lot of the
argument against PGO is that, while our benchmarks are faster, users
won't actually notice any difference. If that is true, then I agree with
khuey that that is a massive systemic failure; we shouldn't be guiding
development based on benchmarks that don't correlate positively with
user-visible improvement. If all of our benchmarks showing the benefits
of PGO are useless and there really isn't any difference between PGO and
non-PGO builds, then I'm not going to push for us to continue doing PGO
builds any more. But, in that case I hope we also come up with a plan
for making better benchmarks.
Nobody knows whether that's true or not for a fact. As mentioned
previously in this thread, the measurements that Vladan performed seem
to suggest that PGO builds can have a user visible effect in terms of
some performance characteristics we measure. Measurements performed by
dmandelin based on what appears on the screen shows that the difference
for a typical small work load is smaller than the resolution of the
measurement. These two can happen at the same time, there is no
contradiction between them.
> And, also, if PGO doesn't have a significant positive performance
difference, I would be very curious as to why not. Is PGO snake oil in
general? Is there something about our codebase that is
counter-productive to PGO? And, if the latter, then is there anything we
can do to undo that counter-productivity?
We don't know of anything going particularly bad in PGO builds of our
code base. If you look at the generated PGO code for most functions in
Gecko, you'll see that the compiler has heavily optimizied just about
everything that there is in the non-PGO optimized version of the same
function.
Cheers,
Ehsan
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform