On 10/11/2012 02:33 AM, Mike Hommey wrote:
On Wed, Oct 10, 2012 at 05:57:53PM -0400, Justin Lebar wrote:
By "turning off Linux PGO testing", you really mean "stop making and
distributing Linux PGO builds," right?

The main reason I'd want Linux PGO is for mobile.  On desktop Linux,
most users (I expect) don't run our builds, so it's not a big deal if
they're some percent slower.

Many people have made claims about that at several different occasions.
Can we once and for all come up with actual data on that?

That being said, PGO on Linux is between 5 and 20% improvement on our
various talos tests. That's with the version of gcc we currently use,
which is 4.5. I'd expect 4.7 to do a better job even, especially if we
added lto to the equation (and since we are now building on x86-64
machines, we wouldn't have to worry about memory usage ; link time could
be a problem, though).

Also note that disabling PGO currently also means disabling the
optimizations we do on omni.ja (central directory optimizations and
reordering). This is somehow covered by bug 773171.

I wouldn't be surprised if most of the pgo benefit is because of bad inline decisions by gcc. If we can narrow the gap by adding MOZ_ALWAYS_INLINE, then maybe we can drop pgo.

I did a talos run during the last clang update to compare it with the previous version on OS X, but I now added linux runs to compare gcc 4.5 and clang on linux. The results are interesting (see attached file). dromaeo_dom shows a 31% improvement on 64 bits for example.

This also suggests another option: using clang on linux too. This would have the added benefit of using the same compiler for OS X and Linux, which would remove most of the argument of developers spending time on linux only issues. I can do a comparison of gcc+pgo and clang if others are interested.

Mike

Cheers,
Rafael

a11yr_paint
Fedora 12 - Constantine           | (527.681818182, 2.59651983057) -> (413.15,  
     1.41403960494)  1.2772x better
Fedora 12 x64 - Constantine       | (451.454545455, 1.24422992408) -> (349.45,  
     0.819984718342) 1.2919x better

dromaeo_css
Fedora 12 - Constantine           | (2152.09181818, 12.0144869607) -> 
(2639.839,     8.95312637755)  1.2266x better
Fedora 12 x64 - Constantine       | (2485.29272727, 13.7659449067) -> 
(2921.445,     17.8096790459)  1.1755x better

dromaeo_dom
Fedora 12 - Constantine           | (142.806181818, 0.744898237637) -> 
(187.9765,     0.650195498534) 1.3163x better
Fedora 12 x64 - Constantine       | (181.576818182, 0.806482009967) -> 
(232.0514,     1.34925457235)  1.2780x better

kraken
Fedora 12 - Constantine           | (3939.40909091, 71.9270328223) -> (3767.41, 
     71.3917310166)  1.0457x better
Fedora 12 x64 - Constantine       | (3579.29090909, 15.596652341)  -> (3446.56, 
     9.33275577468)  1.0385x better

num_ctors
CentOS (x86_64) release 5 (Final) | (232.0,        None)           -> (174.0,   
     None)           1.3333x better
CentOS release 5 (Final)          | (232.0,        None)           -> (174.0,   
     None)           1.3333x better

sunspider
Fedora 12 - Constantine           | (364.172727273, 1.5583412188)  -> (345.08,  
     1.26271089553)  1.0553x better
Fedora 12 x64 - Constantine       | (334.363636364, 2.07058055282) -> (321.97,  
     2.64172734312)  1.0385x better

tdhtmlr_nochrome_paint
Fedora 12 - Constantine           | (417.558727273, 0.728348424302) -> 
(392.9735,     0.424360042529) 1.0626x better
Fedora 12 x64 - Constantine       | (390.3705,     0.633414181048) -> 
(359.1264,     6.1131889195)   1.0870x better

tdhtmlr_paint
Fedora 12 - Constantine           | (433.884909091, 4.67646883558) -> 
(402.9236,     4.62643754814)  1.0768x better
Fedora 12 x64 - Constantine       | (398.0735,     3.51583823606)  -> 
(368.2883,     1.94210482286)  1.0809x better

tp5n_main_rss_paint
Fedora 12 - Constantine           | (114134400.0,  271577.523722)  -> 
(115129700.0,  280881.107982)  1.0087x worse
Fedora 12 x64 - Constantine       | (149395900.0,  563431.271779)  -> 
(148169900.0,  430915.422528)  1.0083x better

tp5n_paint
Fedora 12 - Constantine           | (377.5355,     2.28065749844)  -> 
(316.3663,     2.72038848381)  1.1933x better
Fedora 12 x64 - Constantine       | (325.3768,     3.31696113133)  -> 
(278.6602,     3.33314780988)  1.1676x better

tp5n_xres_paint
Fedora 12 - Constantine           | (7249195.0,    114562.779547)  -> 
(7640897.0,    218688.473551)  1.0540x worse

tpaint
Fedora 12 - Constantine           | (214.727272727, 2.47305127989) -> (187.4,   
     7.74235973322)  1.1458x better
Fedora 12 x64 - Constantine       | (203.545454545, 3.0539930444)  -> (173.2,   
     4.81738641223)  1.1752x better

tresize
Fedora 12 - Constantine           | (13.0813363636, 0.276579872514) -> 
(11.8753,      0.318387813206) 1.1016x better
Fedora 12 x64 - Constantine       | (12.0,         0.0)            -> (11.0,    
     0.0)            1.0909x better

ts_paint
Fedora 12 - Constantine           | (706.287090909, 3.15497376791) -> 
(641.8735,     3.61716922776)  1.1004x better
Fedora 12 x64 - Constantine       | (656.445,      1.80961735305)  -> 
(602.1632,     3.31640631973)  1.0901x better

tscrollr_paint
Fedora 12 x64 - Constantine       | (16857.3727273, 4.77056976419) -> 
(16833.32,     2.39441325698)  1.0014x better

tspaint_places_generated_max
Fedora 12 - Constantine           | (707.2684,     2.72687947138)  -> 
(641.3894,     3.16920410573)  1.1027x better
Fedora 12 x64 - Constantine       | (658.7789,     4.1605723528)   -> 
(604.4052,     1.60219463203)  1.0900x better

tspaint_places_generated_med
Fedora 12 - Constantine           | (700.1843,     4.30450967551)  -> 
(637.8155,     4.1260230609)   1.0978x better
Fedora 12 x64 - Constantine       | (657.1211,     4.50905085597)  -> 
(603.0895,     2.4221657736)   1.0896x better

tsvgr_opacity
Fedora 12 - Constantine           | (100.727272727, 1.10814017075) -> (86.2,    
     0.650233384763) 1.1685x better
Fedora 12 x64 - Constantine       | (81.45,        0.744935926267) -> (70.9,    
     0.758605615557) 1.1488x better

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

Reply via email to