From twright at bbn.com Tue Mar 4 15:05:02 2008 From: twright at bbn.com (Todd Wright) Date: Tue, 04 Mar 2008 15:05:02 -0500 Subject: Scalability of Cougaar In-Reply-To: <4f0d935a0803031451w55209cf2r9a4073e3b08fc9ed@mail.gmail.com> References: <4f0d935a0803031451w55209cf2r9a4073e3b08fc9ed@mail.gmail.com> Message-ID: <47CDAB6E.6010806@bbn.com> Dimitrios Traskas wrote: > Hi > > I am a new Cougaar developer and decided to move to the platform after > failed attempts with JADE and Agentscape when tried to scale my > projects. I am running large scale simulations that I wish to extend to > 2000+ Agents at some point. From your experience do you believe that > Cougaar is stable and scalable enough to handle thousands of Agents at > the same host and several hosts. How many Agents would you say it can > have in one machine? I would really appreciate your comments. We've tested 5 JVMs with 2000 agents each, where the agents are configured into pairs that periodically "ping" one another. The test worked but the naming service overhead was high. You can create similar scalability test with the ping tutorial: http://tutorials.cougaar.org/ For example, you could easily write a script to generate an XML configuration for a fan-shaped ping (as seen in the "FanSociety.xml") with thousands of agents split across multiple nodes (as seen in the "PingTwoNodeSociety.xml"). Also see the "mesh" tutorial. A single-host configuration can be optimized to use the local-only naming and messaging services, as illustrated in the above demos. The multi-host naming service can be tuned or, if required, replaced with an alternative implementation. For example, the pluggable "local-only" naming service implementation is about 200 lines of Java code: http://cougaar.org/cgi-bin/viewcvs.cgi/core/src/org/cougaar/core/wp/LoopbackWhitePages.java?rev=1.2&cvsroot=core&content-type=text/vnd.viewcvs-markup Todd > > > Thanks > Dimitri From dtraskas at googlemail.com Tue Mar 4 19:43:40 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 5 Mar 2008 00:43:40 +0000 Subject: Cougaar Mac OS X Message-ID: <4f0d935a0803041643w5abbf4d7i656ceec204f633ce@mail.gmail.com> Hi all, I am quite new to Cougaar and initially trying to identify how powerful and reliable the platform can be. I am currently running a very simple experiment, trying to see how many agents I can support in one node. The experiment is very simple, I have a HelloWorld Plugin which just uses the log shout to print a Hello World and I also get the address of the current Agent to make sure I print messages from each one of my Agents. I then create with a script 100, 500 and 1000 Agents respectively. The experiment runs for 100 and 500 Agents but not 1000. I am using a Mac OS X Leopard as the development platform at the moment with JSDK 1.5 and NetBeans 5.5.1. I would appreciate any help. The message I get can be seen below with the 1000 Agents experiment: 2008-03-05 00:37:42,614 WARN [DirectSysStatSupplier] - No handler for Memory on platform Mac OS X 2008-03-05 00:37:42,614 WARN [DirectSysStatSupplier] - No handler for CPU on platform Mac OS X 2008-03-05 00:37:42,614 WARN [DirectSysStatSupplier] - No handler for Sockets on platform Mac OS X 2008-03-05 00:38:21,239 ERROR [ThreadPool] - Uncaught exception in pooled thread () java.lang.OutOfMemoryError: Java heap space at java.nio.CharBuffer.wrap(CharBuffer.java:350) at java.nio.CharBuffer.wrap(CharBuffer.java:373) at java.lang.StringCoding$CharsetSD.decode(StringCoding.java:188) at java.lang.StringCoding.decode(StringCoding.java:228) at java.lang.String.(String.java:405) at java.util.jar.Attributes.read(Attributes.java:401) at java.util.jar.Manifest.read(Manifest.java:219) at java.util.jar.Manifest.(Manifest.java:52) at java.util.jar.JarFile.getManifestFromReference(JarFile.java:158) at java.util.jar.JarFile.getManifest(JarFile.java:145) at sun.misc.URLClassPath$JarLoader$1.getManifest(URLClassPath.java :624) at org.cougaar.bootstrap.XURLClassLoader.defineClass( XURLClassLoader.java:221) at org.cougaar.bootstrap.XURLClassLoader$1.run(XURLClassLoader.java :195) at java.security.AccessController.doPrivileged(Native Method) at org.cougaar.bootstrap.XURLClassLoader.findClass( XURLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:316) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374) at org.cougaar.core.wp.server.RootAuthority.modifyAndForward( RootAuthority.java:684) at org.cougaar.core.wp.server.RootAuthority.handle( RootAuthority.java:361) at org.cougaar.core.wp.server.RootAuthority.handleAll( RootAuthority.java:279) at org.cougaar.core.wp.server.RootAuthority.access$300( RootAuthority.java:67) at org.cougaar.core.wp.server.RootAuthority$MyClient.modify( RootAuthority.java:1129) at org.cougaar.core.wp.server.ServerTransport.tellClients( ServerTransport.java:541) at org.cougaar.core.wp.server.ServerTransport.receiveNow( ServerTransport.java:726) at org.cougaar.core.wp.server.ServerTransport.receiveNow( ServerTransport.java:770) at org.cougaar.core.wp.server.ServerTransport.access$200( ServerTransport.java:76) at org.cougaar.core.wp.server.ServerTransport$2.run( ServerTransport.java:250) at org.cougaar.core.thread.SchedulableObject.run( SchedulableObject.java:118) at org.cougaar.core.thread.ThreadPool$PooledThread.continuationLoop( ThreadPool.java:94) at org.cougaar.core.thread.ThreadPool$PooledThread.run( ThreadPool.java:122) 2008-03-05 00:38:26,857 ERROR [ThreadPool] - Uncaught exception in pooled thread () java.lang.OutOfMemoryError: Java heap space at java.util.HashMap.(HashMap.java:203) at org.cougaar.core.mts.SimpleMessageAttributes.( SimpleMessageAttributes.java:47) at org.cougaar.core.wp.MessageTimeoutUtils.set( MessageTimeoutUtils.java:115) at org.cougaar.core.wp.MessageTimeoutUtils.setDeadline( MessageTimeoutUtils.java:61) at org.cougaar.core.wp.resolver.SelectManager.select( SelectManager.java:487) at org.cougaar.core.wp.resolver.SelectManager.access$900( SelectManager.java:68) at org.cougaar.core.wp.resolver.SelectManager$SelectSP$SI.select( SelectManager.java:799) at org.cougaar.core.wp.resolver.ClientTransport.collectMessagesToSend( ClientTransport.java:733) at org.cougaar.core.wp.resolver.ClientTransport.send( ClientTransport.java:414) at org.cougaar.core.wp.resolver.ClientTransport.checkDeadlinesNow( ClientTransport.java:367) at org.cougaar.core.wp.resolver.ClientTransport.access$300( ClientTransport.java:77) at org.cougaar.core.wp.resolver.ClientTransport$3.run( ClientTransport.java:215) at org.cougaar.core.thread.SchedulableObject.run( SchedulableObject.java:118) at org.cougaar.core.thread.ThreadPool$PooledThread.continuationLoop( ThreadPool.java:94) at org.cougaar.core.thread.ThreadPool$PooledThread.run( ThreadPool.java:122) 2008-03-05 00:38:31,337 ERROR [ThreadPool] - Uncaught exception in pooled thread () java.lang.OutOfMemoryError: Java heap space at java.io.BufferedInputStream.(BufferedInputStream.java:178) at java.io.BufferedInputStream.(BufferedInputStream.java:158) at java.lang.UNIXProcess$1.run(UNIXProcess.java:63) at java.security.AccessController.doPrivileged(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:59) at java.lang.ProcessImpl.start(ProcessImpl.java:91) at java.lang.ProcessBuilder.start(ProcessBuilder.java:451) at java.lang.Runtime.exec(Runtime.java:591) at java.lang.Runtime.exec(Runtime.java:429) at java.lang.Runtime.exec(Runtime.java:326) at org.cougaar.qos.qrs.sysstat.SunOSLoadAverage.getData( SunOSLoadAverage.java:67) at org.cougaar.qos.qrs.sysstat.DirectSysStatSupplier$Task.run( DirectSysStatSupplier.java:107) at org.cougaar.core.thread.SchedulableObject.run( SchedulableObject.java:118) at org.cougaar.core.thread.ThreadPool$PooledThread.continuationLoop( ThreadPool.java:94) at org.cougaar.core.thread.ThreadPool$PooledThread.run( ThreadPool.java:122) Exception in thread "CougaarPooledThread-1" java.lang.OutOfMemoryError: Java heap space 2008-03-05 00:38:42,952 ERROR [ThreadPool] - Uncaught exception in pooled thread () java.lang.OutOfMemoryError: Java heap space 2008-03-05 00:38:49,797 ERROR [ThreadPool] - Uncaught exception in pooled thread () java.lang.OutOfMemoryError: Java heap space 2008-03-05 00:38:56,429 ERROR [ThreadPool] - Uncaught exception in pooled thread () java.lang.OutOfMemoryError: Java heap space -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080305/26855b7c/attachment.html From martijn at yall.nl Wed Mar 5 03:19:23 2008 From: martijn at yall.nl (Martijn Broos) Date: Wed, 05 Mar 2008 09:19:23 +0100 Subject: Cougaar Mac OS X In-Reply-To: <4f0d935a0803041643w5abbf4d7i656ceec204f633ce@mail.gmail.com> References: <4f0d935a0803041643w5abbf4d7i656ceec204f633ce@mail.gmail.com> Message-ID: <47CE578B.1060707@yall.nl> An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080305/bc4a36bc/attachment-0001.html -------------- next part -------------- A non-text attachment was scrubbed... Name: martijn.vcf Type: text/x-vcard Size: 271 bytes Desc: not available Url : http://cougaar.org/pipermail/cougaar-developers/attachments/20080305/bc4a36bc/martijn-0001.vcf From dtraskas at googlemail.com Wed Mar 5 17:44:21 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 5 Mar 2008 22:44:21 +0000 Subject: Cougaar Mac OS X Message-ID: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> Hi there thanks for the replies. I have tried to set the -Xmx1024m in my society.xml file within my project and no luck. I also modified the configuration file of Netbeans to increase the Java heap space to 1GB and no luck with that either. I then looked at the parameters in SimpleAgent.xsl and I could not understand what I need to change there. Is there an example that I can use, apart from the code examples in ping and mesh tutorials? Sorry for the repeated questions but I do need to get to the bottom of this. Do you think there might be a problem with using Netbeans and the Idistro module instead of Eclipse? Thanks Dimitri -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080305/a7aba6d7/attachment.html From twright at bbn.com Wed Mar 5 18:56:19 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 05 Mar 2008 18:56:19 -0500 Subject: Cougaar Mac OS X In-Reply-To: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> References: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> Message-ID: <47CF3323.4040104@bbn.com> Dimitrios Traskas wrote: > Hi there > > thanks for the replies. I have tried to set the > -Xmx1024m in my society.xml file within my project and > no luck. I also modified the configuration file of Netbeans to increase > the Java heap space to 1GB and no luck with that either. Are you sure this value is being passed to the JVM? Try adding this to your test plugin: System.out.println("Max heap size: "+Runtime.getRuntime().maxMemory()); I tested this on my Linux box. With no "-Xmx" it prints: Max heap size: 66650112 (64mb) With "-Xmx1024m" it prints: Max heap size: 1065484288 (1016mb) > I then looked > at the parameters in SimpleAgent.xsl and I could not understand what I > need to change there. You shouldn't need to edit that file. There are some -D flags you could set, but that should not be necessary. For details, see: http://cougaar.cougaar.org/software/latest/OnlineManual/Templates.html > Is there an example that I can use, apart from the > code examples in ping and mesh tutorials? No, I think your simple example is the right place to start. I think that the -Xmx value is not being passed to the JVM, as noted above. > > Sorry for the repeated questions but I do need to get to the bottom of > this. Do you think there might be a problem with using Netbeans and the > Idistro module instead of Eclipse? I don't know how that IDE passes the -D and -X flags to the JVM. You might want to try running your example from the command line. Todd > > > Thanks > Dimitri From dtraskas at googlemail.com Thu Mar 6 03:16:16 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Thu, 6 Mar 2008 08:16:16 +0000 Subject: Cougaar Mac OS X In-Reply-To: <47CF3323.4040104@bbn.com> References: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> <47CF3323.4040104@bbn.com> Message-ID: <4f0d935a0803060016x5d5292b3j4b4c7acc5d5539fa@mail.gmail.com> Hi again, I have tried the same test with Eclipse and your suggestions worked fine. I managed to scale up my simple experiment to 1000 agents with no problem and I am only having a difficulty with 2000 which could be down again to certain settings such as number of threads in the pool. I can only assume that NetBeans and the Idistro CougaarDev module do not work as they should. I also assume that you guys all use Eclipse and CougaarIDE for your development which can make the difference. It would be worth putting down your suggestion for preferred IDE. Are the warnings: WARN [DirectSysStatSupplier] - No handler for Memory on platform Mac OS X WARN [DirectSysStatSupplier] - No handler for CPU on platform Mac OS X WARN [DirectSysStatSupplier] - No handler for Sockets on platform Mac OS X something serious I have to look into? Do you believe they would cause a problem later on? Many Thanks Dimitri On 05/03/2008, Todd Wright wrote: > > Dimitrios Traskas wrote: > > Hi there > > > > thanks for the replies. I have tried to set the > > -Xmx1024m in my society.xml file within my project and > > no luck. I also modified the configuration file of Netbeans to increase > > the Java heap space to 1GB and no luck with that either. > > > Are you sure this value is being passed to the JVM? > > Try adding this to your test plugin: > System.out.println("Max heap size: "+Runtime.getRuntime().maxMemory()); > > I tested this on my Linux box. With no "-Xmx" it prints: > Max heap size: 66650112 (64mb) > With "-Xmx1024m" it prints: > Max heap size: 1065484288 (1016mb) > > > > I then looked > > at the parameters in SimpleAgent.xsl and I could not understand what I > > need to change there. > > > You shouldn't need to edit that file. There are some -D flags you could > set, > but that should not be necessary. For details, see: > http://cougaar.cougaar.org/software/latest/OnlineManual/Templates.html > > > > Is there an example that I can use, apart from the > > code examples in ping and mesh tutorials? > > > No, I think your simple example is the right place to start. > > I think that the -Xmx value is not being passed to the JVM, as noted > above. > > > > > > Sorry for the repeated questions but I do need to get to the bottom of > > this. Do you think there might be a problem with using Netbeans and the > > Idistro module instead of Eclipse? > > > I don't know how that IDE passes the -D and -X flags to the JVM. > > You might want to try running your example from the command line. > > Todd > > > > > > > Thanks > > Dimitri > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080306/4056d339/attachment.html From ahelsing at bbn.com Thu Mar 6 09:10:47 2008 From: ahelsing at bbn.com (Aaron Helsinger) Date: Thu, 06 Mar 2008 09:10:47 -0500 Subject: Cougaar Mac OS X In-Reply-To: <4f0d935a0803060016x5d5292b3j4b4c7acc5d5539fa@mail.gmail.com> References: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> <47CF3323.4040104@bbn.com> <4f0d935a0803060016x5d5292b3j4b4c7acc5d5539fa@mail.gmail.com> Message-ID: <47CFFB67.8020302@bbn.com> Dimitrios Traskas wrote: > I also assume that you guys all use Eclipse and CougaarIDE for your > development which can make the difference. That, or IntelliJ IDEA or just plain Emacs/vi and command line tools are the ones that many of us use, but there is no reason it shouldn't work with NetBeans -- I just can't tell you how to pass VM parameters through NetBeans to Cougaar. > Are the warnings: > > WARN [DirectSysStatSupplier] - No handler for Memory on platform Mac OS X > WARN [DirectSysStatSupplier] - No handler for CPU on platform Mac OS X > WARN [DirectSysStatSupplier] - No handler for Sockets on platform Mac > OS X > > something serious I have to look into? Do you believe they would cause > a problem later on? Not serious. These messages (and the similar messages you often see on Windows) simply indicate that the MetricsService doesnt have a built in way for getting these statistics. For info on the MetricsService, see the Online Manual: http://cougaar.cougaar.org/software/latest/OnlineManual/MetricsService/ From twright at bbn.com Thu Mar 6 11:29:02 2008 From: twright at bbn.com (Todd Wright) Date: Thu, 06 Mar 2008 11:29:02 -0500 Subject: Cougaar Mac OS X In-Reply-To: <47CFFB67.8020302@bbn.com> References: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> <47CF3323.4040104@bbn.com> <4f0d935a0803060016x5d5292b3j4b4c7acc5d5539fa@mail.gmail.com> <47CFFB67.8020302@bbn.com> Message-ID: <47D01BCE.6000504@bbn.com> Aaron Helsinger wrote: > Dimitrios Traskas wrote: >> I also assume that you guys all use Eclipse and CougaarIDE for your >> development which can make the difference. > That, or IntelliJ IDEA or just plain Emacs/vi and command line tools are > the ones that many of us use, but there is no reason it shouldn't work > with NetBeans -- I just can't tell you how to pass VM parameters through > NetBeans to Cougaar. >> Are the warnings: >> >> WARN [DirectSysStatSupplier] - No handler for Memory on platform Mac OS X >> WARN [DirectSysStatSupplier] - No handler for CPU on platform Mac OS X >> WARN [DirectSysStatSupplier] - No handler for Sockets on platform Mac >> OS X >> >> something serious I have to look into? Do you believe they would cause >> a problem later on? > Not serious. These messages (and the similar messages you often see on > Windows) simply indicate that the MetricsService doesnt have a built in > way for getting these statistics. Right, these are OS-specific. See: http://cougaar.org/cgi-bin/viewcvs.cgi/qrs/src/org/cougaar/qos/qrs/sysstat/?cvsroot=qos > For info on the MetricsService, see > the Online Manual: > http://cougaar.cougaar.org/software/latest/OnlineManual/MetricsService/ At worst you'd see "unknown" values in some of the metrics displays, e.g. slide 42 of the Cougaar Overview presentation: http://cougaar.org/docman/view.php/17/196/CougaarOverview.ppt and http://cougaar.cougaar.org/software/latest/OnlineManual/MetricsService/node-resources-servlet.html Todd > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers > From blaise at idistro.com Sat Mar 8 21:06:12 2008 From: blaise at idistro.com (blaise@idistro.com) Date: Sat, 8 Mar 2008 18:06:12 -0800 (PST) Subject: Cougaar Mac OS X In-Reply-To: <47CFFB67.8020302@bbn.com> References: <4f0d935a0803051444q32f69ce2x8509121e474097f7@mail.gmail.com> <47CF3323.4040104@bbn.com> <4f0d935a0803060016x5d5292b3j4b4c7acc5d5539fa@mail.gmail.com> <47CFFB67.8020302@bbn.com> Message-ID: <50606.123.243.7.93.1205028372.squirrel@www.idistro.com> Hi Dimitrios, Regarding netbeans, you can add VM Parameters into the mix through the project ant build.xml file. There is ant target for starting nodes which you can edit. This allows cougaar nodes to be started with one node per jvm, as they were originally intended. The cougar agent archives 'car', that are deployed by the CougaarDev environment were intended to allow multiple nodes to be deployed into a single Jboss instance using Jboss Cougaar Containers but this currently only works for single nodes as Cougaar nodes take parameters from the environment, and well there is only so much you can do with a classloader. If you use one node you can alter the jvm vm parameters in the jboss start script. Haven't had a look at this for a while though so maybe a few versions behind... Anyway, Hope this helps, Blaise. > > Dimitrios Traskas wrote: >> I also assume that you guys all use Eclipse and CougaarIDE for your >> development which can make the difference. > That, or IntelliJ IDEA or just plain Emacs/vi and command line tools are > the ones that many of us use, but there is no reason it shouldn't work > with NetBeans -- I just can't tell you how to pass VM parameters through > NetBeans to Cougaar. >> Are the warnings: >> >> WARN [DirectSysStatSupplier] - No handler for Memory on platform Mac OS >> X >> WARN [DirectSysStatSupplier] - No handler for CPU on platform Mac OS X >> WARN [DirectSysStatSupplier] - No handler for Sockets on platform Mac >> OS X >> >> something serious I have to look into? Do you believe they would cause >> a problem later on? > Not serious. These messages (and the similar messages you often see on > Windows) simply indicate that the MetricsService doesnt have a built in > way for getting these statistics. For info on the MetricsService, see > the Online Manual: > http://cougaar.cougaar.org/software/latest/OnlineManual/MetricsService/ > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers > From dtraskas at googlemail.com Wed Mar 12 19:48:09 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 12 Mar 2008 23:48:09 +0000 Subject: Cougaar's 15,000+ Agents vs. Other Message-ID: <4f0d935a0803121648y3ee3dc23m236a0225e83c8af6@mail.gmail.com> Hi to all, I have recently started working with Cougaar and just want to mention a few things that I noticed over the past 3 weeks that might prove useful to other people. First of all I have found so far that Cougaar is a highly scalable, efficient, robust platform that will allow a lot of developers out there to take MAS to the next level. It is more complicated and less intuitive than other platforms such as JADE but it delivers the goods which is what matters in the end. Running simple benchmark tests JADE was not able to cope once the number of Agents increased to the hundreds. Other platforms are very inconsistent and the behaviour varies every time you will do a run. I have built recently a simple HelloWorldPlugin test in Cougaar and I managed to scale it up to 15,000 Agents on a single machine and a single jvm. For me that is critical as my simulation research involves thousands of Agents deployed on single and multiple hosts and jvms. I am sure that number will go down once I build up my Agents with functionality but memory also goes down day by day. At least I know I can increase the memory Cougaar needs by just typing -Xmx8192M :). One last thing I want to mention is java IDEs. I have found out that the Cougaar plugins that are supposed to make your life easier can prove a pain sometimes. Personally I like working in NetBeans mainly because it has a superb GUI Builder. Agents can be monitored by HTTP servlets but there is also the breed of Interface Agents who require rich user interfaces built in Swing or other APIs. What I have found to work very well in NetBeans is to add the Cougaar libraries manually, create the project structure required and society files manually, follow the Cougaar tutorials religiously and then run your society from the console window. Anyway that's it for now, hopefully I will be back with more questions. Thanks again to the guys from BNN for their support. Dimitri -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080312/f4c724b5/attachment-0001.html From dtraskas at googlemail.com Sun Mar 16 19:25:00 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Sun, 16 Mar 2008 23:25:00 +0000 Subject: Dynamic Agent Creation - Best Practices Message-ID: <4f0d935a0803161625k33611e92tfcf29b3bed0ce2a5@mail.gmail.com> Hi to all, I have managed to slowly build up my simulation project and came to the point that I need to dynamically create a couple of thousand Agents. I have read the thread about Dynamic Agent Creation but I was wondering if I could get some tips in order to generate thousands of Agents for various simulation models. I also need to pass to each one of these Agents some data. They need to know their working shifts through the day and how they are going to perform (as it is a simulation). What would you say is the best practice to do that? Do I need to use the LDM Data Assets or can I just solve my problem by pushing a collection of data in the blackboard which is then picked up by each of the Agents after they are created? I would appreciate any tips on the subject because the dynamic creation of Agents on my project is critical and I dont want to waste any memory or resources. It has to be very efficient and reliable as the data that is passed to each Agent can affect the end result dramatically. Regards Dimitris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080316/6326e9db/attachment.html From duchene.morgan at wanadoo.fr Tue Mar 18 18:18:54 2008 From: duchene.morgan at wanadoo.fr (=?ISO-8859-1?Q?Morgan_Duch=E8ne?=) Date: Tue, 18 Mar 2008 23:18:54 +0100 Subject: Cougaar and JXTA Message-ID: <47E03FCE.2060608@wanadoo.fr> Hi everybody, I am considering the sending of files between Cougaar nodes and it drives me to a few questions. I found some documents dating from JavaOne 2002 where Cougaar was tested with JXTA for peer-to-peer purposes. What was exactly demonstrated and what happened to that project? About the communication between two nodes, is there any route optimization to minimize transfer time as Skype does? Thanks, Morgan From twright at bbn.com Wed Mar 19 10:45:14 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 19 Mar 2008 10:45:14 -0400 Subject: Dynamic Agent Creation - Best Practices In-Reply-To: <4f0d935a0803161625k33611e92tfcf29b3bed0ce2a5@mail.gmail.com> References: <4f0d935a0803161625k33611e92tfcf29b3bed0ce2a5@mail.gmail.com> Message-ID: <47E126FA.9090102@bbn.com> Dimitrios Traskas wrote: > Hi to all, > > I have managed to slowly build up my simulation project and came to the > point that I need to dynamically create a couple of thousand Agents. I > have read the thread about Dynamic Agent Creation but I was wondering if > I could get some tips in order to generate thousands of Agents for > various simulation models. I also need to pass to each one of these > Agents some data. They need to know their working shifts through the day > and how they are going to perform (as it is a simulation). What would > you say is the best practice to do that? Do I need to use the LDM Data > Assets or can I just solve my problem by pushing a collection of data in > the blackboard which is then picked up by each of the Agents after they > are created? Yes, I'd use the second approach: use Relays to push the data to the agents. A similar approach is to have the new agents "report" to the "master" agent when they are created, via a relay, and the master can send back a relay with the data. Todd > > I would appreciate any tips on the subject because the dynamic creation > of Agents on my project is critical and I dont want to waste any memory > or resources. It has to be very efficient and reliable as the data that > is passed to each Agent can affect the end result dramatically. > > > Regards > Dimitris > > > ------------------------------------------------------------------------ > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers From twright at bbn.com Wed Mar 19 11:11:11 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 19 Mar 2008 11:11:11 -0400 Subject: Cougaar and JXTA In-Reply-To: <47E03FCE.2060608@wanadoo.fr> References: <47E03FCE.2060608@wanadoo.fr> Message-ID: <47E12D0F.2040905@bbn.com> Morgan Duch?ne wrote: > Hi everybody, > > I am considering the sending of files between Cougaar nodes and it > drives me to a few questions. > > I found some documents dating from JavaOne 2002 where Cougaar was tested > with JXTA for peer-to-peer purposes. What was exactly demonstrated and > what happened to that project? It was a proof-of-concept. As far as I know, that was it. Is there some reason why you're interested in JXTA? It's okay at message passing, but I don't think it's amazing at file sharing. > > About the communication between two nodes, is there any route > optimization to minimize transfer time as Skype does? No, the standard Cougaar link protocols (Java-RMI, JMS, HTTP, CORBA, etc) all use Sockets, so they'll follow the TCP/IP routing. The JMS routing can be configured in the JMS servers, but I think that's more for getting past firewalls than for optimization. Obviously, the easiest thing to do is to use NFS or some equivalent shared directory. NFS is very good at what it does. If you want to send the files through Cougaar, you should first try sending them as simple relays and see if the performance is acceptable. Maybe this straight-forward solution will be fine. If the files are very large then you might need to send them in smaller "chunks". Lastly, your plugins could use some third-party library to move the files around, e.g. FTP. Simply Google for "Java FTP". Todd > > Thanks, > Morgan > > > > > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers > From dtraskas at googlemail.com Wed Mar 19 16:11:03 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 19 Mar 2008 20:11:03 +0000 Subject: Dynamic Agent Creation - Best Practices In-Reply-To: <47E126FA.9090102@bbn.com> References: <4f0d935a0803161625k33611e92tfcf29b3bed0ce2a5@mail.gmail.com> <47E126FA.9090102@bbn.com> Message-ID: <4f0d935a0803191311r439204e0i1f3b041ee03fbb47@mail.gmail.com> Thanks Todd, I actually started implementing a solution where all the data is loaded on the blackboard and then collected by the newly created Agents. But I like your idea of having a master / slave approach so that every Agent pulls the data relevant for itself by request to the main Simulation Agent. As for dynamically creating Agents I followed your MobilityFactory examples and it works fine. I noticed that in the past there was a different approach using a Node Agent Controller. Anyway thanks again, Dimitris On 19/03/2008, Todd Wright wrote: > > Dimitrios Traskas wrote: > > Hi to all, > > > > I have managed to slowly build up my simulation project and came to the > > point that I need to dynamically create a couple of thousand Agents. I > > have read the thread about Dynamic Agent Creation but I was wondering if > > I could get some tips in order to generate thousands of Agents for > > various simulation models. I also need to pass to each one of these > > Agents some data. They need to know their working shifts through the day > > and how they are going to perform (as it is a simulation). What would > > you say is the best practice to do that? Do I need to use the LDM Data > > Assets or can I just solve my problem by pushing a collection of data in > > the blackboard which is then picked up by each of the Agents after they > > are created? > > > Yes, I'd use the second approach: use Relays to push the data to the > agents. > > A similar approach is to have the new agents "report" to the "master" > agent > when they are created, via a relay, and the master can send back a relay > with > the data. > > Todd > > > > > > I would appreciate any tips on the subject because the dynamic creation > > of Agents on my project is critical and I dont want to waste any memory > > or resources. It has to be very efficient and reliable as the data that > > is passed to each Agent can affect the end result dramatically. > > > > > > Regards > > Dimitris > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Cougaar-developers mailing list > > Cougaar-developers at cougaar.org > > http://cougaar.org/mailman/listinfo/cougaar-developers > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080319/22ab5b36/attachment.html From dtraskas at googlemail.com Mon Mar 24 18:17:37 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Mon, 24 Mar 2008 22:17:37 +0000 Subject: Agent communication / Relay subjects Message-ID: <4f0d935a0803241517y37dfe0d2v43c7acb2f3d3f416@mail.gmail.com> Hi to all, I have a question about best practices in regards with Relays and Agent communication. Agent A sends a message to Agent B and expects replies of three different types (CONFIRM, REFUSE, FAIL). These in a sense are three Verbs that I can use for the Relay communication. The CONFIRM and REFUSE messages should be sent with an object attached that can provide some information about the reasons of confirmation or refusal. In an analogy we have an email with subject CONFIRM or REFUSE and a body of text that gives further explanations. At the moment I am encapsulating within that body the subject of the Relay message and just extract it when the message is received. Is there any other way to have a subject and body for Relay messages? It would be useful to hear some recommendations and examples from other people. Many Thanks Dimitris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080324/714870c4/attachment.html From crossfire2003 at gmx.de Wed Mar 26 02:45:13 2008 From: crossfire2003 at gmx.de (Christian Bernardt) Date: Wed, 26 Mar 2008 07:45:13 +0100 Subject: Creating Agents without XML Message-ID: Hi there, I am trying to figure out, how to create an agent society without defining the agents in a xml file. This way of managing societies is described on page 18 of the CAD. (section 3.2.1 Initialization). I have created a number of empty Nodes representing the spaces, the agents shall be created in. I would like to create agents in these societies, while cougaar is running. 1.)How can I add/remove agents to/from the nodes during runtime? 2.)Can I create such agents from outside of a node? If, how? 3.)How can I address the nodes that I have initialized in the xml file? I am totally new to cougaar, can anybody give me a jump start on how to achieve these things? Thanks in advance. Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080326/e93367f1/attachment.html From dtraskas at googlemail.com Wed Mar 26 16:48:35 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 26 Mar 2008 20:48:35 +0000 Subject: Creating Agents without XML Message-ID: <4f0d935a0803261348o2bbce8a3jf60471811a9b7990@mail.gmail.com> Hi Chris, I had a similar problem a few days ago in regards with creating Agents dynamically during runtime. If you see the threads about Dynamic Agent Creation that have been posted a week ago you will get a better idea. Basically you need to have a node.xml file where you specify your node details. You then have a Plugin that initialises your main Agent which you will use to generate new Agents. You need to generate an XML file for each Agent you are going to create, which you can then delete on Agent creation. Have a look at this email which explains everything in detail http://www.mail-archive.com/cougaar-developers at cougaar.org/msg00014.html I am a beginner with Cougaar too and followed the tutorials and emails in the cougaar developers mailing list which are very helpful. With the link I gave you I managed to dunamically create about 15000 Agents for some simulation experiments I am running. However I do not know if there is any way to create the Agents without the need for an XML file. Anyway please let me know if you need more help. Regards Dimitris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080326/ee12c936/attachment-0001.html From twright at bbn.com Wed Mar 26 16:49:49 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 26 Mar 2008 16:49:49 -0400 Subject: Agent communication / Relay subjects In-Reply-To: <4f0d935a0803241517y37dfe0d2v43c7acb2f3d3f416@mail.gmail.com> References: <4f0d935a0803241517y37dfe0d2v43c7acb2f3d3f416@mail.gmail.com> Message-ID: <47EAB6ED.7060502@bbn.com> Your usage sounds good. The relay "content" can be a data structure with both "subject" and "body" fields. Todd Dimitrios Traskas wrote: > Hi to all, > > I have a question about best practices in regards with Relays and Agent > communication. Agent A sends a message to Agent B and expects replies of > three different types (CONFIRM, REFUSE, FAIL). These in a sense are > three Verbs that I can use for the Relay communication. The CONFIRM and > REFUSE messages should be sent with an object attached that can provide > some information about the reasons of confirmation or refusal. In an > analogy we have an email with subject CONFIRM or REFUSE and a body of > text that gives further explanations. > > At the moment I am encapsulating within that body the subject of the > Relay message and just extract it when the message is received. Is there > any other way to have a subject and body for Relay messages? It would be > useful to hear some recommendations and examples from other people. > > > > Many Thanks > Dimitris > > > ------------------------------------------------------------------------ > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers From dtraskas at googlemail.com Wed Mar 26 17:34:20 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 26 Mar 2008 21:34:20 +0000 Subject: Relay - Blackboard Economics Message-ID: <4f0d935a0803261434r5c039ea7vd6bb974c730e4ca8@mail.gmail.com> Hi to all, I have a question in regards with Relays and objects in the Blackboard. If an Agent A has an established communication with an Agent B and they send to each other a number of messages what happens with messages that have been read and processed? Are they "garbage" collected or is it the responsibility of client code to get rid of them? I have thousand of messages being sent between Agents and I am wondering what happens once I go through a normal execute routine where I check the added messages in a collection. Once I read the message what is the lifetime of that message? Cheers Dimitris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080326/caa87faa/attachment.html From twright at bbn.com Wed Mar 26 17:47:42 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 26 Mar 2008 17:47:42 -0400 Subject: Creating Agents without XML In-Reply-To: References: Message-ID: <47EAC47E.9090509@bbn.com> Christian Bernardt wrote: > Hi there, > > I am trying to figure out, how to create an agent society without > defining the agents in a xml file. This way of managing societies is > described on page 18 of the CAD. (section 3.2.1 Initialization). I have > created a number of empty Nodes representing the spaces, the agents > shall be created in. I would like to create agents in these societies, > while cougaar is running. > 1.)How can I add/remove agents to/from the nodes during runtime? You can use the blackboard-based "AddTicket" approach, as discussed in: http://www.cougaar.org/pipermail/cougaar-developers/2007-May/002349.html This approach works from any agent or even a remote node. Or, if you only want to add an agent to the local node, you can call the "addAgent" method. This requires a plugin in the node agent. The above "AddTicket" code uses the "addAgent" method. Here's an example: ------------------------------------------------------------------------------ package whatever; import org.cougaar.core.agent.AgentContainer; import org.cougaar.core.component.ComponentSupport; import org.cougaar.core.mts.MessageAddress; import org.cougaar.core.node.NodeControlService; import org.cougaar.core.service.LoggingService; import org.cougaar.core.service.ThreadService; import org.cougaar.core.thread.Schedulable; public class AddAgent extends ComponentSupport { private LoggingService log; private ThreadService ts; private AgentContainer ac; public void setLoggingService(LoggingService log) { this.log = log; } public void setThreadService(ThreadService ts) { this.ts = ts; } public void setNodeControlService(NodeControlService ncs) { ac = (ncs == null ? null : ncs.getRootContainer()); } public void start() { super.start(); // add our agent after 5 seconds. For threading info see: // http://www.cougaar.org/pipermail/cougaar-developers/2004-October/001491.html Runnable r = new Runnable() { public void run() { log.shout("Adding agent Foo"); ac.addAgent(MessageAddress.getMessageAddress("Foo")); } }; Schedulable s = ts.getThread(this, r); log.shout("Waiting 5 seconds"); s.schedule(5*1000); } } ------------------------------------------------------------------------------ "MyNode.xml": ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ "Foo.xml": ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ Logging output: ------------------------------------------------------------------------------ 2008-03-26 17:17:01,410 SHOUT [XMLComponentInitializerServiceProvider] - Initializing node "Node1" from XML file "MyNode.xml" 2008-03-26 17:17:11,427 WARN [AgentLoader] - Node1: Node Node1 contains zero agents 2008-03-26 17:17:11,444 SHOUT [AddAgent] - Node1: Waiting 5 seconds 2008-03-26 05:17:16,441 SHOUT [DOTS] - . 2008-03-26 17:17:16,449 SHOUT [AddAgent] - Node1: Adding agent Foo 2008-03-26 17:17:16,694 SHOUT [HelloPlugin] - Foo: Hello, world! ------------------------------------------------------------------------------ Note that you must have a "Foo.xml" file in the Cougaar config path (e.g. the current directory). There's an enhancement request to allow an in-memory specification of what plugins to put in the agent, but that hasn't been implemented yet. > 2.)Can I create such agents from outside of a node? If, how? You'll need some way to tell the node to create the agent, e.g. a servlet. From there you can use either of the above techniques: 1) Use the blackboard-based "AddTicket" or 2) Use the service-based "addAgent" method > 3.)How can I address the nodes that I have initialized in the xml file? You name the agents when you create them, e.g. the above "Foo" example. You can send blackboard relays to them. Todd > > I am totally new to cougaar, can anybody give me a jump start on how to > achieve these things? > > Thanks in advance. Chris > > > ------------------------------------------------------------------------ > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers From twright at bbn.com Wed Mar 26 17:50:16 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 26 Mar 2008 17:50:16 -0400 Subject: Creating Agents without XML In-Reply-To: <4f0d935a0803261348o2bbce8a3jf60471811a9b7990@mail.gmail.com> References: <4f0d935a0803261348o2bbce8a3jf60471811a9b7990@mail.gmail.com> Message-ID: <47EAC518.3080907@bbn.com> > However I do not know if there > is any way to create the Agents without the need for an XML file. Yeah, that's on our enhancement "TODO" list. Todd From twright at bbn.com Wed Mar 26 18:13:52 2008 From: twright at bbn.com (Todd Wright) Date: Wed, 26 Mar 2008 18:13:52 -0400 Subject: Relay - Blackboard Economics In-Reply-To: <4f0d935a0803261434r5c039ea7vd6bb974c730e4ca8@mail.gmail.com> References: <4f0d935a0803261434r5c039ea7vd6bb974c730e4ca8@mail.gmail.com> Message-ID: <47EACAA0.2020307@bbn.com> Plugins must use publishRemove to cleanup publishAdd'ed objects. The ping demo uses the following pattern: 1. The "PingSender" publishAdd's a new relay 2. The "PingReceiver" publishChange's the relay to send back a response 3. The "PingSender" publishRemove's its relay 4. goto (1) So, every ping iteration creates a new relay and removes it. We cleanup after every iteration. Note that the relay must be publishRemove'd on the agent where it was publishAdd'ed. Another common pattern is: 1. The sender publishAdd's a new relay "r1" 2. The receiver publishAdd's its response in a new relay "r2" 3. The sender publishChange's relay "r1" in response to "r2" 4. The receiver publishChange's relay "r2" in response to "r1" 5. goto (3) In this pattern the two relays, "r1" and "r2", acts as content "channels". There is no memory leak because we only publishAdd these two relays. There are advantages and disadvantages to both of these design patterns. Either works fine in practice. Todd Dimitrios Traskas wrote: > Hi to all, > > I have a question in regards with Relays and objects in the Blackboard. > If an Agent A has an established communication with an Agent B and they > send to each other a number of messages what happens with messages that > have been read and processed? Are they "garbage" collected or is it the > responsibility of client code to get rid of them? I have thousand of > messages being sent between Agents and I am wondering what happens once > I go through a normal execute routine where I check the added messages > in a collection. Once I read the message what is the lifetime of that > message? > > > Cheers > Dimitris > > > ------------------------------------------------------------------------ > > _______________________________________________ > Cougaar-developers mailing list > Cougaar-developers at cougaar.org > http://cougaar.org/mailman/listinfo/cougaar-developers From dtraskas at googlemail.com Wed Mar 26 18:30:48 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 26 Mar 2008 22:30:48 +0000 Subject: Relay - Blackboard Economics In-Reply-To: <47EACAA0.2020307@bbn.com> References: <4f0d935a0803261434r5c039ea7vd6bb974c730e4ca8@mail.gmail.com> <47EACAA0.2020307@bbn.com> Message-ID: <4f0d935a0803261530h54a3be22ufb1a06bd5dd6774e@mail.gmail.com> Thanks Todd, I opened the PingSender and PingReceiver files again and noticed the line that removes the relay. I must say the information I needed was there but didn't see it in the first place. Good thing you mentioned that the publishRemove has to take place from the relay originator. Cheers Dimitris On 26/03/2008, Todd Wright wrote: > > > Plugins must use publishRemove to cleanup publishAdd'ed objects. > > The ping demo uses the following pattern: > 1. The "PingSender" publishAdd's a new relay > 2. The "PingReceiver" publishChange's the relay to send back a response > 3. The "PingSender" publishRemove's its relay > 4. goto (1) > So, every ping iteration creates a new relay and removes it. We cleanup > after > every iteration. Note that the relay must be publishRemove'd on the agent > where it was publishAdd'ed. > > Another common pattern is: > 1. The sender publishAdd's a new relay "r1" > 2. The receiver publishAdd's its response in a new relay "r2" > 3. The sender publishChange's relay "r1" in response to "r2" > 4. The receiver publishChange's relay "r2" in response to "r1" > 5. goto (3) > In this pattern the two relays, "r1" and "r2", acts as content "channels". > There is no memory leak because we only publishAdd these two relays. > > There are advantages and disadvantages to both of these design patterns. > Either works fine in practice. > > Todd > > > Dimitrios Traskas wrote: > > Hi to all, > > > > I have a question in regards with Relays and objects in the Blackboard. > > If an Agent A has an established communication with an Agent B and they > > send to each other a number of messages what happens with messages that > > have been read and processed? Are they "garbage" collected or is it the > > responsibility of client code to get rid of them? I have thousand of > > messages being sent between Agents and I am wondering what happens once > > I go through a normal execute routine where I check the added messages > > in a collection. Once I read the message what is the lifetime of that > > message? > > > > > > Cheers > > Dimitris > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Cougaar-developers mailing list > > Cougaar-developers at cougaar.org > > http://cougaar.org/mailman/listinfo/cougaar-developers > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080326/b394ccf5/attachment.html From dtraskas at googlemail.com Wed Mar 26 19:16:42 2008 From: dtraskas at googlemail.com (Dimitrios Traskas) Date: Wed, 26 Mar 2008 23:16:42 +0000 Subject: Logging Message-ID: <4f0d935a0803261616v5bba480cn44ad6618898e070a@mail.gmail.com> Hi again, I have a quick question in regards with logging. I want to save results of a simulation experiment in separate log files. In essence I am recording the exchange of messages and try to measure how effective my system is. I have read a few things about the LoggerFactory although not sure how to use that to save results in a simple csv file. Would you recommend using that class or maybe have a separate Agent where Relays are sent with the logging information? I need to be able to save the information from different Agents and share the logging instance. Any help would be appreciated. Regards Dimitris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://cougaar.org/pipermail/cougaar-developers/attachments/20080326/7bc9920c/attachment-0001.html From gvidaver at bbn.com Wed Mar 26 20:48:47 2008 From: gvidaver at bbn.com (Gordon Vidaver) Date: Wed, 26 Mar 2008 20:48:47 -0400 Subject: Relay - Blackboard Economics In-Reply-To: <4f0d935a0803261434r5c039ea7vd6bb974c730e4ca8@mail.gmail.co m> References: <4f0d935a0803261434r5c039ea7vd6bb974c730e4ca8@mail.gmail.com> Message-ID: Hi, It's the responsibility of the client to remove them from the blackboard if they are no longer needed. The relays will accumulate unless explicitly removed. You should be able to see this if you have the "tasks" servlet loaded (org.cougaar.planning.servlet.PlanViewServlet) and browse to the receiving agent (e.g. http://localhost:8800/$YOUR-RECEIVER-AGENT/tasks). If you look for UniqueObjects, you should see the thousands of relays that have been received. If you don't need to keep them around, the client code can publishRemove them from the blackboard. Gordon At 05:34 PM 3/26/2008 Wednesday, Dimitrios Traskas wrote: >Hi to all, > >I have a question in regards with Relays and objects in the >Blackboard. If an Agent A has an established communication with an >Agent B and they send to each other a number of messages what >happens with messages that have been read and processed? Are they >"garbage" collected or is it the responsibility of client code to >get rid of them? I have thousand of messages being sent between >Agents and I am wondering what happens once I go through a normal >execute routine where I check the added messages in a collection. >Once I read the message what is the lifetime of that message? > > >Cheers >Dimitris >_______________________________________________ >Cougaar-developers mailing list >Cougaar-developers at cougaar.org >http://cougaar.org/mailman/listinfo/cougaar-developers Gordon Vidaver BBN Technologies gvidaver at bbn.com Office 6/323 617 873-3558 10 Moulton St. 617 873-2616 (fax) Cambridge, MA 02138 866-322-9311 (toll free)