During lookup initialization profiling, we have found that there is a too many calls to $SUBJ. It seems to be caused by
summary: Calling getAttribute from methodvalue on different fileobject could result in bad behaviour
In my recent measurements there is about ~3500 queries for some attribute on SFS during startup and this results in
~90000 of queries on some LocalFileSystem! I am not really sure about the numbers, but if we got this back to 1:1
ratio we might get about 500ms from 7.7s start time - e.g. slightly more than 5%.
Created attachment 78761 [details]
Debugging patches and a fix
The problem is that one of the SFS's MultiFileSystems has as many ExLocalFileSystem children as we have clusters
(about 20). These ExLFSs are all read only, yet the MFS.getAttribute inspects them for overriden values of all
attributes. My patch disables this behaviour, bringing the number of real queries (~3500) and final touches on ExLFS
(~3500) to 1:1 relation (because there is one writable ExLFS, the userdir).
The patch leaves in the somewhat mysterious comment
"Could skip all RO FSs but then multi-user installs would not work quite right."
which should be explained/addressed, and if you are changing this behavior, delete the comment.
Consequnces of the patch are unclear.
Applying slightly different fix: core-main#c8e0e5e50336
Integrated into 'main-golden', will be available in build *201004131450* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
User: Jaroslav Tulach <firstname.lastname@example.org>
Log: #158334: As most of the queries are about root attributes of read only systems, let's eliminate them by keeping the list of all existing root attributes (close to zero usually).