Performance tests Montpellier perfSONAR meeting, 2006 Performance tests of the perfSONAR Lookup Service and eXist DB XML based on various tests done by M.Glowiak, V.Jeliazkov and J.Zurawski Maciej Glowiak Poznan Supercomputing and Networking Center, 2006
Agenda Overall service performance –Client measures time between sending request and receiving the response eXist XML DB performance –1.0rc2 and 1.1rc2 – made by Jason –Query times: 1 file vs multiple files Performance of service components –Time measured by service itself –PerfSONAR base overhead –Conversions
Overall service performance Benchmarking code on SVN: – Use of SOAPClient, measure time of: –Registration –Re-registration –De-registration Expected results: –Registration time should be a function of Lookup Information size –De-registration should be constant or depend on database size –De-registration should be much faster than registration –Re-registration (update) should be sum of: De-registration + Registration
Overall service performance - results
Overall service performance - conclusions Good news: –Registration time is a line function of Lookup Information size –Re-registration time is the sum of De-registration + Registration Bad news: –De-registration takes lot of time! for 600 it's even 8 minutes on Celeron 2.4GHz! Conclusions –(As tested) the problem is in eXist DB XML 1.0 stop using 1.0 and test eXist DB XML 1.1 PSNC had problems with 1.1 (memory leaks) –Maybe problem is in XUpdate? Test XQuery Modification Extension works the same (tested in GUI client for eXist DB XML) –Migrate to multiple files XML collection? natural way of keeping Lookup Information
eXist DB XML 1.0 vs 1.1 Jason's tests:
Multiple files in XML collection Each Lookup Information in separate XML file Very common – see eXist DB demo (Shakespeare's plays) – Immediate operations: –storing document into DB collection (HTTP PUT) –removing documents from DB collection (HTTP DELETE) No influence on query results...and won't it slow down queries?
eXist DB XML tests (HTTP vs XML RPC) HTTP (REST protocol) vs XML RPC (XML::DB) Results were sent to the mailing list, some are on: – Conclusions: –HTTP access is much faster than XML RPC
Performance of service components Measure time - just use System.currentTimeMillis(); //measure time long t1 = System.currentTimeMillis(); //... lot of service code... // //measure time long t2 = System.currentTimeMillis(); logger.info( "Service Engine took [" +(t2-t1)+"ms]");
Conversions Not all conversions are necessary We should avoid unnecessary conversions when not required
Conclusions We need performance tests! Each service should measure time of run (at least total time) We should optimize and improve code, for instance: –HTTP access to DB XML –LS stores Lookup Info in separate XML files inside XML collection We should avoid unnecessary conversions –Axis, DOM, NMWG, String, etc. We should test performance of libraries and external components before we use them –see eXist DB XML example