You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1232 lines
48 KiB
1232 lines
48 KiB
<?xml version="1.0"?>
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
|
<xsl:output method='html' indent='yes' standalone='yes' encoding="utf-16"/>
|
|
<xsl:template match="/">
|
|
<html>
|
|
<style>
|
|
body
|
|
{
|
|
font-family: Verdana,Arial;
|
|
color: black;
|
|
margin-left: 2%;
|
|
margin-right: 2%;
|
|
background: white;
|
|
}
|
|
.sd
|
|
{
|
|
font-size: 60%;
|
|
}
|
|
.title
|
|
{
|
|
font-size: 110%;
|
|
font-weight: bolder;
|
|
}
|
|
.sub_title
|
|
{
|
|
font-size: 105%;
|
|
font-weight: bolder;
|
|
}
|
|
.nh
|
|
{
|
|
text-align: right;
|
|
}
|
|
.nf
|
|
{
|
|
text-align: right;
|
|
}
|
|
.sh
|
|
{
|
|
text-align: left;
|
|
}
|
|
.sf
|
|
{
|
|
text-align: left;
|
|
}
|
|
.smh
|
|
{
|
|
text-align: left;
|
|
font-size: 80%;
|
|
width: 50%;
|
|
}
|
|
.smh2
|
|
{
|
|
font-size: 80%;
|
|
}
|
|
.smf
|
|
{
|
|
text-align: left;
|
|
background: lightgrey;
|
|
}
|
|
.smf2
|
|
{
|
|
background: lightgrey;
|
|
}
|
|
td
|
|
{
|
|
font-size: 80%;
|
|
}
|
|
th
|
|
{
|
|
font-size: 70%;
|
|
}
|
|
hr
|
|
{
|
|
border:1px solid black;
|
|
}
|
|
a:link
|
|
{
|
|
color: black;
|
|
text-decoration: underline;
|
|
}
|
|
a:visited
|
|
{
|
|
color: black;
|
|
text-decoration: underline;
|
|
}
|
|
</style>
|
|
<body>
|
|
|
|
<xsl:for-each select="report/header">
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr><td class='title'>Windows Event Trace Session Report<hr/></td></tr>
|
|
<tr><td>
|
|
<table cellpadding='0'>
|
|
<xsl:if test="string-length(build) > 0">
|
|
<tr>
|
|
<td class='sd'><b>Window Build:</b></td>
|
|
<td class='sd'><xsl:value-of select="build"/></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="string-length(computer_name) > 0">
|
|
<tr>
|
|
<td class='sd'><b>Computer:</b></td>
|
|
<td class='sd'><xsl:value-of select="computer_name"/></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="string-length(processors) > 0">
|
|
<tr>
|
|
<td class='sd'><b>Processors:</b></td>
|
|
<td class='sd'><xsl:value-of select="processors"/></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="string-length(cpu_speed) > 0">
|
|
<tr>
|
|
<td class='sd'><b>CPU Speed:</b></td>
|
|
<td class='sd'><xsl:value-of select="cpu_speed"/><xsl:value-of select="' '"/><xsl:value-of select="cpu_speed/@units"/></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="string-length(memory) > 0">
|
|
<tr>
|
|
<td class='sd'><b>Memory:</b></td>
|
|
<td class='sd'><xsl:value-of select="memory"/><xsl:value-of select="' '"/><xsl:value-of select="memory/@units"/></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:for-each select="trace">
|
|
<tr>
|
|
<td class='sd' height='6'/>
|
|
</tr>
|
|
<tr>
|
|
<td class='sd'><b>Trace Name:</b></td>
|
|
<td class='sd'><xsl:value-of select="@name"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td class='sd'><b>File:</b></td>
|
|
<td class='sd'><xsl:value-of select="file"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td class='sd'><b>Start Time:</b></td>
|
|
<td class='sd'><xsl:value-of select="start"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td class='sd'><b>End Time:</b></td>
|
|
<td class='sd'><xsl:value-of select="end"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
</xsl:for-each>
|
|
<br/>
|
|
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Summary<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
|
|
<xsl:for-each select="report/table[@title='Image Statistics']">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#image_stats'>Total CPU%</a></th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="format-number(sum(image[@name != 'Idle']/cpu),'0.00')"/></td>
|
|
</tr>
|
|
</table>
|
|
</td><td>
|
|
<xsl:for-each select="image[@name != 'Idle']">
|
|
<xsl:sort select="cpu" data-type="number" order="descending"/>
|
|
<xsl:if test="position() = 1">
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#image_stats'>Top Process</a></th>
|
|
<th class='smh'>CPU%</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@name"/></td>
|
|
<td class='smf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</table>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</td></tr></table>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Http Requests Response Time Statistics']/summary[@type='totals']">
|
|
<xsl:if test="position() = 1">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr><th class='smh'><a href='#http_response'>HTTP Requests/sec</a></th></tr>
|
|
<tr><td class='smf'><xsl:value-of select="rate"/></td></tr>
|
|
</table>
|
|
</td><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr><th class='smh'><a href='#http_response'>Response Time(ms)</a></th></tr>
|
|
<tr><td class='smf'><xsl:value-of select="format-number(response_time, '0.00')"/></td></tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Http Requests Response Time Statistics']">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh2' align='left'><a href='#http_response'>HTTP Requests</a></th>
|
|
<th class='smh2' align='right'>Requests/sec</th>
|
|
<th class='smh2' align='right'>Response Time(ms)</th>
|
|
</tr><tr>
|
|
<td class='smf2'>Cached</td>
|
|
<td class='smf2' align='right'><xsl:value-of select="summary[@cached='true']/rate"/></td>
|
|
<td class='smf2' align='right'><xsl:value-of select="format-number(summary[@cached='true']/response_time, '0.00')"/></td>
|
|
</tr><tr>
|
|
<td class='smf2'>Non Cached</td>
|
|
<td class='smf2' align='right'><xsl:value-of select="summary[@cached='false']/rate"/></td>
|
|
<td class='smf2' align='right'><xsl:value-of select="format-number(summary[@cached='false']/response_time, '0.00')"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:for-each>
|
|
|
|
<xsl:if test="count(report/table[@title='Sites with the Most CPU Time Usage']/site) > 1">
|
|
<xsl:for-each select="report/table[@title='Sites with the Most CPU Time Usage']/site[1]">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#site'>Top Site by CPU%</a></th>
|
|
<th class='smh'>CPU%</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@id"/></td>
|
|
<td class='smf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:for-each>
|
|
</xsl:if>
|
|
|
|
<xsl:for-each select="report/table[@title='Slowest URLs']/url[1]">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#slowest_url'>Slowest URL</a></th>
|
|
<th class='smh'>Response Time(ms)</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@name"/></td>
|
|
<td class='smf'><xsl:value-of select="response_time"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='URLs with the Most CPU Usage']/url[1]">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#cpu_url'>Top URL by CPU%</a></th>
|
|
<th class='smh'>CPU%</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@name"/></td>
|
|
<td class='smf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Transaction Statistics']/transaction">
|
|
<xsl:sort select="count" data-type="number" order="descending"/>
|
|
<xsl:if test="position() = 1">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#trans_stats'>Top Transaction by Rate</a></th>
|
|
<th class='smh'>Transactions/sec</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@name"/></td>
|
|
<td class='smf'><xsl:value-of select="rate"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Transaction CPU Utilization']/transaction">
|
|
<xsl:sort select="cpu" data-type="number" order="descending"/>
|
|
<xsl:sort select="rate" data-type="number" order="descending"/>
|
|
<xsl:if test="position() = 1">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#trans_cpu'>Top Transaction by CPU%</a></th>
|
|
<th class='smh'>CPU%</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@name"/></td>
|
|
<td class='smf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Clients with the Most Requests']/client[1]">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#top_client'>Top Client by Request Rate</a></th>
|
|
<th class='smh'>Requests/sec</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@ip"/></td>
|
|
<td class='smf'><xsl:value-of select="rate"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Disk Totals']/disk">
|
|
<xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
|
|
<xsl:if test="position() = 1">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#disk'>Top Disk by IO Rate</a></th>
|
|
<th class='smh'>IO/sec</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="@number"/></td>
|
|
<td class='smf'><xsl:value-of select="read_rate + write_rate"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Files Causing Most Disk IOs']/file">
|
|
<xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
|
|
<xsl:if test="position() = 1">
|
|
<table width='100%'><tr><td>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='smh'><a href='#top_file'>Top File by IO Rate</a></th>
|
|
<th class='smh'>IO/sec</th>
|
|
</tr><tr>
|
|
<td class='smf'><xsl:value-of select="drive"/><xsl:value-of select="@name"/></td>
|
|
<td class='smf'><xsl:value-of select="read_rate + write_rate"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
</td></tr>
|
|
</table>
|
|
<br/>
|
|
|
|
<xsl:for-each select="report/table[@title='Transaction Statistics']">
|
|
<a name='trans_stats'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Transaction Statistics<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th rowspan='2' class='sh'>Transaction Name</th>
|
|
<th rowspan='2' class='nh'>Transactions</th>
|
|
<th rowspan='2' class='nh'>Response Time(ms)</th>
|
|
<th rowspan='2' class='nh'>Transactions/sec</th>
|
|
<th rowspan='2' class='nh'>CPU%</th>
|
|
<th class='nh' colspan='2'>IO/Transaction</th>
|
|
</tr>
|
|
<tr>
|
|
<th class='nh'>Reads</th>
|
|
<th class='nh'>Writes</th>
|
|
</tr>
|
|
<xsl:for-each select="transaction">
|
|
<xsl:sort select="count" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='nf'><xsl:value-of select="count"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
<td class='nf'><xsl:value-of select="disk_read_per_trans"/></td>
|
|
<td class='nf'><xsl:value-of select="disk_write_per_trans"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Transaction CPU Utilization']">
|
|
<a name='trans_cpu'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Transaction CPU Utilization<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th rowspan='2' class='sh'>Transaction Name</th>
|
|
<th rowspan='2' class='nh'>Transactions/sec</th>
|
|
<th colspan='2'>Maximum CPU(ms)</th>
|
|
<th colspan='2'>Per Transaction(ms)</th>
|
|
<th colspan='2'>Total(ms)</th>
|
|
<th rowspan='2' class='nh'>CPU%</th>
|
|
</tr>
|
|
<tr>
|
|
<th class='nh'>Kernel</th>
|
|
<th class='nh'>User</th>
|
|
<th class='nh'>Kernel</th>
|
|
<th class='nh'>User</th>
|
|
<th class='nh'>Kernel</th>
|
|
<th class='nh'>User</th>
|
|
</tr>
|
|
<xsl:for-each select="transaction">
|
|
<xsl:sort select="cpu" data-type="number" order="descending"/>
|
|
<xsl:sort select="rate" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td><xsl:value-of select="@name"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="max_kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="max_user"/></td>
|
|
<td class='nf'><xsl:value-of select="per_trans_kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="per_trans_user"/></td>
|
|
<td class='nf'><xsl:value-of select="total_kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="total_user"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Transaction Instance (Job) Statistics']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Transaction Instance (Job) Statistics<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Job Id</th>
|
|
<th class='nh'>Start Time</th>
|
|
<th class='nh'>Dequeue Time</th>
|
|
<th class='nh'>End Time</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
<th class='nh'>CPU Time(ms)</th>
|
|
</tr>
|
|
<xsl:for-each select="job">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@id"/></td>
|
|
<td class='nf'><xsl:value-of select="start"/></td>
|
|
<td class='nf'><xsl:value-of select="dequeue"/></td>
|
|
<td class='nf'><xsl:value-of select="end"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
<tr>
|
|
<td class='nf'><hr/>Total Jobs: <xsl:value-of select="count(job)"/></td>
|
|
<td colspan='3'/>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number( sum(job/response_time) div count(job), '#' )"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(job/cpu)"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Spooler Transaction Instance (Job) Data']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Spooler Transaction Instance (Job) Data<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Job Id</th>
|
|
<th class='nh'>Type</th>
|
|
<th class='nh'>Job Size(Kb)</th>
|
|
<th class='nh'>Pages</th>
|
|
<th class='nh'>PPS</th>
|
|
<th class='nh'>Files</th>
|
|
<th class='nh'>GDI Size</th>
|
|
<th class='nh'>Color</th>
|
|
<th class='nh'>XRes</th>
|
|
<th class='nh'>YRes</th>
|
|
<th class='nh'>Qlty</th>
|
|
<th class='nh'>Copy</th>
|
|
<th class='nh'>TTOpt</th>
|
|
<th class='nh'>Threads</th>
|
|
</tr>
|
|
<xsl:for-each select="job">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@id"/></td>
|
|
<td class='nf'><xsl:value-of select="type"/></td>
|
|
<td class='nf'><xsl:value-of select="size"/></td>
|
|
<td class='nf'><xsl:value-of select="pages"/></td>
|
|
<td class='nf'><xsl:value-of select="PPS"/></td>
|
|
<td class='nf'><xsl:value-of select="files"/></td>
|
|
<td class='nf'><xsl:value-of select="gdisize"/></td>
|
|
<td class='nf'><xsl:value-of select="color"/></td>
|
|
<td class='nf'><xsl:value-of select="xres"/></td>
|
|
<td class='nf'><xsl:value-of select="yres"/></td>
|
|
<td class='nf'><xsl:value-of select="qlty"/></td>
|
|
<td class='nf'><xsl:value-of select="copies"/></td>
|
|
<td class='nf'><xsl:value-of select="ttopt"/></td>
|
|
<td class='nf'><xsl:value-of select="threads"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Exclusive Transactions Per Process']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Exclusive Transactions Per Process<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th colspan='4'/>
|
|
<th colspan='2'>Exclusive/Transaction CPU(ms)</th>
|
|
<th colspan='2'/>
|
|
</tr>
|
|
<tr>
|
|
<th class='sh'>Name</th>
|
|
<th class='sh'>Process ID</th>
|
|
<th class='nh'>Transactions</th>
|
|
<th class='nh'>Transactions/sec</th>
|
|
<th class='nh'>Kernel</th>
|
|
<th class='nh'>User</th>
|
|
<th class='nh'>Process CPU%</th>
|
|
<th class='nh'>CPU%</th>
|
|
</tr>
|
|
<xsl:for-each select="process">
|
|
<tr>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="pid"/></td>
|
|
</tr>
|
|
<xsl:for-each select="transaction">
|
|
<xsl:sort select="cpu" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf' colspan='2'><xsl:value-of select="'      '"/><xsl:value-of select="@name"/></td>
|
|
<td class='nf'><xsl:value-of select="count"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="user"/></td>
|
|
<td class='nf'><xsl:value-of select="process_cpu"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
<tr>
|
|
<td colspan='6'/>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(sum(transaction/process_cpu), '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(sum(transaction/cpu), '0.0' )"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Inclusive Transactions Per Process']">
|
|
<xsl:variable name='indent'><xsl:value-of select="'                '"/></xsl:variable>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Inclusive Transactions Per Process<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th colspan='3'/>
|
|
<th colspan='2'>Inclusive(ms)</th>
|
|
</tr>
|
|
<tr>
|
|
<th class='sh'>Name</th>
|
|
<th class='sh'>Process ID</th>
|
|
<th class='nh'>Transactions</th>
|
|
<th class='nh'>Kernel</th>
|
|
<th class='nh'>User</th>
|
|
</tr>
|
|
<xsl:for-each select="process">
|
|
<tr>
|
|
<td class='sh'><xsl:value-of select="@name"/></td>
|
|
<td class='sh'><xsl:value-of select="pid"/></td>
|
|
<td colspan='4'/>
|
|
</tr>
|
|
<xsl:for-each select=".//transaction">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf' colspan='2'><xsl:value-of select="'    '"/><xsl:value-of select="substring($indent, string-length($indent) - (@level * 8) )"/><xsl:value-of select="@name"/></td>
|
|
<td class='nf'><xsl:value-of select="count"/></td>
|
|
<td class='nf'><xsl:value-of select="kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="user"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Http Requests Response Time Statistics']">
|
|
<a name='http_response'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>HTTP Response Time Statistics<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Request Type</th>
|
|
<th class='nh'>Requests/sec</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
<th class='nh'>IIS%</th>
|
|
<th class='nh'>Filter%</th>
|
|
<th class='nh'>ISAPI%</th>
|
|
<th class='nh'>ASP%</th>
|
|
<th class='nh'>CGI%</th>
|
|
</tr>
|
|
<xsl:for-each select="requests">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td><xsl:value-of select="@type"/><xsl:if test="@cached='true'"> (cached)</xsl:if></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(response_time, '0.00')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='UL'] + component[@name='W3'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='W3Fltr'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='ISAPI'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='ASP'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='CGI'], '0.0')"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
<tr>
|
|
<td/>
|
|
<td class='nf'><hr/><xsl:value-of select="summary[@type='totals']/rate"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/response_time, '0.00')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='UL'] + summary[@type='totals']/component[@name='W3'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='W3Fltr'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ISAPI'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ASP'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='CGI'], '0.0')"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Http Requests CPU Time Usage Statistics']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>HTTP Requests CPU Usage Statistics<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Request Type</th>
|
|
<th class='nh'>Requests/sec</th>
|
|
<th class='nh'>CPU%</th>
|
|
<th class='nh'>IIS%</th>
|
|
<th class='nh'>Filter%</th>
|
|
<th class='nh'>ISAPI%</th>
|
|
<th class='nh'>ASP%</th>
|
|
<th class='nh'>CGI%</th>
|
|
</tr>
|
|
<xsl:for-each select="requests">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@type"/><xsl:if test="@cached='true'"> (cached)</xsl:if></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='UL'] + component[@name='W3'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='W3Fltr'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='ISAPI'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='ASP'], '0.0')"/></td>
|
|
<td class='nf'><xsl:value-of select="format-number(component[@name='CGI'], '0.0')"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
<tr>
|
|
<td/>
|
|
<td class='nf'><hr/><xsl:value-of select="summary[@type='totals']/rate"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="summary[@type='totals']/cpu"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='UL'] + summary[@type='totals']/component[@name='W3'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='W3Fltr'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ISAPI'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ASP'], '0.0')"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='CGI'], '0.0')"/></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Most Requested URLs']">
|
|
<a name='top_url'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Most Requested URLs<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>URL</th>
|
|
<th class='sh'>Site</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
</tr>
|
|
<xsl:for-each select="url">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="site_id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hit"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Most Requested Static URLs']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Most Requested Static URLs<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>URL</th>
|
|
<th class='sh'>Site</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
</tr>
|
|
<xsl:for-each select="url">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="site_id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hit"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Slowest URLs']">
|
|
<a name='slowest_url'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Slowest URLs<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>URL</th>
|
|
<th class='sh'>Site</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
</tr>
|
|
<xsl:for-each select="url">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="site_id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hit"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='URLs with the Most CPU Usage']">
|
|
<a name='cpu_url'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>URLs with the Most CPU Usage<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>URL</th>
|
|
<th class='sh'>Site</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>CPU%</th>
|
|
</tr>
|
|
<xsl:for-each select="url">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="site_id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/>%</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='URLs with the Most Bytes Sent']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>URLs with the Most Bytes Sent<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>URL</th>
|
|
<th class='sh'>Site</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Bytes Sent/sec</th>
|
|
</tr>
|
|
<xsl:for-each select="url">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="site_id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hit"/></td>
|
|
<td class='nf'><xsl:value-of select="bytes_sent_per_sec"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Clients with the Most Requests']">
|
|
<a name='top_client'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Clients with the Most Requests<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>IP Address</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
</tr>
|
|
<xsl:for-each select="client">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@ip"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hit"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr></table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Clients with the Slowest Responses']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Clients with the Slowest Responses<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>IP Address</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
</tr>
|
|
<xsl:for-each select="client">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@ip"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hit"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Sites with the Most CPU Time Usage']">
|
|
<xsl:if test="count(site) > 1">
|
|
<a name='site'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Sites with the Most CPU Time Usage<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Site ID</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
<th class='nh'>CPU Time(ms)</th>
|
|
<th class='nh'>CPU%</th>
|
|
</tr>
|
|
<xsl:for-each select="site">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hits"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu_time"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
|
|
<xsl:for-each select="report/table[@title='Sites with the Most Requests']">
|
|
<xsl:if test="count(site) > 1">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Sites with the Most Requests<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Site ID</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Static Files%</th>
|
|
<th class='nh'>CGI%</th>
|
|
<th class='nh'>ASP%</th>
|
|
</tr>
|
|
<xsl:for-each select="site">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hits"/></td>
|
|
<td class='nf'><xsl:value-of select="static"/></td>
|
|
<td class='nf'><xsl:value-of select="cgi"/></td>
|
|
<td class='nf'><xsl:value-of select="asp"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr></table>
|
|
<br/><br/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Sites with the Slowest Responses']">
|
|
<xsl:if test="count(site) > 1">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Sites with the Slowest Responses<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Site ID</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Response Time(ms)</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Static Files%</th>
|
|
<th class='nh'>CGI%</th>
|
|
<th class='nh'>ASP%</th>
|
|
</tr>
|
|
<xsl:for-each select="site">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="response_time"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hits"/></td>
|
|
<td class='nf'><xsl:value-of select="static"/></td>
|
|
<td class='nf'><xsl:value-of select="cgi"/></td>
|
|
<td class='nf'><xsl:value-of select="asp"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Sites with the Most Bytes Sent']">
|
|
<xsl:if test="count(site) > 1">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Sites with the Most Bytes Sent<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Site ID</th>
|
|
<th class='nh'>Rate/sec</th>
|
|
<th class='nh'>Bytes Sent/sec</th>
|
|
<th class='nh'>Cached%</th>
|
|
<th class='nh'>Static Files%</th>
|
|
<th class='nh'>CGI%</th>
|
|
<th class='nh'>ASP%</th>
|
|
</tr>
|
|
<xsl:for-each select="site">
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@id"/></td>
|
|
<td class='nf'><xsl:value-of select="rate"/></td>
|
|
<td class='nf'><xsl:value-of select="bytes"/></td>
|
|
<td class='nf'><xsl:value-of select="cache_hits"/></td>
|
|
<td class='nf'><xsl:value-of select="static"/></td>
|
|
<td class='nf'><xsl:value-of select="cgi"/></td>
|
|
<td class='nf'><xsl:value-of select="asp"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Image Statistics']">
|
|
<a name='image_stats'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Image Statistics<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th colspan='2'/>
|
|
<th colspan='2'>Threads</th>
|
|
<th colspan='2'>Process</th>
|
|
<th colspan='2'>Transaction</th>
|
|
<th></th>
|
|
</tr>
|
|
<tr>
|
|
<th class='sh'>Image</th>
|
|
<th class='sh'>Process ID</th>
|
|
<th class='nh'>Launched</th>
|
|
<th class='nh'>Used</th>
|
|
<th class='nh'>Kernel Time(ms)</th>
|
|
<th class='nh'>User Time(ms)</th>
|
|
<th class='nh'>Kernel Time(ms)</th>
|
|
<th class='nh'>User Time(ms)</th>
|
|
<th class='nh'>CPU%</th>
|
|
</tr>
|
|
<xsl:for-each select="image">
|
|
<xsl:sort select="cpu" data-type="number" order="descending"/>
|
|
<xsl:sort select="@name" data-type="number" order="ascending"/>
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="pid"/></td>
|
|
<td class='nf'><xsl:value-of select="threads"/></td>
|
|
<td class='nf'><xsl:value-of select="used_threads"/></td>
|
|
<td class='nf'><xsl:value-of select="process_kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="process_user"/></td>
|
|
<td class='nf'><xsl:value-of select="transaction_kernel"/></td>
|
|
<td class='nf'><xsl:value-of select="transaction_user"/></td>
|
|
<td class='nf'><xsl:value-of select="cpu"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
<td colspan='2'/>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(image/threads)"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(image/used_threads)"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(image/process_kernel)"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(image/process_user)"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(image/transaction_kernel)"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="sum(image/transaction_user)"/></td>
|
|
<td class='nf'><hr/><xsl:value-of select="format-number(sum(image/cpu), '#.00')"/></td>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Disk Totals']">
|
|
<a name='disk'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Disk Totals<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Disk Name</th>
|
|
<th class='nh'>Reads/sec</th>
|
|
<th class='nh'>Kb/Read</th>
|
|
<th class='nh'>Writes/sec</th>
|
|
<th class='nh'>Kb/Write</th>
|
|
</tr>
|
|
<xsl:for-each select="disk">
|
|
<xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@number"/></td>
|
|
<td class='nf'><xsl:value-of select="read_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="read_size"/></td>
|
|
<td class='nf'><xsl:value-of select="write_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="write_size"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Disk']">
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Disk <xsl:value-of select="@number"/><hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>Image Name</th>
|
|
<th class='sh'>Process ID</th>
|
|
<th class='sh'>Authority</th>
|
|
<th class='nh'>Reads/sec</th>
|
|
<th class='nh'>Kb/Read</th>
|
|
<th class='nh'>Writes/sec</th>
|
|
<th class='nh'>Kb/Write</th>
|
|
</tr>
|
|
<xsl:for-each select="image">
|
|
<xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:if test="position() mod 2 = 1">
|
|
<xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
|
|
</xsl:if>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="pid"/></td>
|
|
<td class='sf' width='230'><xsl:value-of select="authority"/></td>
|
|
<td class='nf'><xsl:value-of select="read_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="read_size"/></td>
|
|
<td class='nf'><xsl:value-of select="write_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="write_size"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<br/><br/>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="report/table[@title='Files Causing Most Disk IOs']">
|
|
<a name='top_file'/>
|
|
<table style="border:1px solid black" width='100%'>
|
|
<tr><td class='sub_title'>Files Causing Most Disk IOs<hr/></td></tr>
|
|
<tr><td valign='top'>
|
|
<table width='100%' style="border:1px solid black">
|
|
<tr>
|
|
<th class='sh'>File</th>
|
|
<th colspan='2'/>
|
|
<th class='sh'>Disk</th>
|
|
<th class='nh'>Reads/sec</th>
|
|
<th class='nh'>Read size(Kb)</th>
|
|
<th class='nh'>Writes/sec</th>
|
|
<th class='nh'>Write size(Kb)</th>
|
|
</tr>
|
|
<xsl:for-each select="file">
|
|
<xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:variable name='bg'>
|
|
<xsl:if test="position() mod 2 = 0">#F5F5F5</xsl:if>
|
|
<xsl:if test="position() mod 2 = 1">lightgrey</xsl:if>
|
|
</xsl:variable>
|
|
<xsl:attribute name="bgcolor"><xsl:value-of select="$bg"/></xsl:attribute>
|
|
<td class='sh' colspan='3'><xsl:value-of select="drive"/><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="disk"/></td>
|
|
<td class='nf'><xsl:value-of select="read_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="read_size"/></td>
|
|
<td class='nf'><xsl:value-of select="write_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="write_size"/></td>
|
|
</tr>
|
|
<xsl:for-each select="image">
|
|
<xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
|
|
<tr>
|
|
<xsl:attribute name="bgcolor"><xsl:value-of select="$bg"/></xsl:attribute>
|
|
<td/>
|
|
<td class='sf'><xsl:value-of select="@name"/></td>
|
|
<td class='sf'><xsl:value-of select="pid"/></td>
|
|
<td/>
|
|
<td class='nf'><xsl:value-of select="read_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="read_size"/></td>
|
|
<td class='nf'><xsl:value-of select="write_rate"/></td>
|
|
<td class='nf'><xsl:value-of select="write_size"/></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
</xsl:for-each>
|
|
|
|
</body>
|
|
</html>
|
|
</xsl:template>
|
|
</xsl:stylesheet>
|