in uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java [1974:2161]
private void handleServletClassicSystemMachines(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException
{
String methodName = "handleServletClassicSystemMachines";
duccLogger.trace(methodName, jobid, messages.fetch("enter"));
StringBuffer data = new StringBuffer();
if(dh.is_ducc_head_backup()) {
data.append("<tr>");
data.append("<td>");
data.append(messages.fetch("no data - not master"));
data.append("</td>");
data.append("</tr>");
}
else {
int counter = 0;
long sumMemTotal = 0; // Memory(GB):reported by Agent
long sumMemFree = 0; // Memory(GB):free
long sumMemReserve = 0; // Memory(GB):usable
long sumMemAllocated = 0;
double sumCPU = 0;
long sumMachines = 0;
long sumSwapInuse = 0;
long sumSwapFree = 0;
long sumAliens = 0;
String hover;
StringBuffer row;
StringBuffer individualMachines = new StringBuffer();
DuccMachinesData instance = DuccMachinesData.getInstance();
Map<MachineInfo, NodeId> machines = instance.getMachines();
if(!machines.isEmpty()) {
Map<String, Long> allocatedMap = Distiller.getMap();
for(Entry<MachineInfo, NodeId> entry : machines.entrySet()) {
MachineInfo machineInfo = entry.getKey();
SizeBytes sb = new SizeBytes(Type.Bytes, 0);
if(DuccMachinesDataHelper.isUp(machineInfo)) {
try {
sumMemTotal += ConvertSafely.String2Long(machineInfo.getMemTotal());
// Calculate total for Memory(GB):usable
sumMemReserve += ConvertSafely.String2Long(machineInfo.getMemReserve());
sumSwapInuse += ConvertSafely.String2Long(machineInfo.getSwapInuse());
sumSwapFree += ConvertSafely.String2Long(machineInfo.getSwapFree());
sumCPU += machineInfo.getCpu();
sumMachines += 1;
sumAliens += machineInfo.getAlienPidsCount();
String machineName = machineInfo.getName();
long bytes = allocatedMap.get(machineName);
sumMemAllocated += bytes;
sb = new SizeBytes(Type.Bytes, bytes);
String text = "allocated "+machineName+"="+sb.getGBytes();
duccLogger.trace(methodName, jobid, text);
}
catch(Exception e) {
duccLogger.trace(methodName, jobid, e);
}
}
buildRowForIndividualMachine(individualMachines, counter, machineInfo, sb);
counter++;
}
SizeBytes sbAllocated = new SizeBytes(Type.Bytes, sumMemAllocated);
sumMemFree = sumMemReserve - sbAllocated.getGBytes();
//
row = new StringBuffer();
row.append("<tr>");
// Status
row.append("<td>");
row.append(""+"Total");
row.append("</td>");
// Online
row.append("<td>");
row.append("");
row.append("</td>");
// Quiesced
row.append("<td>");
row.append("");
row.append("</td>");
// IP
row.append("<td>");
row.append("");
row.append("</td>");
// Name
row.append("<td>");
row.append("");
row.append("</td>");
// Nodepool
row.append("<td>");
row.append("");
row.append("</td>");
// Memory: usable
hover = "title=\"total="+sumMemTotal+"\"";
row.append("<td align=\"right\" "+hover+">");
row.append(""+sumMemReserve);
row.append("</td>");
// Memory: free
row.append("<td align=\"right\">");
row.append(""+sumMemFree);
row.append("</td>");
// CPU: load average
row.append("<td align=\"right\">");
String cpuTotal = formatter1.format(sumCPU/sumMachines);
row.append(""+cpuTotal);
row.append("</td>");
// Swap: inuse
row.append("<td align=\"right\">");
row.append(""+sumSwapInuse);
row.append("</td>");
// Swap: free
row.append("<td align=\"right\">");
row.append(""+sumSwapFree);
row.append("</td>");
// C-Groups
row.append("<td align=\"right\">");
row.append("");
row.append("</td>");
// Alien PIDs
row.append("<td align=\"right\">");
row.append(""+sumAliens);
row.append("</td>");
// Heartbeat: last
row.append("<td align=\"right\">");
row.append("");
row.append("</td>");
row.append("</tr>");
//
data.append(row);
data.append(individualMachines);
}
else {
row = new StringBuffer();
row.append((trGet(counter)));
// Release
row.append("<td>");
row.append("");
row.append("</td>");
// Status
row.append("<td>");
row.append("");
row.append("</td>");
// Online
row.append("<td>");
row.append("");
row.append("</td>");
// IP
row.append("<td>");
row.append("");
row.append("</td>");
// Name
row.append("<td>");
row.append("");
row.append("</td>");
// Reserve
row.append("<td>");
row.append("");
row.append("</td>");
// Memory: total
row.append("<td>");
row.append("");
row.append("</td>");
// Swap: inuse
row.append("<td>");
row.append("");
row.append("</td>");
// Alien PIDs
row.append("<td>");
row.append("");
row.append("</td>");
// Shares: total
row.append("<td>");
row.append("");
row.append("</td>");
// Shares:inuse
row.append("<td>");
row.append("");
row.append("</td>");
// Heartbeat: last
row.append("<td>");
row.append("");
row.append("</td>");
row.append("</tr>");
//
data.append(row);
}
}
duccLogger.debug(methodName, jobid, data);
response.getWriter().println(data);
duccLogger.trace(methodName, jobid, messages.fetch("exit"));
}