http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375

--- Comment #158 from Teresa Johnson <tejohnson at google dot com> 2012-12-12 
18:59:56 UTC ---
On Wed, Dec 12, 2012 at 3:43 AM, markus at trippelsdorf dot de
<gcc-bugzi...@gcc.gnu.org> wrote:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375
>
> --- Comment #157 from Markus Trippelsdorf <markus at trippelsdorf dot de> 
> 2012-12-12 11:43:27 UTC ---
> With revision 193740 libxul's size is ~34MB, which is OK.
>
> (Unfortunately this new ICE happens with yesterdays gcc when linking libxul:
>
> /var/tmp/mozilla-central/content/base/src/nsDocument.cpp: In member function
> ‘CreateRange’:
> /var/tmp/mozilla-central/content/base/src/nsDocument.cpp:4999:0: internal
> compiler error: in cgraph_mark_address_taken_node, at cgraph.c:1409
>
> I will open a new PR for this later.)
>
> Here are the requested files:
>
> (I don't know which of the ~3000 gcda files you need, so I've uploaded them
> all)
> http://www.trippelsdorf.de/gcda_before.tar.bz2 (4MB)
> http://www.trippelsdorf.de/gcda_after.tar.bz2  (4MB)

Sorry, I should have clarified that any one of them would do (as long
as it corresponded to an object file included in the LTO link for the
main executable), since the info I need is in the program summary
section for the executable, which is duplicated in each of them.

>
> (-fdump-ipa-inline output)
> http://www.trippelsdorf.de/libxul_before.inline.tar.bz2 (100MB)
> http://www.trippelsdorf.de/libxul_after.inline.tar.bz2  (68MB, everything 
> 'till
> the ICE hit)

With the old heuristics, the hot bb cutoff was:
                profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION))

In this case, sum_max is 103439951 and HOT_BB_COUNT_FRACTION was
10000, so the cutoff count was 10343.

From the working set computed from the histogram, the 99.9% cutoff
count is 320. See the end of this email for the full set of histograms
and working sets, but here are the top few working sets:

...
hal/Hal.gcda:           96.72%: num counts=30069, min counter=16389
hal/Hal.gcda:           97.50%: num counts=35296, min counter=10241
hal/Hal.gcda:           98.28%: num counts=43669, min counter=6145
hal/Hal.gcda:           99.06%: num counts=59589, min counter=3072
hal/Hal.gcda:           99.90%: num counts=115840, min counter=320

So it looks like you would want a cutoff of 97.5% to get close to what
was there before.

(Honza, I just made some changes to enable gcov-dump to optionally
compute and dump out the working sets from the histogram. I can send
this for upstream review as I have wanted this several times.)

The much smaller cutoff count is why there are fewer calls marked
unlikely and more inlining:

$ grep "call is unlikely" before/libxul.so.wpa.049i.inline  | wc
 442342 4944522 42560600

$ grep "call is unlikely" after/libxul.so.wpa.049i.inline  | wc
 392683 4349335 37477001

$ grep Inlined before/libxul.so.wpa.049i.inline  | grep eliminated
Inlined 60432 calls, eliminated 30986 functions

$ grep Inlined after/libxul.so.wpa.049i.inline  | grep eliminated
Inlined 89573 calls, eliminated 28921 functions

On thing that is interesting in the above info, and may be
contributing to the larger size now, is that there are more inlines,
but fewer functions are being eliminated. I'm not sure why that is
offhand. It's possible (probable) that inlining heuristics need some
retuning to make optimal use of the new cutoffs.

We also see additional inlines in some of our large internal apps with
the change, but not much increase in binary size, and it sometimes
leads to better performance - although we are not as much affected
because the google branches were using a much larger
HOT_BB_COUNT_FRACTION of 60K already, in order to get more inlining.
In this case, it looks like you are getting more inlines but it is
apparently performance-neutral?

Looking at a graph of the working set data, the number of counters
starts increasing super-exponentially as the percentages approach
100%. I've been thinking that it may be useful to find the "knee" of
the curve to determine the appropriate cutoff percentage. I'll see if
I can make some progress on that.

Full histogram/working set data:

hal/Hal.gcda: a3000000: 512:PROGRAM_SUMMARY checksum=0x3aa34521
hal/Hal.gcda: counts=2109045, runs=7, sum_all=9749748271,
run_max=97136704, sum_max=103439951
hal/Hal.gcda: counter histogram:
hal/Hal.gcda: 0: num counts=1824318, min counter=0, cum_counter=0
hal/Hal.gcda: 1: num counts=30727, min counter=1, cum_counter=30727
hal/Hal.gcda: 2: num counts=11646, min counter=2, cum_counter=23292
hal/Hal.gcda: 3: num counts=5414, min counter=3, cum_counter=16242
hal/Hal.gcda: 4: num counts=5156, min counter=4, cum_counter=20624
hal/Hal.gcda: 5: num counts=3379, min counter=5, cum_counter=16895
hal/Hal.gcda: 6: num counts=3674, min counter=6, cum_counter=22044
hal/Hal.gcda: 7: num counts=2310, min counter=7, cum_counter=16170
hal/Hal.gcda: 8: num counts=4756, min counter=8, cum_counter=40330
hal/Hal.gcda: 9: num counts=4725, min counter=10, cum_counter=49265
hal/Hal.gcda: 10: num counts=4256, min counter=12, cum_counter=52450
hal/Hal.gcda: 11: num counts=3424, min counter=14, cum_counter=49760
hal/Hal.gcda: 12: num counts=4936, min counter=16, cum_counter=86713
hal/Hal.gcda: 13: num counts=4025, min counter=20, cum_counter=86217
hal/Hal.gcda: 14: num counts=5271, min counter=24, cum_counter=134994
hal/Hal.gcda: 15: num counts=3052, min counter=28, cum_counter=89797
hal/Hal.gcda: 16: num counts=6812, min counter=32, cum_counter=241575
hal/Hal.gcda: 17: num counts=6269, min counter=40, cum_counter=274778
hal/Hal.gcda: 18: num counts=5652, min counter=48, cum_counter=289677
hal/Hal.gcda: 19: num counts=4240, min counter=56, cum_counter=253391
hal/Hal.gcda: 20: num counts=8321, min counter=64, cum_counter=592920
hal/Hal.gcda: 21: num counts=5824, min counter=80, cum_counter=508559
hal/Hal.gcda: 22: num counts=4846, min counter=96, cum_counter=497364
hal/Hal.gcda: 23: num counts=4014, min counter=112, cum_counter=478449
hal/Hal.gcda: 24: num counts=6460, min counter=128, cum_counter=919926
hal/Hal.gcda: 25: num counts=5253, min counter=160, cum_counter=916231
hal/Hal.gcda: 26: num counts=4072, min counter=192, cum_counter=844827
hal/Hal.gcda: 27: num counts=3544, min counter=224, cum_counter=850637
hal/Hal.gcda: 28: num counts=6143, min counter=256, cum_counter=1750280
hal/Hal.gcda: 29: num counts=4690, min counter=320, cum_counter=1648174
hal/Hal.gcda: 30: num counts=3864, min counter=384, cum_counter=1614077
hal/Hal.gcda: 31: num counts=3377, min counter=448, cum_counter=1616477
hal/Hal.gcda: 32: num counts=5986, min counter=512, cum_counter=3426093
hal/Hal.gcda: 33: num counts=4449, min counter=640, cum_counter=3100174
hal/Hal.gcda: 34: num counts=5339, min counter=768, cum_counter=4479538
hal/Hal.gcda: 35: num counts=3402, min counter=896, cum_counter=3264788
hal/Hal.gcda: 36: num counts=6139, min counter=1024, cum_counter=7017454
hal/Hal.gcda: 37: num counts=4224, min counter=1280, cum_counter=5931630
hal/Hal.gcda: 38: num counts=3957, min counter=1536, cum_counter=6576291
hal/Hal.gcda: 39: num counts=2747, min counter=1792, cum_counter=5236457
hal/Hal.gcda: 40: num counts=4640, min counter=2048, cum_counter=10611270
hal/Hal.gcda: 41: num counts=3733, min counter=2560, cum_counter=10510163
hal/Hal.gcda: 42: num counts=3079, min counter=3072, cum_counter=10242287
hal/Hal.gcda: 43: num counts=2651, min counter=3584, cum_counter=10140728
hal/Hal.gcda: 44: num counts=4434, min counter=4096, cum_counter=20361262
hal/Hal.gcda: 45: num counts=3987, min counter=5121, cum_counter=22720940
hal/Hal.gcda: 46: num counts=2943, min counter=6145, cum_counter=19504640
hal/Hal.gcda: 47: num counts=2334, min counter=7169, cum_counter=17826112
hal/Hal.gcda: 48: num counts=2817, min counter=8193, cum_counter=25598488
hal/Hal.gcda: 49: num counts=2779, min counter=10241, cum_counter=31417188
hal/Hal.gcda: 50: num counts=3033, min counter=12290, cum_counter=40410833
hal/Hal.gcda: 51: num counts=1853, min counter=14340, cum_counter=28478565
hal/Hal.gcda: 52: num counts=2655, min counter=16389, cum_counter=48690364
hal/Hal.gcda: 53: num counts=2445, min counter=20488, cum_counter=55375590
hal/Hal.gcda: 54: num counts=1691, min counter=24592, cum_counter=44944827
hal/Hal.gcda: 55: num counts=1436, min counter=28719, cum_counter=44036063
hal/Hal.gcda: 56: num counts=2533, min counter=32825, cum_counter=92560194
hal/Hal.gcda: 57: num counts=1974, min counter=41047, cum_counter=88298216
hal/Hal.gcda: 58: num counts=1635, min counter=49329, cum_counter=86653692
hal/Hal.gcda: 59: num counts=1131, min counter=57610, cum_counter=69796538
hal/Hal.gcda: 60: num counts=1638, min counter=65856, cum_counter=120165995
hal/Hal.gcda: 61: num counts=1227, min counter=82393, cum_counter=110414350
hal/Hal.gcda: 62: num counts=1420, min counter=98946, cum_counter=152171465
hal/Hal.gcda: 63: num counts=726, min counter=115741, cum_counter=89865259
hal/Hal.gcda: 64: num counts=1249, min counter=132608, cum_counter=184646974
hal/Hal.gcda: 65: num counts=862, min counter=165900, cum_counter=156618404
hal/Hal.gcda: 66: num counts=930, min counter=198695, cum_counter=199922412
hal/Hal.gcda: 67: num counts=628, min counter=232660, cum_counter=156498665
hal/Hal.gcda: 68: num counts=1136, min counter=266317, cum_counter=338816591
hal/Hal.gcda: 69: num counts=736, min counter=333978, cum_counter=267217317
hal/Hal.gcda: 70: num counts=589, min counter=401495, cum_counter=256810939
hal/Hal.gcda: 71: num counts=431, min counter=469085, cum_counter=216371731
hal/Hal.gcda: 72: num counts=581, min counter=536827, cum_counter=351453204
hal/Hal.gcda: 73: num counts=387, min counter=672090, cum_counter=287503062
hal/Hal.gcda: 74: num counts=345, min counter=811897, cum_counter=302673649
hal/Hal.gcda: 75: num counts=246, min counter=951474, cum_counter=250577118
hal/Hal.gcda: 76: num counts=315, min counter=1084378, cum_counter=382079125
hal/Hal.gcda: 77: num counts=224, min counter=1362634, cum_counter=336536846
hal/Hal.gcda: 78: num counts=142, min counter=1643302, cum_counter=252854048
hal/Hal.gcda: 79: num counts=104, min counter=1925957, cum_counter=215119385
hal/Hal.gcda: 80: num counts=131, min counter=2211770, cum_counter=321748834
hal/Hal.gcda: 81: num counts=123, min counter=2739896, cum_counter=373169753
hal/Hal.gcda: 82: num counts=72, min counter=3277758, cum_counter=253778382
hal/Hal.gcda: 83: num counts=38, min counter=3853957, cum_counter=158229587
hal/Hal.gcda: 84: num counts=59, min counter=4384565, cum_counter=282974111
hal/Hal.gcda: 85: num counts=56, min counter=5467360, cum_counter=340377441
hal/Hal.gcda: 86: num counts=37, min counter=6569721, cum_counter=254677959
hal/Hal.gcda: 87: num counts=17, min counter=7670909, cum_counter=138198211
hal/Hal.gcda: 88: num counts=31, min counter=8797370, cum_counter=300444212
hal/Hal.gcda: 89: num counts=9, min counter=11064352, cum_counter=104597973
hal/Hal.gcda: 90: num counts=5, min counter=13196116, cum_counter=68483280
hal/Hal.gcda: 91: num counts=25, min counter=15471823, cum_counter=405406333
hal/Hal.gcda: 92: num counts=39, min counter=17739191, cum_counter=769153481
hal/Hal.gcda: 93: num counts=1, min counter=23220597, cum_counter=23248710
hal/Hal.gcda: 94: num counts=1, min counter=26834310, cum_counter=26862423
hal/Hal.gcda: 95: num counts=5, min counter=31885437, cum_counter=169003071
hal/Hal.gcda: 96: num counts=1, min counter=33576018, cum_counter=34881284
hal/Hal.gcda: 99: num counts=1, min counter=60798823, cum_counter=60799245
hal/Hal.gcda: 102: num counts=2, min counter=100714244, cum_counter=204154195
hal/Hal.gcda: counter working sets:
hal/Hal.gcda: 0.78%: num counts=1, min counter=100714244
hal/Hal.gcda: 1.56%: num counts=2, min counter=100714244
hal/Hal.gcda: 2.34%: num counts=3, min counter=60798823
hal/Hal.gcda: 3.12%: num counts=5, min counter=31885437
hal/Hal.gcda: 3.90%: num counts=7, min counter=31885437
hal/Hal.gcda: 4.68%: num counts=9, min counter=31885437
hal/Hal.gcda: 5.46%: num counts=12, min counter=17739191
hal/Hal.gcda: 6.24%: num counts=17, min counter=17739191
hal/Hal.gcda: 7.02%: num counts=21, min counter=17739191
hal/Hal.gcda: 7.80%: num counts=25, min counter=17739191
hal/Hal.gcda: 8.58%: num counts=29, min counter=17739191
hal/Hal.gcda: 9.36%: num counts=34, min counter=17739191
hal/Hal.gcda: 10.14%: num counts=38, min counter=17739191
hal/Hal.gcda: 10.92%: num counts=42, min counter=17739191
hal/Hal.gcda: 11.70%: num counts=47, min counter=17739191
hal/Hal.gcda: 12.48%: num counts=50, min counter=17739191
hal/Hal.gcda: 13.26%: num counts=51, min counter=15471823
hal/Hal.gcda: 14.04%: num counts=56, min counter=15471823
hal/Hal.gcda: 14.82%: num counts=61, min counter=15471823
hal/Hal.gcda: 15.60%: num counts=66, min counter=15471823
hal/Hal.gcda: 16.38%: num counts=71, min counter=15471823
hal/Hal.gcda: 17.16%: num counts=75, min counter=15471823
hal/Hal.gcda: 17.94%: num counts=80, min counter=13196116
hal/Hal.gcda: 18.72%: num counts=86, min counter=11064352
hal/Hal.gcda: 19.50%: num counts=94, min counter=8797370
hal/Hal.gcda: 20.28%: num counts=102, min counter=8797370
hal/Hal.gcda: 21.06%: num counts=111, min counter=8797370
hal/Hal.gcda: 21.84%: num counts=120, min counter=8797370
hal/Hal.gcda: 22.62%: num counts=126, min counter=7670909
hal/Hal.gcda: 23.40%: num counts=136, min counter=7670909
hal/Hal.gcda: 24.18%: num counts=146, min counter=6569721
hal/Hal.gcda: 24.96%: num counts=158, min counter=6569721
hal/Hal.gcda: 25.74%: num counts=169, min counter=6569721
hal/Hal.gcda: 26.52%: num counts=180, min counter=5467360
hal/Hal.gcda: 27.30%: num counts=194, min counter=5467360
hal/Hal.gcda: 28.08%: num counts=208, min counter=5467360
hal/Hal.gcda: 28.86%: num counts=222, min counter=5467360
hal/Hal.gcda: 29.64%: num counts=230, min counter=5467360
hal/Hal.gcda: 30.42%: num counts=247, min counter=4384565
hal/Hal.gcda: 31.20%: num counts=264, min counter=4384565
hal/Hal.gcda: 31.98%: num counts=281, min counter=4384565
hal/Hal.gcda: 32.76%: num counts=294, min counter=3853957
hal/Hal.gcda: 33.54%: num counts=313, min counter=3853957
hal/Hal.gcda: 34.32%: num counts=331, min counter=3277758
hal/Hal.gcda: 35.10%: num counts=354, min counter=3277758
hal/Hal.gcda: 35.88%: num counts=377, min counter=3277758
hal/Hal.gcda: 36.66%: num counts=399, min counter=3277758
hal/Hal.gcda: 37.44%: num counts=422, min counter=2739896
hal/Hal.gcda: 38.22%: num counts=450, min counter=2739896
hal/Hal.gcda: 39.00%: num counts=477, min counter=2739896
hal/Hal.gcda: 39.78%: num counts=505, min counter=2739896
hal/Hal.gcda: 40.56%: num counts=522, min counter=2739896
hal/Hal.gcda: 41.34%: num counts=554, min counter=2211770
hal/Hal.gcda: 42.12%: num counts=588, min counter=2211770
hal/Hal.gcda: 42.90%: num counts=622, min counter=2211770
hal/Hal.gcda: 43.68%: num counts=653, min counter=2211770
hal/Hal.gcda: 44.46%: num counts=680, min counter=1925957
hal/Hal.gcda: 45.24%: num counts=720, min counter=1925957
hal/Hal.gcda: 46.02%: num counts=757, min counter=1925957
hal/Hal.gcda: 46.80%: num counts=797, min counter=1643302
hal/Hal.gcda: 47.58%: num counts=843, min counter=1643302
hal/Hal.gcda: 48.36%: num counts=890, min counter=1643302
hal/Hal.gcda: 49.14%: num counts=929, min counter=1362634
hal/Hal.gcda: 49.92%: num counts=985, min counter=1362634
hal/Hal.gcda: 50.70%: num counts=1041, min counter=1362634
hal/Hal.gcda: 51.48%: num counts=1097, min counter=1362634
hal/Hal.gcda: 52.26%: num counts=1132, min counter=1084378
hal/Hal.gcda: 53.04%: num counts=1202, min counter=1084378
hal/Hal.gcda: 53.82%: num counts=1272, min counter=1084378
hal/Hal.gcda: 54.60%: num counts=1342, min counter=1084378
hal/Hal.gcda: 55.38%: num counts=1412, min counter=1084378
hal/Hal.gcda: 56.16%: num counts=1446, min counter=951474
hal/Hal.gcda: 56.94%: num counts=1526, min counter=951474
hal/Hal.gcda: 57.72%: num counts=1606, min counter=951474
hal/Hal.gcda: 58.50%: num counts=1684, min counter=951474
hal/Hal.gcda: 59.28%: num counts=1760, min counter=811897
hal/Hal.gcda: 60.06%: num counts=1854, min counter=811897
hal/Hal.gcda: 60.84%: num counts=1948, min counter=811897
hal/Hal.gcda: 61.62%: num counts=2029, min counter=811897
hal/Hal.gcda: 62.40%: num counts=2124, min counter=672090
hal/Hal.gcda: 63.18%: num counts=2237, min counter=672090
hal/Hal.gcda: 63.96%: num counts=2351, min counter=672090
hal/Hal.gcda: 64.74%: num counts=2425, min counter=536827
hal/Hal.gcda: 65.52%: num counts=2567, min counter=536827
hal/Hal.gcda: 66.30%: num counts=2709, min counter=536827
hal/Hal.gcda: 67.08%: num counts=2851, min counter=536827
hal/Hal.gcda: 67.86%: num counts=2993, min counter=536827
hal/Hal.gcda: 68.64%: num counts=3070, min counter=469085
hal/Hal.gcda: 69.42%: num counts=3232, min counter=469085
hal/Hal.gcda: 70.20%: num counts=3395, min counter=469085
hal/Hal.gcda: 70.98%: num counts=3543, min counter=401495
hal/Hal.gcda: 71.76%: num counts=3733, min counter=401495
hal/Hal.gcda: 72.54%: num counts=3923, min counter=401495
hal/Hal.gcda: 73.32%: num counts=4071, min counter=333978
hal/Hal.gcda: 74.10%: num counts=4299, min counter=333978
hal/Hal.gcda: 74.88%: num counts=4527, min counter=333978
hal/Hal.gcda: 75.66%: num counts=4753, min counter=333978
hal/Hal.gcda: 76.44%: num counts=4961, min counter=266317
hal/Hal.gcda: 77.22%: num counts=5247, min counter=266317
hal/Hal.gcda: 78.00%: num counts=5533, min counter=266317
hal/Hal.gcda: 78.78%: num counts=5819, min counter=266317
hal/Hal.gcda: 79.56%: num counts=5980, min counter=232660
hal/Hal.gcda: 80.34%: num counts=6308, min counter=232660
hal/Hal.gcda: 81.12%: num counts=6603, min counter=198695
hal/Hal.gcda: 81.90%: num counts=6986, min counter=198695
hal/Hal.gcda: 82.68%: num counts=7370, min counter=198695
hal/Hal.gcda: 83.46%: num counts=7722, min counter=165900
hal/Hal.gcda: 84.24%: num counts=8181, min counter=165900
hal/Hal.gcda: 85.02%: num counts=8621, min counter=132608
hal/Hal.gcda: 85.80%: num counts=9195, min counter=132608
hal/Hal.gcda: 86.58%: num counts=9636, min counter=115741
hal/Hal.gcda: 87.36%: num counts=10284, min counter=115741
hal/Hal.gcda: 88.14%: num counts=11007, min counter=98946
hal/Hal.gcda: 88.92%: num counts=11704, min counter=98946
hal/Hal.gcda: 89.70%: num counts=12574, min counter=82393
hal/Hal.gcda: 90.48%: num counts=13499, min counter=65856
hal/Hal.gcda: 91.26%: num counts=14569, min counter=65856
hal/Hal.gcda: 92.04%: num counts=15700, min counter=57610
hal/Hal.gcda: 92.82%: num counts=17240, min counter=49329
hal/Hal.gcda: 93.60%: num counts=18930, min counter=41047
hal/Hal.gcda: 94.38%: num counts=20933, min counter=32825
hal/Hal.gcda: 95.16%: num counts=23128, min counter=28719
hal/Hal.gcda: 95.94%: num counts=26146, min counter=20488
hal/Hal.gcda: 96.72%: num counts=30069, min counter=16389
hal/Hal.gcda: 97.50%: num counts=35296, min counter=10241
hal/Hal.gcda: 98.28%: num counts=43669, min counter=6145
hal/Hal.gcda: 99.06%: num counts=59589, min counter=3072
hal/Hal.gcda: 99.90%: num counts=115840, min counter=320


Teresa

>
> --
> Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug.



--
Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413

Reply via email to