[jboss-dev] Further profling: Where should I focus?

John Bailey jbailey at redhat.com
Tue Jan 5 15:34:04 EST 2010


With that in mind, I threw in some basic timers and let the JVM warn up.  If I sleep for 1 second before executing, the mountZip process take < 100ms and the PackageVisitor.determineAllPackages takes < 75ms.  The PackageVisitor.determineAllPackages takes < 20ms on subsequent calls.  


   

On Jan 5, 2010, at 2:12 PM, David M. Lloyd wrote:

> Caching behavior depends on the filesystem.  For zip mounts, "isDirectory" 
> and "lastModified" don't even hit the filesystem (in most cases).  Don't 
> take JProfiler data as real-world timing; it's useful to find slow spots, 
> sometimes, but it's not an accurate reflection of what the real speed of 
> the thing is.
> 
> For real filesystem stuff, you CAN NOT EVER do any form of caching of file 
> metainformation because the backing data is not owned by VFS, and thus can 
> change without any sort of notice.
> 
> Try the test again with a "warmed up" JVM and no profiler agent installed 
> and you'll probably see a different story.
> 
> - DML
> 
> On 01/05/2010 02:05 PM, John Bailey wrote:
>> 
>> I have been running the tests through JProfiler.  Not sure if I just have not optimized the profilers settings, but I am getting numbers all over the board, and some are well over double the time of a JUnit execution.  The non-profiler time to run the test seems to be<300ms.
>> 
>> With the profiler enable, I can see ~30% of the total time is in the VFS.mountZip call.  With>10% of the total test time taken up by the 5,085 calls to org.jboss.vfs.util.PathTokenizer.getTokens.
>> 
>> The org.jboss.classloading.plugins.vfs.PackageVisitor.determineAllPackages call is taking ~35% of the total test time to run.  With ~14% of the total test time in VirutalFile.isDirectory.
>> 
>> Maybe there is room for more caching of this isDirectory like calls.  There may be a problem with caching the info as the actual file system can change for a given VirutalFile, and the cached information is not guaranteed to remain accurate.
>> 
>> John
>> 
>> 
>> On Jan 5, 2010, at 1:42 PM, Bill Burke wrote:
>> 
>>> 
>>> 
>>> David M. Lloyd wrote:
>>>> On 01/05/2010 12:27 PM, Bill Burke wrote:
>>>>> 
>>>>> David M. Lloyd wrote:
>>>>>> Anyway this has all been covered, benchmarked, and fixed by VFS3.
>>>>>> 
>>>>> Well....not really.
>>>>> 
>>>>> 446ms now for the PackageTest.
>>>>> 
>>>>> 65% is still VFS initialization.
>>>> Using VFS3?  If so, can you post details?
>>> 
>>> Gonna help John Bailey get up to running JProfiler.  That cool?
>>> 
>>> Preliminary, it looks like a lot of things aren't getting cached (isDirectory, lastModified, isFile, children, etc..).  This results in a lot of hash lookups.  Looks like they aren't getting cached because of mounting?? Not sure.
>>> 
>>> But, I found a problem with my initialization code (see below).  It was trying to mount children.  I commented out that part and it ran in 251ms.  40% in VFS init if profile CPU time, 60% in actual time. Sometimes jprofiler is weird.
>>> 
>>> 
>>> 
>>>   public List<Closeable>  recursiveMount(VirtualFile file) throws IOException
>>>   {
>>>      ArrayList<Closeable>  mounts = new ArrayList<Closeable>();
>>> 
>>>      if (!file.isDirectory()&&  file.getName().matches("^.*\\.([EeWwJj][Aa][Rr]|[Zz][Ii][Pp])$"))
>>>         mounts.add(VFS.mountZip(file, file, provider));
>>> 
>>>      /****** Doubled speedup when this was commented out!!!!!!!!!!!!
>>>      if (file.isDirectory())
>>>         for (VirtualFile child : file.getChildren())
>>>            mounts.addAll(recursiveMount(child));
>>>            */
>>> 
>>> 
>>>      return mounts;
>>>   }
>>> 
>>>   private TempFileProvider provider;
>>> 
>>>   protected void setUp() throws Exception
>>>   {
>>>      super.setUp();
>>> 
>>>      provider = TempFileProvider.create("test", new ScheduledThreadPoolExecutor(2));
>>>   }
>>> 
>>>   protected void tearDown() throws Exception
>>>   {
>>>      provider.close();
>>>   }
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Bill
>>> 
>>> --
>>> Bill Burke
>>> JBoss, a division of Red Hat
>>> http://bill.burkecentral.com
>> 
>> --
>>   John Bailey
>>   JBoss by Red Hat
>> --
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> jboss-development mailing list
>> jboss-development at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-development
> _______________________________________________
> jboss-development mailing list
> jboss-development at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-development

--
  John Bailey
  JBoss by Red Hat
--








More information about the jboss-development mailing list