On 06/23/2015 01:04 PM, John Johansen wrote:
> On 06/22/2015 10:59 AM, John Johansen wrote:
>> This series of patches changes the way accept nodes are generated
>> and the expression tree is set-up around them. It is a start to the
>> backend refactoring and cleanup, and provides a nice little performance
>> boost in most cases because
>>   1. It reduces the number of accept nodes geneted and considered during
>>      simplification/factoring, and node set building (shorter node sets
>>      to construct and compare)
>>   2. It reduces the number of Alt nodes (used to combine the accept nodes)
>>      to consider during simplfication, and node set building (agin shorter
>>      node sets to construct and compare)
>>   3. It reduces the number of nodes that must be consider in any given
>>      simplification pass, by separating out node sets that can't be
>>      simplified on the right hand simplification/factoring pass.
>>
>> The performance change is dependent on the profile being parsed, and
>> there is no guarentee that it will be faster for all profiles. With that
>> being said, I haven't seen any performance regressions+ and some fairly
>> nice performance improvements so its worth considering before the rest
>> of the backend factoring is done.
>>
>> Eg. Using a few example profile tests from a local machine, comparing
>> against the 2.9 parser in Ubuntu 14.10 against current 2.10 with
>> these patches*
>>
>> profile       with tree simplification      -O no-expr-simplify
>> -------       -----------------------       -------------------
>> evince              22% faster                   10% faster
>> firefox             40% faster                   11% faster
>> chromium            32% faster                   11% faster
>> cupsd               35% faster                    3% faster
>> dnsmasq             12% faster                   17% faster
>> dhclient            36% faster                    5% faster
>> klogd                0%                           8% faster
>>
> 
> Adding some stats for arm-hf (bq 4.5)
> 
> Times are a cummulative user value for 5 consecutive runs of the parser
> against a given profile.
> 
> 
>                       2.10+patch      no simple       no simple/2.10  2.9.1   
> no simple       no simple/2.9   2.10/2.9        2.10 no s/2.9 no s
> chromium              34.07           35.75           104.93%         63.68   
> 39.17           61.51%          86.98%          91.27%
> cupsd                 6.58            4.09            62.16%          11.97   
> 4.22            35.25%          155.92%         96.92%
> dhclient              4.98            3.3             66.27%          9.39    
> 3.56            37.91%          139.89%         92.70%
> dnsmasq                       2.35            1.38            58.72%          
> 3.74    1.47            39.30%          159.86%         93.88%
> evince                        79.85           239.55          300.00%         
> 122.25  266.78          218.22%         29.93%          89.79%
> firefox                       33.64           35.02           104.10%         
> 63.78   38.14           59.80%          88.20%          91.82%
> klogd                 0.78            0.53            67.95%          1.6     
> 0.63            39.38%          123.81%         84.13%
> Ubuntu-core-default   2.21            1.33            60.18%          4.99    
> 1.49            29.86%          148.32%         89.26%
> Ubuntu-personal-qml-app       11.08           6.3             56.86%          
> 21.97   6.33            28.81%          175.04%         99.53%
> Ubuntu-personal-webapp        17.8            11.8            66.29%          
> 34.41   11.74           34.12%          151.62%         100.51%
> 
> 
> So the case for arm-hf is different, for the simplification case the majority 
> of cases regress but evince sees huge improvements. For the no simplification 
> case we see slight performance improvements, and only one minor regression.
> 
So there is a correction, in my rush to get this out I messed up the
2.10/2.9 formula so its values are wrong. The corrected table is

                        patch  no-sim no-s/patc 2.9.1  2.9 no-  no-s/2.9 
patc/2.9 p no-s/2.9 no-s
chromium                34.07  35.75  104.93%   63.68   39.17   61.51%   53.50% 
  91.27%
cupsd                    6.58   4.09   62.16%   11.97    4.22   35.25%   54.97% 
  96.92%
dhclient                 4.98   3.3    66.27%    9.39    3.56   37.91%   53.04% 
  92.70%
dnsmasq                  2.35   1.38   58.72%    3.74    1.47   39.30%   62.83% 
  93.88%
evince                  79.85 239.55  300.00%  122.25  266.78  218.22%   65.32% 
  89.79%
firefox                 33.64  35.02  104.10%   63.78   38.14   59.80%   52.74% 
  91.82%
klogd                    0.78   0.53   67.95%    1.6     0.63   39.38%   48.75% 
  84.13%
Ubuntu-core-default      2.21   1.33   60.18%    4.99    1.49   29.86%   44.29% 
  89.26%
Ubuntu-personal-qml-app 11.08   6.3    56.86%   21.97    6.33   28.81%   50.43% 
  99.53%
Ubuntu-personal-webapp  17.8   11.8    66.29%   34.41   11.74   34.12%   51.73% 
 100.51%

So in fact the patch set provides a significant boost (patc/2.9 column)
on arm-hf (bq 4.5), for regular compiles and and a small boost
(p no-s/2.9 no-s column) for -O no-expr-simplify. The use of
-O no-expr-simplify for smaller profiles is still faster on on arm
(no-s/patc) at the cost of being significantly slower for some profiles
(eg. evince).


-- 
AppArmor mailing list
AppArmor@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to