Utility components to periodically log performance metrics, such as
the cpu load and message traffic.
The simplest configuration option is to profile the aggregate
"messages per second" throughput. Add the following components
to all nodes:
<!-- required profiler-management component -->
<component
class='org.cougaar.core.qos.profile.ProfilerCoordinator'
priority='HIGH'
insertionpoint='Node.AgentManager.Agent.Component'>
<!-- optional period between logs, defaults to 60000 millis -->
<argument>period=10000</argument>
</component>
<!-- message transport sensor -->
<component
class='org.cougaar.mts.std.StatisticsAspect'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Aspect'/>
<!-- messaging throughput profiler -->
<component
class='org.cougaar.core.qos.profile.Throughput'/>
Example output:
2005-04-29 13:23:39,297 SHOUT [throughput] - NodeA: #agent_send_count_per_second, total_send_count_per_second, agent_send_count, total_send_count,
2005-04-29 13:23:39,362 SHOUT [throughput] - NodeA: 0.00, 0.00, 0, 3
2005-04-29 13:23:49,103 SHOUT [throughput] - NodeA: 0.56, 1.78, 5, 19
2005-04-29 13:23:59,101 SHOUT [throughput] - NodeA: 27.22, 27.22, 250, 264
2005-04-29 13:24:09,102 SHOUT [throughput] - NodeA: 121.50, 121.50, 1465, 1479
2005-04-29 13:24:19,101 SHOUT [throughput] - NodeA: 160.89, 161.11, 2913, 2929
In the above example, the agents on NodeA are sending an aggregate 161
messages/second. This output is from a two-node "ping" test from
AgentA on NodeA to a remote AgentB on NodeB.
For more detailed profiling, add the following components to all nodes:
<!-- required profiler-management component -->
<component
class='org.cougaar.core.qos.profile.ProfilerCoordinator'
priority='HIGH'
insertionpoint='Node.AgentManager.Agent.Component'/>
<!-- mts components -->
<component
class='org.cougaar.mts.std.StatisticsAspect'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Aspect'/>
<component
class='org.cougaar.core.qos.tmatrix.AgentFlowAspect'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Aspect'/>
<!-- optional mts-internal profilers (select none, any, or all) -->
<component
class='org.cougaar.core.qos.profile.LocalTraffic'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
<component
class='org.cougaar.core.qos.profile.RemoteTraffic'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
<component
class='org.cougaar.core.qos.profile.Throughput'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
<component
class='org.cougaar.core.qos.profile.TrafficMatrix'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
<!-- metrics components and plugins -->
<component
class='org.cougaar.core.qos.rss.AgentHostUpdaterComponent'
insertionpoint='Node.AgentManager.Agent.MetricsServices.Component'/>
<component
class='org.cougaar.lib.mquo.SyscondFactory'
insertionpoint='Node.AgentManager.Agent.MetricsServices.Component'/>
<component
class='org.cougaar.core.qos.rss.ConfigFinderDataFeedComponent'
insertionpoint='Node.AgentManager.Agent.MetricsServices.Component'>
<argument>name=sites</argument>
<argument>url=cougaarconfig:TIC-Sites.conf</argument>
</component>
<component
class='org.cougaar.core.qos.rss.ConfigFinderDataFeedComponent'
insertionpoint='Node.AgentManager.Agent.MetricsServices.Component'>
<argument>name=hosts</argument>
<argument>url=cougaarconfig:TIC-Hosts.conf</argument>
</component>
<component
class='org.cougaar.core.qos.tmatrix.AgentFlowRatePlugin'/>
<component
class='org.cougaar.core.qos.metrics.AgentStatusRatePlugin'/>
<component
class='org.cougaar.core.thread.AgentLoadSensorPlugin'/>
<component
class='org.cougaar.core.thread.AgentLoadRatePlugin'/>
<component
class='org.cougaar.mts.std.StatisticsPlugin'/>
<!-- optional profilers (select none, any, or all) -->
<component
class='org.cougaar.core.qos.profile.BlackboardSize'/>
<component
class='org.cougaar.core.qos.profile.JvmHeapSize'/>
<component
class='org.cougaar.core.qos.profile.Load'/>
<component
class='org.cougaar.core.qos.profile.NodeTraffic'/>
<component
class='org.cougaar.core.qos.profile.PersistSize'/>
<component
class='org.cougaar.core.qos.profile.ProcLoadAvg'/>
<component
class='org.cougaar.core.qos.profile.ProcNetDev'/>
<component
class='org.cougaar.core.qos.profile.ProcMemInfo'/>
<component
class='org.cougaar.core.qos.profile.ProcStat'/>
<component
class='org.cougaar.core.qos.profile.ProcStatus'/>
<component
class='org.cougaar.core.qos.profile.Resources'/>
<component
class='org.cougaar.core.qos.profile.VmStat'/>
<!-- optional, required if above BlackboardSize is loaded -->
<component
class='org.cougaar.core.qos.profile.BlackboardSizeInAgent'/>
Plus add the following components to all agents:
<!-- optional, required if above PersistSize is loaded -->
<component
class='org.cougaar.core.qos.metrics.PersistenceAdapterPlugin'/>
<!-- optional, required if above BlackboardSize is loaded -->
<component
class='org.cougaar.core.qos.profile.BlackboardSizeInAgent'/>
Some useful system properties:
<!-- enable persistence, for PersistSize activity -->
<vm_parameter>
-Dorg.cougaar.core.persistence.enable=true
</vm_parameter>
<!-- disable the "NodeA: " logging prefix -->
<vm_parameter>
-Dorg.cougaar.core.logging.addAgentPrefix=false
</vm_parameter>
<!-- turn off +/- logging on message activity -->
<vm_parameter>
-Dorg.cougaar.core.agent.quiet=true
</vm_parameter>
<!-- reduce naming & mts startup time -->
<vm_parameter>
-Dorg.cougaar.core.wp.resolver.rmi.minLookup=500
</vm_parameter>
<vm_parameter>
-Dorg.cougaar.core.wp.resolver.rmi.maxLookup=2000
</vm_parameter>
<vm_parameter>
-Dorg.cougaar.core.wp.server.failTTD=1000
</vm_parameter>
<vm_parameter>
-Dorg.cougaar.core.mts.destq.retry.maxTimeout=30000
</vm_parameter>
|
BlackboardSize.java | Class | This component profiles the per-agent blackboard size and
add/change/remove counts for standard blackboard object types
(UniqueObject, Task, etc).
Example output:
bb_AgentA__Task - #current, added, changed, removed
bb_AgentA__Task - 5807, 7615, 3514, 1806
bb_AgentA__UniqueObject - 11853, 18841, 46569, 6988
bb_AgentA__transactions - 192, 192, 0, 0
In this example, 5807 tasks are on the blackboard. |
JavaHeapSize.java | Class | This component profiles the JVM heap size (used, free, total,
max).
Example output:
jvmheap - #used_bytes, free_bytes, total_bytes, max_bytes
jvmheap - 5430096, 5084336, 10514432, 66650112
In this example, the current JVM heap size is 5.18 mb. |