Graham, Is there any reason you didn't switch over to one-bundle-per-3rdparty jar?
I have replaced the manifest.jar file in itest/osgi-tuscany with an osgi-installer.jar which accepts both absolute and relative pathnames for jar files. The tests generate and use absolute pathnames, avoiding jar copying. If we add this to the distribution, we can continue to use relative pathnames to make the file portable. Now itest/osgi-tuscany typically takes around 5.5 minutes to run on my T61, and uses 50MB disk space for around 190 bundles. itest/osgi-tuscany currently runs around 28 samples using OSGi bundle contributions for the samples, and reruns 16 of these using non-OSGi contributions (ie, URL classloaders for the contributions, OSGi classloaders for Tuscany). For the calculator sample, I imagine the lowest that you can bring the time down to may be around 30 seconds (down from 1 minute that you are currently able to get). Apart from removing the manifest as Simon suggested (which will improve both timing and disk usage), I am not sure it is worth putting too much time into performance of the sample at this stage. You should be able to use the osgi-installer from itest/osgi-tuscany as is, if you are happy to use one-bundle-per-3rdparty jar. BTW, I had switched itest/osgi-tuscany to running under Equinox by default a few days ago since Felix performance was degrading too much as we added more and more bundles. On 5/16/08, Simon Nash <[EMAIL PROTECTED]> wrote: > > Graham Charters wrote: > >> Below are a couple of runs, one taking 2 mins 50s and the second >> taking 1 min 8s. Both were done after mvn cleans so the difference is >> maybe due to my machine being under spec and paging. >> >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] Reactor Summary: >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] Apache Tuscany OSGi - Tuscany 3rdParty Manifest Bundle for >> Calculator Sample SUCCESS [1:06.859s] >> [INFO] Apache Tuscany OSGi - Tuscany Manifest Bundle for Calculator >> Sample SUCCESS [31.297s] >> [INFO] Calculator Sample Running in an OSGi Framework ........ SUCCESS >> [1:07.594s] >> [INFO] Calculator Sample Running in an OSGi Framework ........ SUCCESS >> [4.687s] >> [INFO] >> ------------------------------------------------------------------------ >> >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] Reactor Summary: >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] Apache Tuscany OSGi - Tuscany 3rdParty Manifest Bundle for >> Calculator Sample SUCCESS [35.406s] >> [INFO] Apache Tuscany OSGi - Tuscany Manifest Bundle for Calculator >> Sample SUCCESS [7.281s] >> [INFO] Calculator Sample Running in an OSGi Framework ........ SUCCESS >> [24.172s] >> [INFO] Calculator Sample Running in an OSGi Framework ........ SUCCESS >> [0.969s] >> [INFO] >> ------------------------------------------------------------------------ >> >> From the above, it seems that the major time cost is the building of > the manifest bundles. Graham's earlier note said that the third-party > manifest bundle consumes 17.5MB of disk space. > > Could the time and space overheads be reduced by building virtual > bundles (or a single virtual bundle) for the third-party libraries? > As I understand it, this would save 17.5MB of disk space (as the > third party libraries are already in my maven repo), and it would > presumably take less time as nothing would need to be written to disk. > > Simon > > >> 2008/5/16 Simon Laws <[EMAIL PROTECTED]>: >> >>> On Fri, May 16, 2008 at 1:05 PM, Simon Laws <[EMAIL PROTECTED]> >>> wrote: >>> >>> >>>> On Fri, May 16, 2008 at 12:44 PM, Graham Charters < >>>> [EMAIL PROTECTED]> wrote: >>>> >>>> Hi, >>>>> >>>>> Regarding Mike's build breaking comment, one of the reasons for >>>>> including this in the main build is to have it break to flag when new >>>>> dependencies are being introduced. This will help us focus on >>>>> improving Tuscany modularity, but also help us preserve the support >>>>> for running in OSGi. It will also give us a place to focus on keeping >>>>> the core small. >>>>> >>>>> I now have what I think is the smallest subset of modules, based on >>>>> current dependencies. My previous attempt took the approach of >>>>> cutting down a distribution, but the latest was created by adding to >>>>> the dependencies of the basic Calculator. The net result is 47 >>>>> bundles, 49MB (33MB felix cache and 16MB third-party jars) and takes >>>>> about 2.5 mins to build and run which does not seem like a big delta >>>>> over and above the time taken to do a full Tuscany build and run all >>>>> the samples. >>>>> >>>>> The sca modules which are installed are: >>>>> >>>>> tuscany-assembly-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-assembly-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-assembly-xsd-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-binding-sca-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-impl-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-java-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-namespace-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-osgi-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-resource-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-contribution-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-core-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-core-spi-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-databinding-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-databinding-json-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-definitions-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-definitions-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-domain-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-domain-api-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-domain-impl-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-extensibility-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-host-embedded-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-host-http-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-implementation-java-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-implementation-java-runtime-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-implementation-java-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-java-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-java-jaxws-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-java-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-wsdl-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-wsdl-java2wsdl-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-interface-wsdl-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-monitor-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-node-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-node-api-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-node-impl-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-osgi-runtime-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-policy-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-policy-security-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-policy-security-ws-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-policy-xml-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-policy-xml-ws-2.0-incubating-SNAPSHOT.jar >>>>> tuscany-sca-api-2.0-incubating-SNAPSHOT.jar >>>>> >>>>> The third-party jars (currently installed in a single bundle) are: >>>>> >>>>> activation-1.1.jar >>>>> addressing-1.3.mar >>>>> annogen-0.1.0.jar >>>>> avalon-framework-4.1.3.jar >>>>> axiom-api-1.2.5.jar >>>>> axiom-dom-1.2.5.jar >>>>> axiom-impl-1.2.5.jar >>>>> axis2-adb-1.3.jar >>>>> axis2-adb-codegen-1.3.jar >>>>> axis2-codegen-1.3.jar >>>>> axis2-java2wsdl-1.3.jar >>>>> axis2-kernel-1.3.jar >>>>> axis2-mtompolicy-1.3.jar >>>>> backport-util-concurrent-2.2.jar >>>>> bcprov-jdk15-132.jar >>>>> cglib-nodep-2.1_3.jar >>>>> commons-codec-1.3.jar >>>>> commons-collections-3.1.jar >>>>> commons-discovery-0.2.jar >>>>> commons-fileupload-1.1.1.jar >>>>> commons-httpclient-3.0.1.jar >>>>> commons-io-1.2.jar >>>>> commons-logging-1.1.jar >>>>> geronimo-activation_1.1_spec-1.0-M1.jar >>>>> geronimo-commonj_1.1_spec-1.0.jar >>>>> geronimo-javamail_1.4_spec-1.0-M1.jar >>>>> geronimo-jms_1.1_spec-1.1.jar >>>>> httpcore-4.0-alpha5.jar >>>>> httpcore-nio-4.0-alpha5.jar >>>>> httpcore-niossl-4.0-alpha5.jar >>>>> jaxb-api-2.1.jar >>>>> jaxb-impl-2.1.6.jar >>>>> jaxb2-reflection-2.1.4.jar >>>>> jaxen-1.1-beta-9.jar >>>>> jaxws-api-2.1.jar >>>>> jettison-1.0.jar >>>>> json-rpc-1.0.jar >>>>> jsr181-api-1.0-MR1.jar >>>>> jsr250-api-1.0.jar >>>>> junit-4.2.jar >>>>> log4j-1.2.12.jar >>>>> logkit-1.0.1.jar >>>>> mail-1.4.jar >>>>> neethi-2.0.2.jar >>>>> opensaml-1.1.jar >>>>> org.apache.felix.bundlerepository-1.1.0-SNAPSHOT.jar >>>>> org.apache.felix.framework-1.1.0-SNAPSHOT.jar >>>>> org.apache.felix.main-1.1.0-SNAPSHOT.jar >>>>> org.apache.felix.shell-1.1.0-SNAPSHOT.jar >>>>> org.apache.felix.shell.tui-1.1.0-SNAPSHOT.jar >>>>> org.osgi.core-1.0.0.jar >>>>> rampart-core-1.3.jar >>>>> rampart-policy-1.3.jar >>>>> rampart-trust-1.3.jar >>>>> saaj-api-1.3.jar >>>>> servlet-api-2.4.jar >>>>> stax-api-1.0-2.jar >>>>> stax-api-1.0.1.jar >>>>> woden-1.0-incubating-M7b.jar >>>>> wsdl4j-1.6.2.jar >>>>> wss4j-1.5.3.jar >>>>> wstx-asl-3.2.1.jar >>>>> xalan-2.7.0.jar >>>>> xercesImpl-2.8.1.jar >>>>> xml-apis-1.3.03.jar >>>>> XmlSchema-1.3.2.jar >>>>> xmlsec-1.4.0.jar >>>>> >>>>> Let me know what you think? >>>>> >>>>> Regards, >>>>> >>>>> Graham. >>>>> >>>>> >>>>> 2008/5/15 Mike Edwards <[EMAIL PROTECTED]>: >>>>> >>>>>> Graham Charters wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I've been working on a small sample to act as an OSGi "sniff test" >>>>>>> for >>>>>>> Tuscany running in OSGi. It's basically a cut-down version of what >>>>>>> Rajini has done in itest/osgi-tuscany and only runs the most basic >>>>>>> Calculator sample. I still have some work to do to exclude all the >>>>>>> things which aren't required and also perhaps move it to use the >>>>>>> latest "1 manifest per 3rd party jar" approach. >>>>>>> >>>>>>> Currently the sample takes ~3 mins to build and run and uses 56MB. >>>>>>> The main space usage is 17.5MB for the third-party dependencies and >>>>>>> 35MB for the Felix bundle cache (61 bundles in total). The full >>>>>>> Tuscany (itest/osgi-tuscany) using the same third-party library >>>>>>> approach is 151 bundles and 133MB total. >>>>>>> >>>>>>> I'd like to understand whether people feel this would be useful and >>>>>>> whether it is approaching the kind of overhead that would be >>>>>>> acceptable for it to be included in the main build? >>>>>>> >>>>>>> Regards, Graham. >>>>>>> >>>>>>> +1 from me... >>>>>> >>>>>> The time and space bother me a lot less than whether it would cause >>>>>> any >>>>>> extra failures. What plagues me are build & test failures. They can >>>>>> >>>>> take >>>>> >>>>>> hours to sort out. >>>>>> >>>>>> >>>>>> Yours, Mike. >>>>>> >>>>>> Hi Graham >>>> >>>> Any idea what the breakdown of that 2.5 mins is? >>>> >>>> Simon >>>> >>>> For me on my T60 this morning. >>> >>> Full build >>> >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD SUCCESSFUL >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 40 minutes 9 seconds >>> [INFO] Finished at: Fri May 16 12:17:45 BST 2008 >>> [INFO] Final Memory: 98M/170M >>> [INFO] >>> ------------------------------------------------------------------------ >>> >>> osgi-tuscany >>> >>> [INFO] BUILD SUCCESSFUL >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 8 minutes 4 seconds >>> [INFO] Finished at: Fri May 16 13:15:25 BST 2008 >>> [INFO] Final Memory: 33M/99M >>> [INFO] >>> ------------------------------------------------------------------------ >>> >>> Simon >>> >>> >> > -- Thank you... Regards, Rajini