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

Reply via email to