mirror of https://github.com/apache/activemq.git
- Added summary for CPU usage
- Fix compiler error for ActiveMQPojoSPI git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@420537 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9b07e4323a
commit
fddc01d97c
|
@ -23,6 +23,10 @@ import org.apache.activemq.tool.reports.plugins.CpuReportPlugin;
|
|||
import java.util.Map;
|
||||
|
||||
public abstract class AbstractPerfReportWriter implements PerformanceReportWriter {
|
||||
|
||||
public static final int REPORT_PLUGIN_THROUGHPUT = 0;
|
||||
public static final int REPORT_PLUGIN_CPU = 1;
|
||||
|
||||
protected ReportPlugin[] plugins = new ReportPlugin[] {
|
||||
new ThroughputReportPlugin(),
|
||||
new CpuReportPlugin()
|
||||
|
|
|
@ -23,67 +23,67 @@ public final class PerformanceStatisticsUtil {
|
|||
private PerformanceStatisticsUtil() {
|
||||
}
|
||||
|
||||
public static long getTotalThroughput(List totalTPList) {
|
||||
long totalTP = 0;
|
||||
if (totalTPList != null) {
|
||||
for (Iterator i=totalTPList.iterator(); i.hasNext();) {
|
||||
totalTP += ((Long)i.next()).longValue();
|
||||
public static long getSum(List numList) {
|
||||
long sum = 0;
|
||||
if (numList != null) {
|
||||
for (Iterator i=numList.iterator(); i.hasNext();) {
|
||||
sum += ((Long)i.next()).longValue();
|
||||
}
|
||||
} else {
|
||||
totalTP = -1;
|
||||
sum = -1;
|
||||
}
|
||||
return totalTP;
|
||||
return sum;
|
||||
}
|
||||
|
||||
public static long getMinThroughput(List totalTPList) {
|
||||
long minTP = Long.MAX_VALUE;
|
||||
if (totalTPList != null) {
|
||||
for (Iterator i=totalTPList.iterator(); i.hasNext();) {
|
||||
minTP = Math.min(((Long)i.next()).longValue(), minTP);
|
||||
public static long getMin(List numList) {
|
||||
long min = Long.MAX_VALUE;
|
||||
if (numList != null) {
|
||||
for (Iterator i=numList.iterator(); i.hasNext();) {
|
||||
min = Math.min(((Long)i.next()).longValue(), min);
|
||||
}
|
||||
} else {
|
||||
minTP = -1;
|
||||
min = -1;
|
||||
}
|
||||
return minTP;
|
||||
return min;
|
||||
}
|
||||
|
||||
public static long getMaxThroughput(List totalTPList) {
|
||||
long maxTP = Long.MIN_VALUE;
|
||||
if (totalTPList != null) {
|
||||
for (Iterator i=totalTPList.iterator(); i.hasNext();) {
|
||||
maxTP = Math.max(((Long)i.next()).longValue(), maxTP);
|
||||
public static long getMax(List numList) {
|
||||
long max = Long.MIN_VALUE;
|
||||
if (numList != null) {
|
||||
for (Iterator i=numList.iterator(); i.hasNext();) {
|
||||
max = Math.max(((Long)i.next()).longValue(), max);
|
||||
}
|
||||
} else {
|
||||
maxTP = -1;
|
||||
max = -1;
|
||||
}
|
||||
return maxTP;
|
||||
return max;
|
||||
}
|
||||
|
||||
public static double getAveThroughput(List totalTPList) {
|
||||
double aveTP;
|
||||
if (totalTPList != null) {
|
||||
public static double getAve(List numList) {
|
||||
double ave;
|
||||
if (numList != null) {
|
||||
int sampleCount = 0;
|
||||
long totalTP = 0;
|
||||
for (Iterator i=totalTPList.iterator(); i.hasNext();) {
|
||||
for (Iterator i=numList.iterator(); i.hasNext();) {
|
||||
sampleCount++;
|
||||
totalTP += ((Long)i.next()).longValue();
|
||||
}
|
||||
return (double)totalTP / (double)sampleCount;
|
||||
} else {
|
||||
aveTP = -1;
|
||||
ave = -1;
|
||||
}
|
||||
return aveTP;
|
||||
return ave;
|
||||
}
|
||||
|
||||
public static double getAveThroughputExcludingMinMax(List totalTPList) {
|
||||
double aveTP;
|
||||
long minTP = getMinThroughput(totalTPList);
|
||||
long maxTP = getMaxThroughput(totalTPList);
|
||||
if (totalTPList != null) {
|
||||
public static double getAveEx(List numList) {
|
||||
double ave;
|
||||
long minTP = getMin(numList);
|
||||
long maxTP = getMax(numList);
|
||||
if (numList != null) {
|
||||
int sampleCount = 0;
|
||||
long totalTP = 0;
|
||||
long sampleTP;
|
||||
for (Iterator i=totalTPList.iterator(); i.hasNext();) {
|
||||
for (Iterator i=numList.iterator(); i.hasNext();) {
|
||||
sampleCount++;
|
||||
sampleTP = ((Long)i.next()).longValue();
|
||||
if (sampleTP != minTP && sampleTP != maxTP) {
|
||||
|
@ -92,9 +92,9 @@ public final class PerformanceStatisticsUtil {
|
|||
}
|
||||
return (double)totalTP / (double)sampleCount;
|
||||
} else {
|
||||
aveTP = -1;
|
||||
ave = -1;
|
||||
}
|
||||
return aveTP;
|
||||
return ave;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.apache.activemq.tool.reports;
|
|||
|
||||
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
|
||||
import org.apache.activemq.tool.reports.plugins.ThroughputReportPlugin;
|
||||
import org.apache.activemq.tool.reports.plugins.CpuReportPlugin;
|
||||
|
||||
import java.util.Properties;
|
||||
import java.util.Iterator;
|
||||
|
@ -40,9 +41,9 @@ public class VerbosePerfReportWriter extends AbstractPerfReportWriter {
|
|||
}
|
||||
|
||||
public void writeCsvData(int csvType, String csvData) {
|
||||
if (csvType == ReportPlugin.REPORT_PLUGIN_THROUGHPUT) {
|
||||
if (csvType == REPORT_PLUGIN_THROUGHPUT) {
|
||||
System.out.println("[PERF-TP]: " + csvData);
|
||||
} else if (csvType == ReportPlugin.REPORT_PLUGIN_CPU) {
|
||||
} else if (csvType == REPORT_PLUGIN_CPU) {
|
||||
System.out.println("[PERF-CPU]: " + csvData);
|
||||
}
|
||||
handleCsvData(csvType, csvData);
|
||||
|
@ -62,8 +63,23 @@ public class VerbosePerfReportWriter extends AbstractPerfReportWriter {
|
|||
}
|
||||
|
||||
public void writePerfSummary() {
|
||||
Map summary = getSummary(ReportPlugin.REPORT_PLUGIN_THROUGHPUT);
|
||||
|
||||
Map summary;
|
||||
|
||||
summary = getSummary(REPORT_PLUGIN_THROUGHPUT);
|
||||
if (summary != null && summary.size() > 0) {
|
||||
writeThroughputSummary(summary);
|
||||
}
|
||||
|
||||
summary = getSummary(REPORT_PLUGIN_CPU);
|
||||
if (summary != null && summary.size() > 0) {
|
||||
writeCpuSummary(summary);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void writeThroughputSummary(Map summary) {
|
||||
writeHeader("SYSTEM THROUGHPUT SUMMARY");
|
||||
System.out.println("[PERF-TP-SUMMARY] System Total Throughput: " + summary.get(ThroughputReportPlugin.KEY_SYS_TOTAL_TP));
|
||||
System.out.println("[PERF-TP-SUMMARY] System Total Clients: " + summary.get(ThroughputReportPlugin.KEY_SYS_TOTAL_CLIENTS));
|
||||
System.out.println("[PERF-TP-SUMMARY] System Average Throughput: " + summary.get(ThroughputReportPlugin.KEY_SYS_AVE_TP));
|
||||
|
@ -80,6 +96,30 @@ public class VerbosePerfReportWriter extends AbstractPerfReportWriter {
|
|||
System.out.println("[PERF-TP-SUMMARY] Max Client Average Throughput Excluding Min/Max: " + summary.get(ThroughputReportPlugin.KEY_MAX_CLIENT_AVE_EMM_TP));
|
||||
}
|
||||
|
||||
protected void writeCpuSummary(Map summary) {
|
||||
writeHeader("SYSTEM CPU USAGE SUMMARY");
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total Blocks Received: " + summary.get(CpuReportPlugin.KEY_BLOCK_RECV));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave Blocks Received: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_RECV));
|
||||
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total Blocks Sent: " + summary.get(CpuReportPlugin.KEY_BLOCK_SENT));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave Blocks Sent: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_SENT));
|
||||
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total Context Switches: " + summary.get(CpuReportPlugin.KEY_CTX_SWITCH));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave Context Switches: " + summary.get(CpuReportPlugin.KEY_AVE_CTX_SWITCH));
|
||||
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total User Time: " + summary.get(CpuReportPlugin.KEY_USER_TIME));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave User Time: " + summary.get(CpuReportPlugin.KEY_AVE_USER_TIME));
|
||||
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total System Time: " + summary.get(CpuReportPlugin.KEY_SYS_TIME));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave System Time: " + summary.get(CpuReportPlugin.KEY_AVE_SYS_TIME));
|
||||
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total Idle Time: " + summary.get(CpuReportPlugin.KEY_IDLE_TIME));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave Idle Time: " + summary.get(CpuReportPlugin.KEY_AVE_IDLE_TIME));
|
||||
|
||||
System.out.println("[PERF-CPU-SUMMARY] Total Wait Time: " + summary.get(CpuReportPlugin.KEY_WAIT_TIME));
|
||||
System.out.println("[PERF-CPU-SUMMARY] Ave Wait Time: " + summary.get(CpuReportPlugin.KEY_AVE_WAIT_TIME));
|
||||
}
|
||||
|
||||
protected void writeHeader(String header) {
|
||||
char[] border = new char[header.length() + 8]; // +8 for spacing
|
||||
Arrays.fill(border, '#');
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.apache.commons.logging.Log;
|
|||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
|
||||
import org.apache.activemq.tool.reports.plugins.ThroughputReportPlugin;
|
||||
import org.apache.activemq.tool.reports.plugins.CpuReportPlugin;
|
||||
|
||||
import java.util.Properties;
|
||||
import java.util.List;
|
||||
|
@ -114,9 +115,9 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
|
|||
}
|
||||
|
||||
public void writeCsvData(int csvType, String csvData) {
|
||||
if (csvType == ReportPlugin.REPORT_PLUGIN_THROUGHPUT) {
|
||||
if (csvType == REPORT_PLUGIN_THROUGHPUT) {
|
||||
tempLogFileWriter.println("[TP-DATA]" + csvData);
|
||||
} else if (csvType == ReportPlugin.REPORT_PLUGIN_CPU) {
|
||||
} else if (csvType == REPORT_PLUGIN_CPU) {
|
||||
tempLogFileWriter.println("[CPU-DATA]" + csvData);
|
||||
}
|
||||
}
|
||||
|
@ -198,10 +199,10 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
|
|||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (line.startsWith("[TP-DATA]")) {
|
||||
handleCsvData(ReportPlugin.REPORT_PLUGIN_THROUGHPUT, line.substring("[TP-DATA]".length()));
|
||||
handleCsvData(REPORT_PLUGIN_THROUGHPUT, line.substring("[TP-DATA]".length()));
|
||||
parsePerfCsvData("tpdata", line.substring("[TP-DATA]".length()));
|
||||
} else if (line.startsWith("[CPU-DATA]")) {
|
||||
handleCsvData(ReportPlugin.REPORT_PLUGIN_CPU, line.substring("[CPU-DATA]".length()));
|
||||
handleCsvData(REPORT_PLUGIN_CPU, line.substring("[CPU-DATA]".length()));
|
||||
parsePerfCsvData("cpudata", line.substring("[CPU-DATA]".length()));
|
||||
} else if (line.startsWith("[INFO]")) {
|
||||
xmlFileWriter.println("<info>" + line + "</info>");
|
||||
|
@ -215,14 +216,32 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
|
|||
}
|
||||
|
||||
protected void writeXmlPerfSummary() {
|
||||
// Write throughput summary
|
||||
Map summary = getSummary(ReportPlugin.REPORT_PLUGIN_THROUGHPUT);
|
||||
|
||||
xmlFileWriter.println("<property name='perfSummary'>");
|
||||
Map summary;
|
||||
|
||||
summary = getSummary(REPORT_PLUGIN_THROUGHPUT);
|
||||
if (summary != null && summary.size() > 0) {
|
||||
writeThroughputSummary(summary);
|
||||
}
|
||||
|
||||
summary = getSummary(REPORT_PLUGIN_CPU);
|
||||
if (summary != null && summary.size() > 0) {
|
||||
writeCpuSummary(summary);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void writeThroughputSummary(Map summary) {
|
||||
// Write throughput summary
|
||||
xmlFileWriter.println("<property name='perfTpSummary'>");
|
||||
xmlFileWriter.println("<props>");
|
||||
|
||||
String val, clientName, clientVal;
|
||||
|
||||
System.out.println("#########################################");
|
||||
System.out.println("#### SYSTEM THROUGHPUT SUMMARY ####");
|
||||
System.out.println("#########################################");
|
||||
|
||||
val = (String)summary.get(ThroughputReportPlugin.KEY_SYS_TOTAL_TP);
|
||||
System.out.println("System Total Throughput: " + val);
|
||||
xmlFileWriter.println("<prop key='" + ThroughputReportPlugin.KEY_SYS_TOTAL_TP + "'>" + val + "</prop>");
|
||||
|
@ -299,6 +318,60 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
|
|||
xmlFileWriter.println("</property>");
|
||||
}
|
||||
|
||||
protected void writeCpuSummary(Map summary) {
|
||||
xmlFileWriter.println("<property name='perfTpSummary'>");
|
||||
xmlFileWriter.println("<props>");
|
||||
|
||||
System.out.println("########################################");
|
||||
System.out.println("#### SYSTEM CPU USAGE SUMMARY ####");
|
||||
System.out.println("########################################");
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_BLOCK_RECV + "'>" + summary.get(CpuReportPlugin.KEY_BLOCK_RECV) + "</prop>");
|
||||
System.out.println("Total Blocks Received: " + summary.get(CpuReportPlugin.KEY_BLOCK_RECV));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_BLOCK_RECV + "'>" + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_RECV) + "</prop>");
|
||||
System.out.println("Ave Blocks Received: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_RECV));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_BLOCK_SENT + "'>" + summary.get(CpuReportPlugin.KEY_BLOCK_SENT) + "</prop>");
|
||||
System.out.println("Total Blocks Sent: " + summary.get(CpuReportPlugin.KEY_BLOCK_SENT));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_BLOCK_SENT + "'>" + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_SENT) + "</prop>");
|
||||
System.out.println(" Ave Blocks Sent: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_SENT));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_CTX_SWITCH + "'>" + summary.get(CpuReportPlugin.KEY_CTX_SWITCH) + "</prop>");
|
||||
System.out.println("Total Context Switches: " + summary.get(CpuReportPlugin.KEY_CTX_SWITCH));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_CTX_SWITCH + "'>" + summary.get(CpuReportPlugin.KEY_AVE_CTX_SWITCH) + "</prop>");
|
||||
System.out.println("Ave Context Switches: " + summary.get(CpuReportPlugin.KEY_AVE_CTX_SWITCH));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_USER_TIME + "'>" + summary.get(CpuReportPlugin.KEY_USER_TIME) + "</prop>");
|
||||
System.out.println("Total User Time: " + summary.get(CpuReportPlugin.KEY_USER_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_USER_TIME + "'>" + summary.get(CpuReportPlugin.KEY_AVE_USER_TIME) + "</prop>");
|
||||
System.out.println("Ave User Time: " + summary.get(CpuReportPlugin.KEY_AVE_USER_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_SYS_TIME + "'>" + summary.get(CpuReportPlugin.KEY_SYS_TIME) + "</prop>");
|
||||
System.out.println("Total System Time: " + summary.get(CpuReportPlugin.KEY_SYS_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_SYS_TIME + "'>" + summary.get(CpuReportPlugin.KEY_AVE_SYS_TIME) + "</prop>");
|
||||
System.out.println("Ave System Time: " + summary.get(CpuReportPlugin.KEY_AVE_SYS_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_IDLE_TIME + "'>" + summary.get(CpuReportPlugin.KEY_IDLE_TIME) + "</prop>");
|
||||
System.out.println("Total Idle Time: " + summary.get(CpuReportPlugin.KEY_IDLE_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_IDLE_TIME + "'>" + summary.get(CpuReportPlugin.KEY_AVE_IDLE_TIME) + "</prop>");
|
||||
System.out.println("Ave Idle Time: " + summary.get(CpuReportPlugin.KEY_AVE_IDLE_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_WAIT_TIME + "'>" + summary.get(CpuReportPlugin.KEY_WAIT_TIME) + "</prop>");
|
||||
System.out.println("Total Wait Time: " + summary.get(CpuReportPlugin.KEY_WAIT_TIME));
|
||||
|
||||
xmlFileWriter.println("<prop key='" + CpuReportPlugin.KEY_AVE_WAIT_TIME + "'>" + summary.get(CpuReportPlugin.KEY_AVE_WAIT_TIME) + "</prop>");
|
||||
System.out.println("Ave Wait Time: " + summary.get(CpuReportPlugin.KEY_AVE_WAIT_TIME));
|
||||
|
||||
xmlFileWriter.println("</props>");
|
||||
xmlFileWriter.println("</property>");
|
||||
}
|
||||
|
||||
protected void writeMap(String name, Map map) {
|
||||
xmlFileWriter.println("<property name='" + name + "'>");
|
||||
xmlFileWriter.println("<props>");
|
||||
|
|
|
@ -16,14 +16,134 @@
|
|||
*/
|
||||
package org.apache.activemq.tool.reports.plugins;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.activemq.tool.reports.PerformanceStatisticsUtil;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class CpuReportPlugin implements ReportPlugin {
|
||||
private static final Log log = LogFactory.getLog(CpuReportPlugin.class);
|
||||
|
||||
public static final String NAME_BLOCK_RECV = "bi";
|
||||
public static final String NAME_BLOCK_SENT = "bu";
|
||||
public static final String NAME_CTX_SWITCH = "cs";
|
||||
public static final String NAME_USER_TIME = "us";
|
||||
public static final String NAME_SYS_TIME = "sy";
|
||||
public static final String NAME_IDLE_TIME = "id";
|
||||
public static final String NAME_WAIT_TIME = "wa";
|
||||
|
||||
public static final String KEY_BLOCK_RECV = "BlocksReceived";
|
||||
public static final String KEY_BLOCK_SENT = "BlocksSent";
|
||||
public static final String KEY_CTX_SWITCH = "ContextSwitches";
|
||||
public static final String KEY_USER_TIME = "UserTime";
|
||||
public static final String KEY_SYS_TIME = "SystemTime";
|
||||
public static final String KEY_IDLE_TIME = "IdleTime";
|
||||
public static final String KEY_WAIT_TIME = "WaitingTime";
|
||||
|
||||
public static final String KEY_AVE_BLOCK_RECV = "AveBlocksReceived";
|
||||
public static final String KEY_AVE_BLOCK_SENT = "AveBlocksSent";
|
||||
public static final String KEY_AVE_CTX_SWITCH = "AveContextSwitches";
|
||||
public static final String KEY_AVE_USER_TIME = "AveUserTime";
|
||||
public static final String KEY_AVE_SYS_TIME = "AveSystemTime";
|
||||
public static final String KEY_AVE_IDLE_TIME = "AveIdleTime";
|
||||
public static final String KEY_AVE_WAIT_TIME = "AveWaitingTime";
|
||||
|
||||
protected List blockRecv = new ArrayList();
|
||||
protected List blockSent = new ArrayList();
|
||||
protected List ctxSwitch = new ArrayList();
|
||||
protected List userTime = new ArrayList();
|
||||
protected List sysTime = new ArrayList();
|
||||
protected List idleTime = new ArrayList();
|
||||
protected List waitTime = new ArrayList();
|
||||
|
||||
public void handleCsvData(String csvData) {
|
||||
// Do nothing
|
||||
StringTokenizer tokenizer = new StringTokenizer(csvData, ",");
|
||||
String data, key, val;
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
data = tokenizer.nextToken();
|
||||
key = data.substring(0, data.indexOf("="));
|
||||
val = data.substring(data.indexOf("=") + 1);
|
||||
|
||||
addToCpuList(key, val);
|
||||
}
|
||||
}
|
||||
|
||||
public Map getSummary() {
|
||||
return null; // Do nothing
|
||||
long val;
|
||||
|
||||
Map summary = new HashMap();
|
||||
|
||||
if (blockRecv.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(blockRecv);
|
||||
summary.put(KEY_BLOCK_RECV, String.valueOf(val));
|
||||
summary.put(KEY_AVE_BLOCK_RECV, String.valueOf((double)val / (double)blockRecv.size()));
|
||||
}
|
||||
|
||||
if (blockSent.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(blockSent);
|
||||
summary.put(KEY_BLOCK_SENT, String.valueOf(val));
|
||||
summary.put(KEY_AVE_BLOCK_SENT, String.valueOf((double)val / (double)blockSent.size()));
|
||||
}
|
||||
|
||||
if (ctxSwitch.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(ctxSwitch);
|
||||
summary.put(KEY_CTX_SWITCH, String.valueOf(val));
|
||||
summary.put(KEY_AVE_CTX_SWITCH, String.valueOf((double)val / (double)ctxSwitch.size()));
|
||||
}
|
||||
|
||||
if (userTime.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(userTime);
|
||||
summary.put(KEY_USER_TIME, String.valueOf(val));
|
||||
summary.put(KEY_AVE_USER_TIME, String.valueOf((double)val / (double)userTime.size()));
|
||||
}
|
||||
|
||||
if (sysTime.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(sysTime);
|
||||
summary.put(KEY_SYS_TIME, String.valueOf(val));
|
||||
summary.put(KEY_AVE_SYS_TIME, String.valueOf((double)val / (double)sysTime.size()));
|
||||
}
|
||||
|
||||
if (idleTime.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(idleTime);
|
||||
summary.put(KEY_IDLE_TIME, String.valueOf(val));
|
||||
summary.put(KEY_AVE_IDLE_TIME, String.valueOf((double)val / (double)idleTime.size()));
|
||||
}
|
||||
|
||||
if (waitTime.size() > 0) {
|
||||
val = PerformanceStatisticsUtil.getSum(waitTime);
|
||||
summary.put(KEY_WAIT_TIME, String.valueOf(val));
|
||||
summary.put(KEY_AVE_WAIT_TIME, String.valueOf((double)val / (double)waitTime.size()));
|
||||
}
|
||||
|
||||
if (summary.size() > 0) {
|
||||
return summary;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected void addToCpuList(String key, String val) {
|
||||
if (key.equals(NAME_BLOCK_RECV)) {
|
||||
blockRecv.add(Long.valueOf(val));
|
||||
} else if (key.equals(NAME_BLOCK_SENT)) {
|
||||
blockSent.add(Long.valueOf(val));
|
||||
} else if (key.equals(NAME_CTX_SWITCH)) {
|
||||
ctxSwitch.add(Long.valueOf(val));
|
||||
} else if (key.equals(NAME_USER_TIME)) {
|
||||
userTime.add(Long.valueOf(val));
|
||||
} else if (key.equals(NAME_SYS_TIME)) {
|
||||
sysTime.add(Long.valueOf(val));
|
||||
} else if (key.equals(NAME_IDLE_TIME)) {
|
||||
idleTime.add(Long.valueOf(val));
|
||||
} else if (key.equals(NAME_WAIT_TIME)) {
|
||||
waitTime.add(Long.valueOf(val));
|
||||
} else {
|
||||
log.warn("Unrecognized CPU data. " + key + "=" + val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,9 +19,6 @@ package org.apache.activemq.tool.reports.plugins;
|
|||
import java.util.Map;
|
||||
|
||||
public interface ReportPlugin {
|
||||
public static final int REPORT_PLUGIN_THROUGHPUT = 0;
|
||||
public static final int REPORT_PLUGIN_CPU = 1;
|
||||
|
||||
public void handleCsvData(String csvData);
|
||||
public Map getSummary();
|
||||
}
|
||||
|
|
|
@ -65,6 +65,11 @@ public class ThroughputReportPlugin implements ReportPlugin {
|
|||
}
|
||||
|
||||
public Map getSummary() {
|
||||
// Check if tp sampler wasn't used.
|
||||
if (clientThroughputs.size() == 0) {
|
||||
return new HashMap();
|
||||
}
|
||||
|
||||
long minClientTP = Long.MAX_VALUE, // TP = throughput
|
||||
maxClientTP = Long.MIN_VALUE,
|
||||
minClientTotalTP = Long.MAX_VALUE,
|
||||
|
@ -98,19 +103,19 @@ public class ThroughputReportPlugin implements ReportPlugin {
|
|||
clientTPList = (List)clientThroughputs.get(clientName);
|
||||
clientCount++;
|
||||
|
||||
tempLong = PerformanceStatisticsUtil.getMinThroughput(clientTPList);
|
||||
tempLong = PerformanceStatisticsUtil.getMin(clientTPList);
|
||||
if (tempLong < minClientTP) {
|
||||
minClientTP = tempLong;
|
||||
nameMinClientTP = clientName;
|
||||
}
|
||||
|
||||
tempLong = PerformanceStatisticsUtil.getMaxThroughput(clientTPList);
|
||||
tempLong = PerformanceStatisticsUtil.getMax(clientTPList);
|
||||
if (tempLong > maxClientTP) {
|
||||
maxClientTP = tempLong;
|
||||
nameMaxClientTP = clientName;
|
||||
}
|
||||
|
||||
tempLong = PerformanceStatisticsUtil.getTotalThroughput(clientTPList);
|
||||
tempLong = PerformanceStatisticsUtil.getSum(clientTPList);
|
||||
systemTotalTP += tempLong; // Accumulate total TP
|
||||
if (tempLong < minClientTotalTP) {
|
||||
minClientTotalTP = tempLong;
|
||||
|
@ -122,7 +127,7 @@ public class ThroughputReportPlugin implements ReportPlugin {
|
|||
nameMaxClientTotalTP = clientName;
|
||||
}
|
||||
|
||||
tempDouble = PerformanceStatisticsUtil.getAveThroughput(clientTPList);
|
||||
tempDouble = PerformanceStatisticsUtil.getAve(clientTPList);
|
||||
systemAveTP += tempDouble; // Accumulate ave throughput
|
||||
if (tempDouble < minClientAveTP) {
|
||||
minClientAveTP = tempDouble;
|
||||
|
@ -134,7 +139,7 @@ public class ThroughputReportPlugin implements ReportPlugin {
|
|||
nameMaxClientAveTP = clientName;
|
||||
}
|
||||
|
||||
tempDouble = PerformanceStatisticsUtil.getAveThroughputExcludingMinMax(clientTPList);
|
||||
tempDouble = PerformanceStatisticsUtil.getAveEx(clientTPList);
|
||||
systemAveEMMTP += tempDouble; // Accumulate ave throughput excluding min/max
|
||||
if (tempDouble < minClientAveEMMTP) {
|
||||
minClientAveEMMTP = tempDouble;
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.apache.activemq.tool.sampler;
|
|||
import org.apache.activemq.tool.sampler.plugins.CpuSamplerPlugin;
|
||||
import org.apache.activemq.tool.sampler.plugins.LinuxCpuSamplerPlugin;
|
||||
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
|
||||
import org.apache.activemq.tool.reports.AbstractPerfReportWriter;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
@ -28,7 +29,7 @@ public class CpuSamplerTask extends AbstractPerformanceSampler {
|
|||
|
||||
public void sampleData() {
|
||||
if (plugin != null && perfReportWriter != null) {
|
||||
perfReportWriter.writeCsvData(ReportPlugin.REPORT_PLUGIN_CPU, "index=" + sampleIndex + "," + plugin.getCpuUtilizationStats());
|
||||
perfReportWriter.writeCsvData(AbstractPerfReportWriter.REPORT_PLUGIN_CPU, "index=" + sampleIndex + "," + plugin.getCpuUtilizationStats());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.apache.activemq.tool.sampler;
|
||||
|
||||
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
|
||||
import org.apache.activemq.tool.reports.AbstractPerfReportWriter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
@ -21,7 +22,7 @@ public class ThroughputSamplerTask extends AbstractPerformanceSampler {
|
|||
for (Iterator i = clients.iterator(); i.hasNext();) {
|
||||
MeasurableClient client = (MeasurableClient) i.next();
|
||||
if (perfReportWriter != null) {
|
||||
perfReportWriter.writeCsvData(ReportPlugin.REPORT_PLUGIN_THROUGHPUT,
|
||||
perfReportWriter.writeCsvData(AbstractPerfReportWriter.REPORT_PLUGIN_THROUGHPUT,
|
||||
"index=" + sampleIndex + ",clientName=" + client.getClientName() +
|
||||
",throughput=" + client.getThroughput());
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ public class ActiveMQPojoSPI implements SPIConnectionFactory {
|
|||
|
||||
setting = settings.getProperty(KEY_ASYNC_DISPATCH);
|
||||
if (setting != null && setting.length() > 0) {
|
||||
factory.setAsyncDispatch(Boolean.getBoolean(setting));
|
||||
factory.setDispatchAsync(Boolean.getBoolean(setting));
|
||||
}
|
||||
|
||||
setting = settings.getProperty(KEY_ASYNC_SESSION);
|
||||
|
|
Loading…
Reference in New Issue