[apparmor] [Patch 0/4] change accept node handling during expr tree set

John Johansen john.johansen at canonical.com
Wed Jun 24 19:20:23 UTC 2015


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).




More information about the AppArmor mailing list