[ https://issues.apache.org/jira/browse/ARIES-1357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14711033#comment-14711033 ]
Bas commented on ARIES-1357: ---------------------------- The resolve process is using the methods that we now improved performance wise. For each requirement that is processed during install of a subsystem it will try to find providers. When the systemrepository is searching for providers it will iterate through all the subsystems already installed on the subsystem and call the getCapabilities method on those subsystems. The getCapabilities method uses the manifest and parses it each time it is called. This is where a lot of time is then spent. So this triggered us to look at this class to see if we could improve it performance wise. In the process of improving the getCapabilities method we also checked other methods in the same class for usage in the resolve process(high usage, where a lot of subsequent iterating across the same data is done) and we did the same pre-loading improvement for these methods. This patch had the best improvement because the getCapabilities method is always used in the resolve process (among others). And apparently the creation of a capability takes some time. We also install 2 subsystems that are nested so this increases the install time twice as much to. I did find a bug in my patch so I will upload a new patch with the bug fix. The bug is related to starting already installed subsystems. It uses a different constructor (directory based) which didn't trigger the pre-loading. I hope this clarifies the flow which causes this patch to be an improvement, if not please let me know I can explain more elaborate. > BasicSubsystem can be used by the subsystem install process a factor 6 times > faster > ----------------------------------------------------------------------------------- > > Key: ARIES-1357 > URL: https://issues.apache.org/jira/browse/ARIES-1357 > Project: Aries > Issue Type: Improvement > Components: Subsystem > Affects Versions: subsystem-core-1.2.0, subsystem-2.0.1 > Environment: linux windows java > Reporter: Bas > Assignee: John Ross > Labels: patch, performance > Fix For: subsystem-core-1.2.0, subsystem-2.0.1 > > Attachments: subsystem-basicsubsystem-patch.txt > > > The problem was poor performance while installing a subsystem on a container > with 200+ subsystems installed. > While doing performance analyses on the subsystem install process we noticed > the BasicSubsystem is working a lot with its manifest instead of > pre-calculating data that is used a lot. > While using the pre-patch version of BasicSubsystem a subsystem install > (while having 200+ running subsystems) could take more than a minute. While > using the patched version where we pre-calculate highly used data when a new > subsystem manifest or deployment manifest is set we could bring it down to 10 > seconds. We only pre-calculated the data that was highly used. -- This message was sent by Atlassian JIRA (v6.3.4#6332)