On 2013-01-31 2:49 PM, David Anderson 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.
As I explained in my first email, this thread does not cover PGO in the
JS engine.
Cheers,
Ehsan
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform