Just to echo what David said, PGO builds cause amorphous stability and even 
graphics/layout bugs (for instance bug 831296) that we're forced to investigate 
in engineering and QA for a specific release, even though the issues aren't 
typically caused by actual in-product regressions. Additionally, inconsistent 
PGO builds have been known to cause one-off crash spikes (like bug 799118) 
which prove to be a waste of time for our engineering/stability/QA groups.

It's definitely a world of pain that we should avoid if at all possible. I'm of 
the opinion that we should nuke it from orbit (option #1) if there's no 
obvious/significant user performance gains.

-Alex

On Jan 31, 2013, at 11:49 AM, David Anderson <bailo...@gmail.com> wrote:

> On Thursday, January 31, 2013 8:54:50 AM UTC-8, Ehsan Akhgari wrote:
>> On 2013-01-31 10:59 AM, ... wrote:
>> 
>>>> As a historical note, when we first enabled PGO support for Windows our
>> 
>>>> profiling scenario was "start Firefox, wait 10 seconds, shut down
>> 
>>>> Firefox". Enabling PGO with this profiling run provided us with 20-25%
>> 
>>>> perf improvements in many of our benchmarks on Talos. We later changed
>> 
>>>> it to the current set of profiling data[1] (Blueprint CSS samples, the
>> 
>>>> SunSpider benchmark), and there was almost no visible change in the
>> 
>>>> Talos numbers.
>> 
>>> 
>> 
>>> This seems to indicate our current coverage isn't oriented toward
>> 
>>> performance gains users will see, and that there are potential
>> 
>>> gains to be found. All the more reason to keep pgo around a while
>> 
>>> longer and figure out how we can simplify testing with different test
>> 
>>> runs.
>> 
>> 
>> 
>> There are costs to keeping PGO enabled, and while we can argue that we 
>> 
>> _could_ be getting more PGO gain by providing a better profile, one 
>> 
>> could counter-argue that engineers can spend more time optimizing other 
>> 
>> things if they didn't need to find the perfect profile (which is sort of 
>> 
>> a black magic.)
>> 
>> 
>> 
>>>> We should also remind that there would be an infra load win from
>> 
>>>> disabling Windows PGO builds.
>> 
>>> 
>> 
>>> IMHO, if it's a choice between infra load and better performance
>> 
>>> in the end product, performance should win out.
>> 
>> 
>> 
>> I agree, infrastructure load is not relevant to this conversation. 
>> 
>> There are tons of other ways to improve that besides disabling PGO.
>> 
>> 
>> 
>> Cheers,
>> 
>> Ehsan
> 
> I'm weighing in a little late here, but from the JS team's perspective, PGO 
> is a nightmare. It introduces subtle compiler bugs (often topcrashes) that 
> are extremely difficult to track down. We end up littering the codebase with 
> de-PGO hints. To date I have yet to see a PGO-only crash that manifests in 
> the JS engine, that was not directly caused by PGO.
> 
> Related, I don't think MOZ_LIKELY/UNLIKELY are either a good idea or would 
> cover the PGO gap. PGO does way more than just branch prediction, it has all 
> sorts of speculative partial inlining and register allocation tricks. (That, 
> unfortunately, are buggy.)
> 
> Anyway, disabling PGO is music to my ears - I'd bet money that our overall 
> crash-stats will improve.
> 
> -David
> _______________________________________________
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to