[apparmor] [Bug 2025030] Re: apparmor_parser -O no-expr-simplify problematic
Michael Vogt
2025030 at bugs.launchpad.net
Mon Jun 26 11:19:59 UTC 2023
I did a quick experiment in our "interfaces-many-snap-provided" test to
see what impact the options have. I ran spread with:
$ spread -shell-after -v qemu:ubuntu-22.04-64:tests/main/interfaces-
many-snap-provided
And inside spread (on 22.04) compiled the profiles with/without no-expr-
simplify:
With "no-expr-simplify"
# /usr/bin/time -f '%E real, %M max-mem' apparmor_parser -O no-expr-simplify -S /var/lib/snapd/apparmor/profiles/snap.{test-snapd-policy-app-consumer,test-snapd-policy-app-provider-classic}.* >/dev/null
0:22.07 real, 22908 max-mem
Without "no-expr-simplify"
# /usr/bin/time -f '%E real, %M max-mem' apparmor_parser -S /var/lib/snapd/apparmor/profiles/snap.{test-snapd-policy-app-consumer,test-snapd-policy-app-provider-classic}.* >/dev/null
0:49.45 real, 13720 max-mem
Which seems to indicate that there is a trade-off here and moving away
from "no-expr-simplify" will make the installs/refreshes slower but also
reduces memory usage. It also seems like our normal tests do not catch
the memory explosion that we saw here.
--
You received this bug notification because you are a member of AppArmor
Developers, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/2025030
Title:
apparmor_parser -O no-expr-simplify problematic
Status in snapd:
New
Bug description:
There was a recent issue with a core refresh that caused breakage.
Upon further investigation it turns out that the apparmor_parser uses
an substantial of memory.
Upon some more investigation it turns out that that -O no-expr-
simplify makes both time to compile and memory usage increase 10x.
Tested with 22.04 but I see the same ballpark results with 16.04:
$ /usr/bin/time --verbose apparmor_parser -S 2.59/profiles/snap.screenly-client.command-executor > /dev/null
Command being timed: "apparmor_parser -S 2.59/profiles/snap.screenly-client.command-executor"
User time (seconds): 4.32
Maximum resident set size (kbytes): 117392
$ /usr/bin/time --verbose apparmor_parser -O no-expr-simplify -S 2.59/profiles/snap.screenly-client.command-executor > /dev/null
Command being timed: "apparmor_parser -O no-expr-simplify -S 2.59/profiles/snap.screenly-client.command-executor"
User time (seconds): 40.64
Maximum resident set size (kbytes): 1015816
Profile is attached.
It seems like we seriously need to consider dropping "-O no-expr-simplify".
For context:
https://bugs.launchpad.net/ubuntu-rtm/+source/apparmor/+bug/1383858
is why it was added in the first place
And some recent work to make things faster:
https://gitlab.com/apparmor/apparmor/-/merge_requests/711
To manage notifications about this bug go to:
https://bugs.launchpad.net/snapd/+bug/2025030/+subscriptions
More information about the AppArmor
mailing list