Leaked source code of windows server 2003
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

  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <xsl:output method='html' indent='yes' standalone='yes' encoding="utf-16"/>
  4. <xsl:template match="/">
  5. <html>
  6. <style>
  7. body
  8. {
  9. font-family: Verdana,Arial;
  10. color: black;
  11. margin-left: 2%;
  12. margin-right: 2%;
  13. background: white;
  14. }
  15. .sd
  16. {
  17. font-size: 60%;
  18. }
  19. .title
  20. {
  21. font-size: 110%;
  22. font-weight: bolder;
  23. }
  24. .sub_title
  25. {
  26. font-size: 105%;
  27. font-weight: bolder;
  28. }
  29. .nh
  30. {
  31. text-align: right;
  32. }
  33. .nf
  34. {
  35. text-align: right;
  36. }
  37. .sh
  38. {
  39. text-align: left;
  40. }
  41. .sf
  42. {
  43. text-align: left;
  44. }
  45. .smh
  46. {
  47. text-align: left;
  48. font-size: 80%;
  49. width: 50%;
  50. }
  51. .smh2
  52. {
  53. font-size: 80%;
  54. }
  55. .smf
  56. {
  57. text-align: left;
  58. background: lightgrey;
  59. }
  60. .smf2
  61. {
  62. background: lightgrey;
  63. }
  64. td
  65. {
  66. font-size: 80%;
  67. }
  68. th
  69. {
  70. font-size: 70%;
  71. }
  72. hr
  73. {
  74. border:1px solid black;
  75. }
  76. a:link
  77. {
  78. color: black;
  79. text-decoration: underline;
  80. }
  81. a:visited
  82. {
  83. color: black;
  84. text-decoration: underline;
  85. }
  86. </style>
  87. <body>
  88. <xsl:for-each select="report/header">
  89. <table width='100%' style="border:1px solid black">
  90. <tr><td class='title'>Windows Event Trace Session Report<hr/></td></tr>
  91. <tr><td>
  92. <table cellpadding='0'>
  93. <xsl:if test="string-length(build) > 0">
  94. <tr>
  95. <td class='sd'><b>Window Build:</b></td>
  96. <td class='sd'><xsl:value-of select="build"/></td>
  97. </tr>
  98. </xsl:if>
  99. <xsl:if test="string-length(computer_name) > 0">
  100. <tr>
  101. <td class='sd'><b>Computer:</b></td>
  102. <td class='sd'><xsl:value-of select="computer_name"/></td>
  103. </tr>
  104. </xsl:if>
  105. <xsl:if test="string-length(processors) > 0">
  106. <tr>
  107. <td class='sd'><b>Processors:</b></td>
  108. <td class='sd'><xsl:value-of select="processors"/></td>
  109. </tr>
  110. </xsl:if>
  111. <xsl:if test="string-length(cpu_speed) > 0">
  112. <tr>
  113. <td class='sd'><b>CPU Speed:</b></td>
  114. <td class='sd'><xsl:value-of select="cpu_speed"/><xsl:value-of select="'&#xA0;'"/><xsl:value-of select="cpu_speed/@units"/></td>
  115. </tr>
  116. </xsl:if>
  117. <xsl:if test="string-length(memory) > 0">
  118. <tr>
  119. <td class='sd'><b>Memory:</b></td>
  120. <td class='sd'><xsl:value-of select="memory"/><xsl:value-of select="'&#xA0;'"/><xsl:value-of select="memory/@units"/></td>
  121. </tr>
  122. </xsl:if>
  123. <xsl:for-each select="trace">
  124. <tr>
  125. <td class='sd' height='6'/>
  126. </tr>
  127. <tr>
  128. <td class='sd'><b>Trace Name:</b></td>
  129. <td class='sd'><xsl:value-of select="@name"/></td>
  130. </tr>
  131. <tr>
  132. <td class='sd'><b>File:</b></td>
  133. <td class='sd'><xsl:value-of select="file"/></td>
  134. </tr>
  135. <tr>
  136. <td class='sd'><b>Start Time:</b></td>
  137. <td class='sd'><xsl:value-of select="start"/></td>
  138. </tr>
  139. <tr>
  140. <td class='sd'><b>End Time:</b></td>
  141. <td class='sd'><xsl:value-of select="end"/></td>
  142. </tr>
  143. </xsl:for-each>
  144. </table>
  145. </td></tr>
  146. </table>
  147. </xsl:for-each>
  148. <br/>
  149. <table style="border:1px solid black" width='100%'>
  150. <tr><td class='sub_title'>Summary<hr/></td></tr>
  151. <tr><td valign='top'>
  152. <xsl:for-each select="report/table[@title='Image Statistics']">
  153. <table width='100%'><tr><td>
  154. <table width='100%' style="border:1px solid black">
  155. <tr>
  156. <th class='smh'><a href='#image_stats'>Total CPU%</a></th>
  157. </tr><tr>
  158. <td class='smf'><xsl:value-of select="format-number(sum(image[@name != 'Idle']/cpu),'0.00')"/></td>
  159. </tr>
  160. </table>
  161. </td><td>
  162. <xsl:for-each select="image[@name != 'Idle']">
  163. <xsl:sort select="cpu" data-type="number" order="descending"/>
  164. <xsl:if test="position() = 1">
  165. <table width='100%' style="border:1px solid black">
  166. <tr>
  167. <th class='smh'><a href='#image_stats'>Top Process</a></th>
  168. <th class='smh'>CPU%</th>
  169. </tr><tr>
  170. <td class='smf'><xsl:value-of select="@name"/></td>
  171. <td class='smf'><xsl:value-of select="cpu"/></td>
  172. </tr>
  173. </table>
  174. </xsl:if>
  175. </xsl:for-each>
  176. </td></tr></table>
  177. </xsl:for-each>
  178. <xsl:for-each select="report/table[@title='Http Requests Response Time Statistics']/summary[@type='totals']">
  179. <xsl:if test="position() = 1">
  180. <table width='100%'><tr><td>
  181. <table width='100%' style="border:1px solid black">
  182. <tr><th class='smh'><a href='#http_response'>HTTP Requests/sec</a></th></tr>
  183. <tr><td class='smf'><xsl:value-of select="rate"/></td></tr>
  184. </table>
  185. </td><td>
  186. <table width='100%' style="border:1px solid black">
  187. <tr><th class='smh'><a href='#http_response'>Response Time(ms)</a></th></tr>
  188. <tr><td class='smf'><xsl:value-of select="format-number(response_time, '0.00')"/></td></tr>
  189. </table>
  190. </td></tr></table>
  191. </xsl:if>
  192. </xsl:for-each>
  193. <xsl:for-each select="report/table[@title='Http Requests Response Time Statistics']">
  194. <table width='100%'><tr><td>
  195. <table width='100%' style="border:1px solid black">
  196. <tr>
  197. <th class='smh2' align='left'><a href='#http_response'>HTTP Requests</a></th>
  198. <th class='smh2' align='right'>Requests/sec</th>
  199. <th class='smh2' align='right'>Response Time(ms)</th>
  200. </tr><tr>
  201. <td class='smf2'>Cached</td>
  202. <td class='smf2' align='right'><xsl:value-of select="summary[@cached='true']/rate"/></td>
  203. <td class='smf2' align='right'><xsl:value-of select="format-number(summary[@cached='true']/response_time, '0.00')"/></td>
  204. </tr><tr>
  205. <td class='smf2'>Non Cached</td>
  206. <td class='smf2' align='right'><xsl:value-of select="summary[@cached='false']/rate"/></td>
  207. <td class='smf2' align='right'><xsl:value-of select="format-number(summary[@cached='false']/response_time, '0.00')"/></td>
  208. </tr>
  209. </table>
  210. </td></tr></table>
  211. </xsl:for-each>
  212. <xsl:if test="count(report/table[@title='Sites with the Most CPU Time Usage']/site) > 1">
  213. <xsl:for-each select="report/table[@title='Sites with the Most CPU Time Usage']/site[1]">
  214. <table width='100%'><tr><td>
  215. <table width='100%' style="border:1px solid black">
  216. <tr>
  217. <th class='smh'><a href='#site'>Top Site by CPU%</a></th>
  218. <th class='smh'>CPU%</th>
  219. </tr><tr>
  220. <td class='smf'><xsl:value-of select="@id"/></td>
  221. <td class='smf'><xsl:value-of select="cpu"/></td>
  222. </tr>
  223. </table>
  224. </td></tr></table>
  225. </xsl:for-each>
  226. </xsl:if>
  227. <xsl:for-each select="report/table[@title='Slowest URLs']/url[1]">
  228. <table width='100%'><tr><td>
  229. <table width='100%' style="border:1px solid black">
  230. <tr>
  231. <th class='smh'><a href='#slowest_url'>Slowest URL</a></th>
  232. <th class='smh'>Response Time(ms)</th>
  233. </tr><tr>
  234. <td class='smf'><xsl:value-of select="@name"/></td>
  235. <td class='smf'><xsl:value-of select="response_time"/></td>
  236. </tr>
  237. </table>
  238. </td></tr></table>
  239. </xsl:for-each>
  240. <xsl:for-each select="report/table[@title='URLs with the Most CPU Usage']/url[1]">
  241. <table width='100%'><tr><td>
  242. <table width='100%' style="border:1px solid black">
  243. <tr>
  244. <th class='smh'><a href='#cpu_url'>Top URL by CPU%</a></th>
  245. <th class='smh'>CPU%</th>
  246. </tr><tr>
  247. <td class='smf'><xsl:value-of select="@name"/></td>
  248. <td class='smf'><xsl:value-of select="cpu"/></td>
  249. </tr>
  250. </table>
  251. </td></tr></table>
  252. </xsl:for-each>
  253. <xsl:for-each select="report/table[@title='Transaction Statistics']/transaction">
  254. <xsl:sort select="count" data-type="number" order="descending"/>
  255. <xsl:if test="position() = 1">
  256. <table width='100%'><tr><td>
  257. <table width='100%' style="border:1px solid black">
  258. <tr>
  259. <th class='smh'><a href='#trans_stats'>Top Transaction by Rate</a></th>
  260. <th class='smh'>Transactions/sec</th>
  261. </tr><tr>
  262. <td class='smf'><xsl:value-of select="@name"/></td>
  263. <td class='smf'><xsl:value-of select="rate"/></td>
  264. </tr>
  265. </table>
  266. </td></tr></table>
  267. </xsl:if>
  268. </xsl:for-each>
  269. <xsl:for-each select="report/table[@title='Transaction CPU Utilization']/transaction">
  270. <xsl:sort select="cpu" data-type="number" order="descending"/>
  271. <xsl:sort select="rate" data-type="number" order="descending"/>
  272. <xsl:if test="position() = 1">
  273. <table width='100%'><tr><td>
  274. <table width='100%' style="border:1px solid black">
  275. <tr>
  276. <th class='smh'><a href='#trans_cpu'>Top Transaction by CPU%</a></th>
  277. <th class='smh'>CPU%</th>
  278. </tr><tr>
  279. <td class='smf'><xsl:value-of select="@name"/></td>
  280. <td class='smf'><xsl:value-of select="cpu"/></td>
  281. </tr>
  282. </table>
  283. </td></tr></table>
  284. </xsl:if>
  285. </xsl:for-each>
  286. <xsl:for-each select="report/table[@title='Clients with the Most Requests']/client[1]">
  287. <table width='100%'><tr><td>
  288. <table width='100%' style="border:1px solid black">
  289. <tr>
  290. <th class='smh'><a href='#top_client'>Top Client by Request Rate</a></th>
  291. <th class='smh'>Requests/sec</th>
  292. </tr><tr>
  293. <td class='smf'><xsl:value-of select="@ip"/></td>
  294. <td class='smf'><xsl:value-of select="rate"/></td>
  295. </tr>
  296. </table>
  297. </td></tr></table>
  298. </xsl:for-each>
  299. <xsl:for-each select="report/table[@title='Disk Totals']/disk">
  300. <xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
  301. <xsl:if test="position() = 1">
  302. <table width='100%'><tr><td>
  303. <table width='100%' style="border:1px solid black">
  304. <tr>
  305. <th class='smh'><a href='#disk'>Top Disk by IO Rate</a></th>
  306. <th class='smh'>IO/sec</th>
  307. </tr><tr>
  308. <td class='smf'><xsl:value-of select="@number"/></td>
  309. <td class='smf'><xsl:value-of select="read_rate + write_rate"/></td>
  310. </tr>
  311. </table>
  312. </td></tr></table>
  313. </xsl:if>
  314. </xsl:for-each>
  315. <xsl:for-each select="report/table[@title='Files Causing Most Disk IOs']/file">
  316. <xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
  317. <xsl:if test="position() = 1">
  318. <table width='100%'><tr><td>
  319. <table width='100%' style="border:1px solid black">
  320. <tr>
  321. <th class='smh'><a href='#top_file'>Top File by IO Rate</a></th>
  322. <th class='smh'>IO/sec</th>
  323. </tr><tr>
  324. <td class='smf'><xsl:value-of select="drive"/><xsl:value-of select="@name"/></td>
  325. <td class='smf'><xsl:value-of select="read_rate + write_rate"/></td>
  326. </tr>
  327. </table>
  328. </td></tr></table>
  329. </xsl:if>
  330. </xsl:for-each>
  331. </td></tr>
  332. </table>
  333. <br/>
  334. <xsl:for-each select="report/table[@title='Transaction Statistics']">
  335. <a name='trans_stats'/>
  336. <table style="border:1px solid black" width='100%'>
  337. <tr><td class='sub_title'>Transaction Statistics<hr/></td></tr>
  338. <tr><td valign='top'>
  339. <table width='100%' style="border:1px solid black">
  340. <tr>
  341. <th rowspan='2' class='sh'>Transaction Name</th>
  342. <th rowspan='2' class='nh'>Transactions</th>
  343. <th rowspan='2' class='nh'>Response Time(ms)</th>
  344. <th rowspan='2' class='nh'>Transactions/sec</th>
  345. <th rowspan='2' class='nh'>CPU%</th>
  346. <th class='nh' colspan='2'>IO/Transaction</th>
  347. </tr>
  348. <tr>
  349. <th class='nh'>Reads</th>
  350. <th class='nh'>Writes</th>
  351. </tr>
  352. <xsl:for-each select="transaction">
  353. <xsl:sort select="count" data-type="number" order="descending"/>
  354. <tr>
  355. <xsl:if test="position() mod 2 = 1">
  356. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  357. </xsl:if>
  358. <td class='sf'><xsl:value-of select="@name"/></td>
  359. <td class='nf'><xsl:value-of select="count"/></td>
  360. <td class='nf'><xsl:value-of select="response_time"/></td>
  361. <td class='nf'><xsl:value-of select="rate"/></td>
  362. <td class='nf'><xsl:value-of select="cpu"/></td>
  363. <td class='nf'><xsl:value-of select="disk_read_per_trans"/></td>
  364. <td class='nf'><xsl:value-of select="disk_write_per_trans"/></td>
  365. </tr>
  366. </xsl:for-each>
  367. </table>
  368. </td></tr>
  369. </table>
  370. <br/><br/>
  371. </xsl:for-each>
  372. <xsl:for-each select="report/table[@title='Transaction CPU Utilization']">
  373. <a name='trans_cpu'/>
  374. <table style="border:1px solid black" width='100%'>
  375. <tr><td class='sub_title'>Transaction CPU Utilization<hr/></td></tr>
  376. <tr><td valign='top'>
  377. <table width='100%' style="border:1px solid black">
  378. <tr>
  379. <th rowspan='2' class='sh'>Transaction Name</th>
  380. <th rowspan='2' class='nh'>Transactions/sec</th>
  381. <th colspan='2'>Maximum CPU(ms)</th>
  382. <th colspan='2'>Per Transaction(ms)</th>
  383. <th colspan='2'>Total(ms)</th>
  384. <th rowspan='2' class='nh'>CPU%</th>
  385. </tr>
  386. <tr>
  387. <th class='nh'>Kernel</th>
  388. <th class='nh'>User</th>
  389. <th class='nh'>Kernel</th>
  390. <th class='nh'>User</th>
  391. <th class='nh'>Kernel</th>
  392. <th class='nh'>User</th>
  393. </tr>
  394. <xsl:for-each select="transaction">
  395. <xsl:sort select="cpu" data-type="number" order="descending"/>
  396. <xsl:sort select="rate" data-type="number" order="descending"/>
  397. <tr>
  398. <xsl:if test="position() mod 2 = 1">
  399. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  400. </xsl:if>
  401. <td><xsl:value-of select="@name"/></td>
  402. <td class='nf'><xsl:value-of select="rate"/></td>
  403. <td class='nf'><xsl:value-of select="max_kernel"/></td>
  404. <td class='nf'><xsl:value-of select="max_user"/></td>
  405. <td class='nf'><xsl:value-of select="per_trans_kernel"/></td>
  406. <td class='nf'><xsl:value-of select="per_trans_user"/></td>
  407. <td class='nf'><xsl:value-of select="total_kernel"/></td>
  408. <td class='nf'><xsl:value-of select="total_user"/></td>
  409. <td class='nf'><xsl:value-of select="cpu"/></td>
  410. </tr>
  411. </xsl:for-each>
  412. </table>
  413. </td></tr>
  414. </table>
  415. <br/><br/>
  416. </xsl:for-each>
  417. <xsl:for-each select="report/table[@title='Transaction Instance (Job) Statistics']">
  418. <table style="border:1px solid black" width='100%'>
  419. <tr><td class='sub_title'>Transaction Instance (Job) Statistics<hr/></td></tr>
  420. <tr><td valign='top'>
  421. <table width='100%' style="border:1px solid black">
  422. <tr>
  423. <th class='sh'>Job Id</th>
  424. <th class='nh'>Start Time</th>
  425. <th class='nh'>Dequeue Time</th>
  426. <th class='nh'>End Time</th>
  427. <th class='nh'>Response Time(ms)</th>
  428. <th class='nh'>CPU Time(ms)</th>
  429. </tr>
  430. <xsl:for-each select="job">
  431. <tr>
  432. <xsl:if test="position() mod 2 = 1">
  433. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  434. </xsl:if>
  435. <td class='sf'><xsl:value-of select="@id"/></td>
  436. <td class='nf'><xsl:value-of select="start"/></td>
  437. <td class='nf'><xsl:value-of select="dequeue"/></td>
  438. <td class='nf'><xsl:value-of select="end"/></td>
  439. <td class='nf'><xsl:value-of select="response_time"/></td>
  440. <td class='nf'><xsl:value-of select="cpu"/></td>
  441. </tr>
  442. </xsl:for-each>
  443. <tr>
  444. <td class='nf'><hr/>Total Jobs: <xsl:value-of select="count(job)"/></td>
  445. <td colspan='3'/>
  446. <td class='nf'><hr/><xsl:value-of select="format-number( sum(job/response_time) div count(job), '#' )"/></td>
  447. <td class='nf'><hr/><xsl:value-of select="sum(job/cpu)"/></td>
  448. </tr>
  449. </table>
  450. </td></tr>
  451. </table>
  452. <br/><br/>
  453. </xsl:for-each>
  454. <xsl:for-each select="report/table[@title='Spooler Transaction Instance (Job) Data']">
  455. <table style="border:1px solid black" width='100%'>
  456. <tr><td class='sub_title'>Spooler Transaction Instance (Job) Data<hr/></td></tr>
  457. <tr><td valign='top'>
  458. <table width='100%' style="border:1px solid black">
  459. <tr>
  460. <th class='sh'>Job Id</th>
  461. <th class='nh'>Type</th>
  462. <th class='nh'>Job Size(Kb)</th>
  463. <th class='nh'>Pages</th>
  464. <th class='nh'>PPS</th>
  465. <th class='nh'>Files</th>
  466. <th class='nh'>GDI Size</th>
  467. <th class='nh'>Color</th>
  468. <th class='nh'>XRes</th>
  469. <th class='nh'>YRes</th>
  470. <th class='nh'>Qlty</th>
  471. <th class='nh'>Copy</th>
  472. <th class='nh'>TTOpt</th>
  473. <th class='nh'>Threads</th>
  474. </tr>
  475. <xsl:for-each select="job">
  476. <tr>
  477. <xsl:if test="position() mod 2 = 1">
  478. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  479. </xsl:if>
  480. <td class='sf'><xsl:value-of select="@id"/></td>
  481. <td class='nf'><xsl:value-of select="type"/></td>
  482. <td class='nf'><xsl:value-of select="size"/></td>
  483. <td class='nf'><xsl:value-of select="pages"/></td>
  484. <td class='nf'><xsl:value-of select="PPS"/></td>
  485. <td class='nf'><xsl:value-of select="files"/></td>
  486. <td class='nf'><xsl:value-of select="gdisize"/></td>
  487. <td class='nf'><xsl:value-of select="color"/></td>
  488. <td class='nf'><xsl:value-of select="xres"/></td>
  489. <td class='nf'><xsl:value-of select="yres"/></td>
  490. <td class='nf'><xsl:value-of select="qlty"/></td>
  491. <td class='nf'><xsl:value-of select="copies"/></td>
  492. <td class='nf'><xsl:value-of select="ttopt"/></td>
  493. <td class='nf'><xsl:value-of select="threads"/></td>
  494. </tr>
  495. </xsl:for-each>
  496. </table>
  497. </td></tr>
  498. </table>
  499. <br/><br/>
  500. </xsl:for-each>
  501. <xsl:for-each select="report/table[@title='Exclusive Transactions Per Process']">
  502. <table style="border:1px solid black" width='100%'>
  503. <tr><td class='sub_title'>Exclusive Transactions Per Process<hr/></td></tr>
  504. <tr><td valign='top'>
  505. <table width='100%' style="border:1px solid black">
  506. <tr>
  507. <th colspan='4'/>
  508. <th colspan='2'>Exclusive/Transaction CPU(ms)</th>
  509. <th colspan='2'/>
  510. </tr>
  511. <tr>
  512. <th class='sh'>Name</th>
  513. <th class='sh'>Process ID</th>
  514. <th class='nh'>Transactions</th>
  515. <th class='nh'>Transactions/sec</th>
  516. <th class='nh'>Kernel</th>
  517. <th class='nh'>User</th>
  518. <th class='nh'>Process CPU%</th>
  519. <th class='nh'>CPU%</th>
  520. </tr>
  521. <xsl:for-each select="process">
  522. <tr>
  523. <td class='sf'><xsl:value-of select="@name"/></td>
  524. <td class='sf'><xsl:value-of select="pid"/></td>
  525. </tr>
  526. <xsl:for-each select="transaction">
  527. <xsl:sort select="cpu" data-type="number" order="descending"/>
  528. <tr>
  529. <xsl:if test="position() mod 2 = 1">
  530. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  531. </xsl:if>
  532. <td class='sf' colspan='2'><xsl:value-of select="'&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;'"/><xsl:value-of select="@name"/></td>
  533. <td class='nf'><xsl:value-of select="count"/></td>
  534. <td class='nf'><xsl:value-of select="rate"/></td>
  535. <td class='nf'><xsl:value-of select="kernel"/></td>
  536. <td class='nf'><xsl:value-of select="user"/></td>
  537. <td class='nf'><xsl:value-of select="process_cpu"/></td>
  538. <td class='nf'><xsl:value-of select="cpu"/></td>
  539. </tr>
  540. </xsl:for-each>
  541. <tr>
  542. <td colspan='6'/>
  543. <td class='nf'><hr/><xsl:value-of select="format-number(sum(transaction/process_cpu), '0.0')"/></td>
  544. <td class='nf'><hr/><xsl:value-of select="format-number(sum(transaction/cpu), '0.0' )"/></td>
  545. </tr>
  546. </xsl:for-each>
  547. </table>
  548. </td></tr>
  549. </table>
  550. <br/><br/>
  551. </xsl:for-each>
  552. <xsl:for-each select="report/table[@title='Inclusive Transactions Per Process']">
  553. <xsl:variable name='indent'><xsl:value-of select="'&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;'"/></xsl:variable>
  554. <table style="border:1px solid black" width='100%'>
  555. <tr><td class='sub_title'>Inclusive Transactions Per Process<hr/></td></tr>
  556. <tr><td valign='top'>
  557. <table width='100%' style="border:1px solid black">
  558. <tr>
  559. <th colspan='3'/>
  560. <th colspan='2'>Inclusive(ms)</th>
  561. </tr>
  562. <tr>
  563. <th class='sh'>Name</th>
  564. <th class='sh'>Process ID</th>
  565. <th class='nh'>Transactions</th>
  566. <th class='nh'>Kernel</th>
  567. <th class='nh'>User</th>
  568. </tr>
  569. <xsl:for-each select="process">
  570. <tr>
  571. <td class='sh'><xsl:value-of select="@name"/></td>
  572. <td class='sh'><xsl:value-of select="pid"/></td>
  573. <td colspan='4'/>
  574. </tr>
  575. <xsl:for-each select=".//transaction">
  576. <tr>
  577. <xsl:if test="position() mod 2 = 1">
  578. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  579. </xsl:if>
  580. <td class='sf' colspan='2'><xsl:value-of select="'&#xA0;&#xA0;&#xA0;&#xA0;'"/><xsl:value-of select="substring($indent, string-length($indent) - (@level * 8) )"/><xsl:value-of select="@name"/></td>
  581. <td class='nf'><xsl:value-of select="count"/></td>
  582. <td class='nf'><xsl:value-of select="kernel"/></td>
  583. <td class='nf'><xsl:value-of select="user"/></td>
  584. </tr>
  585. </xsl:for-each>
  586. </xsl:for-each>
  587. </table>
  588. </td></tr>
  589. </table>
  590. <br/><br/>
  591. </xsl:for-each>
  592. <xsl:for-each select="report/table[@title='Http Requests Response Time Statistics']">
  593. <a name='http_response'/>
  594. <table style="border:1px solid black" width='100%'>
  595. <tr><td class='sub_title'>HTTP Response Time Statistics<hr/></td></tr>
  596. <tr><td valign='top'>
  597. <table width='100%' style="border:1px solid black">
  598. <tr>
  599. <th class='sh'>Request Type</th>
  600. <th class='nh'>Requests/sec</th>
  601. <th class='nh'>Response Time(ms)</th>
  602. <th class='nh'>IIS%</th>
  603. <th class='nh'>Filter%</th>
  604. <th class='nh'>ISAPI%</th>
  605. <th class='nh'>ASP%</th>
  606. <th class='nh'>CGI%</th>
  607. </tr>
  608. <xsl:for-each select="requests">
  609. <tr>
  610. <xsl:if test="position() mod 2 = 1">
  611. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  612. </xsl:if>
  613. <td><xsl:value-of select="@type"/><xsl:if test="@cached='true'"> (cached)</xsl:if></td>
  614. <td class='nf'><xsl:value-of select="rate"/></td>
  615. <td class='nf'><xsl:value-of select="format-number(response_time, '0.00')"/></td>
  616. <td class='nf'><xsl:value-of select="format-number(component[@name='UL'] + component[@name='W3'], '0.0')"/></td>
  617. <td class='nf'><xsl:value-of select="format-number(component[@name='W3Fltr'], '0.0')"/></td>
  618. <td class='nf'><xsl:value-of select="format-number(component[@name='ISAPI'], '0.0')"/></td>
  619. <td class='nf'><xsl:value-of select="format-number(component[@name='ASP'], '0.0')"/></td>
  620. <td class='nf'><xsl:value-of select="format-number(component[@name='CGI'], '0.0')"/></td>
  621. </tr>
  622. </xsl:for-each>
  623. <tr>
  624. <td/>
  625. <td class='nf'><hr/><xsl:value-of select="summary[@type='totals']/rate"/></td>
  626. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/response_time, '0.00')"/></td>
  627. <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>
  628. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='W3Fltr'], '0.0')"/></td>
  629. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ISAPI'], '0.0')"/></td>
  630. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ASP'], '0.0')"/></td>
  631. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='CGI'], '0.0')"/></td>
  632. </tr>
  633. </table>
  634. </td></tr>
  635. </table>
  636. <br/><br/>
  637. </xsl:for-each>
  638. <xsl:for-each select="report/table[@title='Http Requests CPU Time Usage Statistics']">
  639. <table style="border:1px solid black" width='100%'>
  640. <tr><td class='sub_title'>HTTP Requests CPU Usage Statistics<hr/></td></tr>
  641. <tr><td valign='top'>
  642. <table width='100%' style="border:1px solid black">
  643. <tr>
  644. <th class='sh'>Request Type</th>
  645. <th class='nh'>Requests/sec</th>
  646. <th class='nh'>CPU%</th>
  647. <th class='nh'>IIS%</th>
  648. <th class='nh'>Filter%</th>
  649. <th class='nh'>ISAPI%</th>
  650. <th class='nh'>ASP%</th>
  651. <th class='nh'>CGI%</th>
  652. </tr>
  653. <xsl:for-each select="requests">
  654. <tr>
  655. <xsl:if test="position() mod 2 = 1">
  656. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  657. </xsl:if>
  658. <td class='sf'><xsl:value-of select="@type"/><xsl:if test="@cached='true'"> (cached)</xsl:if></td>
  659. <td class='nf'><xsl:value-of select="rate"/></td>
  660. <td class='nf'><xsl:value-of select="cpu"/></td>
  661. <td class='nf'><xsl:value-of select="format-number(component[@name='UL'] + component[@name='W3'], '0.0')"/></td>
  662. <td class='nf'><xsl:value-of select="format-number(component[@name='W3Fltr'], '0.0')"/></td>
  663. <td class='nf'><xsl:value-of select="format-number(component[@name='ISAPI'], '0.0')"/></td>
  664. <td class='nf'><xsl:value-of select="format-number(component[@name='ASP'], '0.0')"/></td>
  665. <td class='nf'><xsl:value-of select="format-number(component[@name='CGI'], '0.0')"/></td>
  666. </tr>
  667. </xsl:for-each>
  668. <tr>
  669. <td/>
  670. <td class='nf'><hr/><xsl:value-of select="summary[@type='totals']/rate"/></td>
  671. <td class='nf'><hr/><xsl:value-of select="summary[@type='totals']/cpu"/></td>
  672. <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>
  673. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='W3Fltr'], '0.0')"/></td>
  674. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ISAPI'], '0.0')"/></td>
  675. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='ASP'], '0.0')"/></td>
  676. <td class='nf'><hr/><xsl:value-of select="format-number(summary[@type='totals']/component[@name='CGI'], '0.0')"/></td>
  677. </tr>
  678. </table>
  679. </td></tr>
  680. </table>
  681. <br/><br/>
  682. </xsl:for-each>
  683. <xsl:for-each select="report/table[@title='Most Requested URLs']">
  684. <a name='top_url'/>
  685. <table style="border:1px solid black" width='100%'>
  686. <tr><td class='sub_title'>Most Requested URLs<hr/></td></tr>
  687. <tr><td valign='top'>
  688. <table width='100%' style="border:1px solid black">
  689. <tr>
  690. <th class='sh'>URL</th>
  691. <th class='sh'>Site</th>
  692. <th class='nh'>Rate/sec</th>
  693. <th class='nh'>Cached%</th>
  694. <th class='nh'>Response Time(ms)</th>
  695. </tr>
  696. <xsl:for-each select="url">
  697. <tr>
  698. <xsl:if test="position() mod 2 = 1">
  699. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  700. </xsl:if>
  701. <td class='sf'><xsl:value-of select="@name"/></td>
  702. <td class='sf'><xsl:value-of select="site_id"/></td>
  703. <td class='nf'><xsl:value-of select="rate"/></td>
  704. <td class='nf'><xsl:value-of select="cache_hit"/></td>
  705. <td class='nf'><xsl:value-of select="response_time"/></td>
  706. </tr>
  707. </xsl:for-each>
  708. </table>
  709. </td></tr>
  710. </table>
  711. <br/><br/>
  712. </xsl:for-each>
  713. <xsl:for-each select="report/table[@title='Most Requested Static URLs']">
  714. <table style="border:1px solid black" width='100%'>
  715. <tr><td class='sub_title'>Most Requested Static URLs<hr/></td></tr>
  716. <tr><td valign='top'>
  717. <table width='100%' style="border:1px solid black">
  718. <tr>
  719. <th class='sh'>URL</th>
  720. <th class='sh'>Site</th>
  721. <th class='nh'>Rate/sec</th>
  722. <th class='nh'>Cached%</th>
  723. <th class='nh'>Response Time(ms)</th>
  724. </tr>
  725. <xsl:for-each select="url">
  726. <tr>
  727. <xsl:if test="position() mod 2 = 1">
  728. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  729. </xsl:if>
  730. <td class='sf'><xsl:value-of select="@name"/></td>
  731. <td class='sf'><xsl:value-of select="site_id"/></td>
  732. <td class='nf'><xsl:value-of select="rate"/></td>
  733. <td class='nf'><xsl:value-of select="cache_hit"/></td>
  734. <td class='nf'><xsl:value-of select="response_time"/></td>
  735. </tr>
  736. </xsl:for-each>
  737. </table>
  738. </td></tr>
  739. </table>
  740. <br/><br/>
  741. </xsl:for-each>
  742. <xsl:for-each select="report/table[@title='Slowest URLs']">
  743. <a name='slowest_url'/>
  744. <table style="border:1px solid black" width='100%'>
  745. <tr><td class='sub_title'>Slowest URLs<hr/></td></tr>
  746. <tr><td valign='top'>
  747. <table width='100%' style="border:1px solid black">
  748. <tr>
  749. <th class='sh'>URL</th>
  750. <th class='sh'>Site</th>
  751. <th class='nh'>Rate/sec</th>
  752. <th class='nh'>Cached%</th>
  753. <th class='nh'>Response Time(ms)</th>
  754. </tr>
  755. <xsl:for-each select="url">
  756. <tr>
  757. <xsl:if test="position() mod 2 = 1">
  758. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  759. </xsl:if>
  760. <td class='sf'><xsl:value-of select="@name"/></td>
  761. <td class='sf'><xsl:value-of select="site_id"/></td>
  762. <td class='nf'><xsl:value-of select="rate"/></td>
  763. <td class='nf'><xsl:value-of select="cache_hit"/></td>
  764. <td class='nf'><xsl:value-of select="response_time"/></td>
  765. </tr>
  766. </xsl:for-each>
  767. </table>
  768. </td></tr>
  769. </table>
  770. <br/><br/>
  771. </xsl:for-each>
  772. <xsl:for-each select="report/table[@title='URLs with the Most CPU Usage']">
  773. <a name='cpu_url'/>
  774. <table style="border:1px solid black" width='100%'>
  775. <tr><td class='sub_title'>URLs with the Most CPU Usage<hr/></td></tr>
  776. <tr><td valign='top'>
  777. <table width='100%' style="border:1px solid black">
  778. <tr>
  779. <th class='sh'>URL</th>
  780. <th class='sh'>Site</th>
  781. <th class='nh'>Rate/sec</th>
  782. <th class='nh'>CPU%</th>
  783. </tr>
  784. <xsl:for-each select="url">
  785. <tr>
  786. <xsl:if test="position() mod 2 = 1">
  787. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  788. </xsl:if>
  789. <td class='sf'><xsl:value-of select="@name"/></td>
  790. <td class='sf'><xsl:value-of select="site_id"/></td>
  791. <td class='nf'><xsl:value-of select="rate"/></td>
  792. <td class='nf'><xsl:value-of select="cpu"/>%</td>
  793. </tr>
  794. </xsl:for-each>
  795. </table>
  796. </td></tr>
  797. </table>
  798. <br/><br/>
  799. </xsl:for-each>
  800. <xsl:for-each select="report/table[@title='URLs with the Most Bytes Sent']">
  801. <table style="border:1px solid black" width='100%'>
  802. <tr><td class='sub_title'>URLs with the Most Bytes Sent<hr/></td></tr>
  803. <tr><td valign='top'>
  804. <table width='100%' style="border:1px solid black">
  805. <tr>
  806. <th class='sh'>URL</th>
  807. <th class='sh'>Site</th>
  808. <th class='nh'>Rate/sec</th>
  809. <th class='nh'>Cached%</th>
  810. <th class='nh'>Bytes Sent/sec</th>
  811. </tr>
  812. <xsl:for-each select="url">
  813. <tr>
  814. <xsl:if test="position() mod 2 = 1">
  815. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  816. </xsl:if>
  817. <td class='sf'><xsl:value-of select="@name"/></td>
  818. <td class='sf'><xsl:value-of select="site_id"/></td>
  819. <td class='nf'><xsl:value-of select="rate"/></td>
  820. <td class='nf'><xsl:value-of select="cache_hit"/></td>
  821. <td class='nf'><xsl:value-of select="bytes_sent_per_sec"/></td>
  822. </tr>
  823. </xsl:for-each>
  824. </table>
  825. </td></tr>
  826. </table>
  827. <br/><br/>
  828. </xsl:for-each>
  829. <xsl:for-each select="report/table[@title='Clients with the Most Requests']">
  830. <a name='top_client'/>
  831. <table style="border:1px solid black" width='100%'>
  832. <tr><td class='sub_title'>Clients with the Most Requests<hr/></td></tr>
  833. <tr><td valign='top'>
  834. <table width='100%' style="border:1px solid black">
  835. <tr>
  836. <th class='sh'>IP Address</th>
  837. <th class='nh'>Rate/sec</th>
  838. <th class='nh'>Cached%</th>
  839. <th class='nh'>Response Time(ms)</th>
  840. </tr>
  841. <xsl:for-each select="client">
  842. <tr>
  843. <xsl:if test="position() mod 2 = 1">
  844. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  845. </xsl:if>
  846. <td class='sf'><xsl:value-of select="@ip"/></td>
  847. <td class='nf'><xsl:value-of select="rate"/></td>
  848. <td class='nf'><xsl:value-of select="cache_hit"/></td>
  849. <td class='nf'><xsl:value-of select="response_time"/></td>
  850. </tr>
  851. </xsl:for-each>
  852. </table>
  853. </td></tr></table>
  854. <br/><br/>
  855. </xsl:for-each>
  856. <xsl:for-each select="report/table[@title='Clients with the Slowest Responses']">
  857. <table style="border:1px solid black" width='100%'>
  858. <tr><td class='sub_title'>Clients with the Slowest Responses<hr/></td></tr>
  859. <tr><td valign='top'>
  860. <table width='100%' style="border:1px solid black">
  861. <tr>
  862. <th class='sh'>IP Address</th>
  863. <th class='nh'>Rate/sec</th>
  864. <th class='nh'>Cached%</th>
  865. <th class='nh'>Response Time(ms)</th>
  866. </tr>
  867. <xsl:for-each select="client">
  868. <tr>
  869. <xsl:if test="position() mod 2 = 1">
  870. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  871. </xsl:if>
  872. <td class='sf'><xsl:value-of select="@ip"/></td>
  873. <td class='nf'><xsl:value-of select="rate"/></td>
  874. <td class='nf'><xsl:value-of select="cache_hit"/></td>
  875. <td class='nf'><xsl:value-of select="response_time"/></td>
  876. </tr>
  877. </xsl:for-each>
  878. </table>
  879. </td></tr>
  880. </table>
  881. <br/><br/>
  882. </xsl:for-each>
  883. <xsl:for-each select="report/table[@title='Sites with the Most CPU Time Usage']">
  884. <xsl:if test="count(site) > 1">
  885. <a name='site'/>
  886. <table style="border:1px solid black" width='100%'>
  887. <tr><td class='sub_title'>Sites with the Most CPU Time Usage<hr/></td></tr>
  888. <tr><td valign='top'>
  889. <table width='100%' style="border:1px solid black">
  890. <tr>
  891. <th class='sh'>Site ID</th>
  892. <th class='nh'>Rate/sec</th>
  893. <th class='nh'>Cached%</th>
  894. <th class='nh'>Response Time(ms)</th>
  895. <th class='nh'>CPU Time(ms)</th>
  896. <th class='nh'>CPU%</th>
  897. </tr>
  898. <xsl:for-each select="site">
  899. <tr>
  900. <xsl:if test="position() mod 2 = 1">
  901. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  902. </xsl:if>
  903. <td class='sf'><xsl:value-of select="@id"/></td>
  904. <td class='nf'><xsl:value-of select="rate"/></td>
  905. <td class='nf'><xsl:value-of select="cache_hits"/></td>
  906. <td class='nf'><xsl:value-of select="response_time"/></td>
  907. <td class='nf'><xsl:value-of select="cpu_time"/></td>
  908. <td class='nf'><xsl:value-of select="cpu"/></td>
  909. </tr>
  910. </xsl:for-each>
  911. </table>
  912. </td></tr>
  913. </table>
  914. <br/><br/>
  915. </xsl:if>
  916. </xsl:for-each>
  917. <xsl:for-each select="report/table[@title='Sites with the Most Requests']">
  918. <xsl:if test="count(site) > 1">
  919. <table style="border:1px solid black" width='100%'>
  920. <tr><td class='sub_title'>Sites with the Most Requests<hr/></td></tr>
  921. <tr><td valign='top'>
  922. <table width='100%' style="border:1px solid black">
  923. <tr>
  924. <th class='sh'>Site ID</th>
  925. <th class='nh'>Rate/sec</th>
  926. <th class='nh'>Response Time(ms)</th>
  927. <th class='nh'>Cached%</th>
  928. <th class='nh'>Static Files%</th>
  929. <th class='nh'>CGI%</th>
  930. <th class='nh'>ASP%</th>
  931. </tr>
  932. <xsl:for-each select="site">
  933. <tr>
  934. <xsl:if test="position() mod 2 = 1">
  935. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  936. </xsl:if>
  937. <td class='sf'><xsl:value-of select="@id"/></td>
  938. <td class='nf'><xsl:value-of select="rate"/></td>
  939. <td class='nf'><xsl:value-of select="response_time"/></td>
  940. <td class='nf'><xsl:value-of select="cache_hits"/></td>
  941. <td class='nf'><xsl:value-of select="static"/></td>
  942. <td class='nf'><xsl:value-of select="cgi"/></td>
  943. <td class='nf'><xsl:value-of select="asp"/></td>
  944. </tr>
  945. </xsl:for-each>
  946. </table>
  947. </td></tr></table>
  948. <br/><br/>
  949. </xsl:if>
  950. </xsl:for-each>
  951. <xsl:for-each select="report/table[@title='Sites with the Slowest Responses']">
  952. <xsl:if test="count(site) > 1">
  953. <table style="border:1px solid black" width='100%'>
  954. <tr><td class='sub_title'>Sites with the Slowest Responses<hr/></td></tr>
  955. <tr><td valign='top'>
  956. <table width='100%' style="border:1px solid black">
  957. <tr>
  958. <th class='sh'>Site ID</th>
  959. <th class='nh'>Rate/sec</th>
  960. <th class='nh'>Response Time(ms)</th>
  961. <th class='nh'>Cached%</th>
  962. <th class='nh'>Static Files%</th>
  963. <th class='nh'>CGI%</th>
  964. <th class='nh'>ASP%</th>
  965. </tr>
  966. <xsl:for-each select="site">
  967. <tr>
  968. <xsl:if test="position() mod 2 = 1">
  969. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  970. </xsl:if>
  971. <td class='sf'><xsl:value-of select="@id"/></td>
  972. <td class='nf'><xsl:value-of select="rate"/></td>
  973. <td class='nf'><xsl:value-of select="response_time"/></td>
  974. <td class='nf'><xsl:value-of select="cache_hits"/></td>
  975. <td class='nf'><xsl:value-of select="static"/></td>
  976. <td class='nf'><xsl:value-of select="cgi"/></td>
  977. <td class='nf'><xsl:value-of select="asp"/></td>
  978. </tr>
  979. </xsl:for-each>
  980. </table>
  981. </td></tr>
  982. </table>
  983. <br/><br/>
  984. </xsl:if>
  985. </xsl:for-each>
  986. <xsl:for-each select="report/table[@title='Sites with the Most Bytes Sent']">
  987. <xsl:if test="count(site) > 1">
  988. <table style="border:1px solid black" width='100%'>
  989. <tr><td class='sub_title'>Sites with the Most Bytes Sent<hr/></td></tr>
  990. <tr><td valign='top'>
  991. <table width='100%' style="border:1px solid black">
  992. <tr>
  993. <th class='sh'>Site ID</th>
  994. <th class='nh'>Rate/sec</th>
  995. <th class='nh'>Bytes Sent/sec</th>
  996. <th class='nh'>Cached%</th>
  997. <th class='nh'>Static Files%</th>
  998. <th class='nh'>CGI%</th>
  999. <th class='nh'>ASP%</th>
  1000. </tr>
  1001. <xsl:for-each select="site">
  1002. <tr>
  1003. <xsl:if test="position() mod 2 = 1">
  1004. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  1005. </xsl:if>
  1006. <td class='sf'><xsl:value-of select="@id"/></td>
  1007. <td class='nf'><xsl:value-of select="rate"/></td>
  1008. <td class='nf'><xsl:value-of select="bytes"/></td>
  1009. <td class='nf'><xsl:value-of select="cache_hits"/></td>
  1010. <td class='nf'><xsl:value-of select="static"/></td>
  1011. <td class='nf'><xsl:value-of select="cgi"/></td>
  1012. <td class='nf'><xsl:value-of select="asp"/></td>
  1013. </tr>
  1014. </xsl:for-each>
  1015. </table>
  1016. </td></tr>
  1017. </table>
  1018. <br/><br/>
  1019. </xsl:if>
  1020. </xsl:for-each>
  1021. <xsl:for-each select="report/table[@title='Image Statistics']">
  1022. <a name='image_stats'/>
  1023. <table style="border:1px solid black" width='100%'>
  1024. <tr><td class='sub_title'>Image Statistics<hr/></td></tr>
  1025. <tr><td valign='top'>
  1026. <table width='100%' style="border:1px solid black">
  1027. <tr>
  1028. <th colspan='2'/>
  1029. <th colspan='2'>Threads</th>
  1030. <th colspan='2'>Process</th>
  1031. <th colspan='2'>Transaction</th>
  1032. <th></th>
  1033. </tr>
  1034. <tr>
  1035. <th class='sh'>Image</th>
  1036. <th class='sh'>Process ID</th>
  1037. <th class='nh'>Launched</th>
  1038. <th class='nh'>Used</th>
  1039. <th class='nh'>Kernel Time(ms)</th>
  1040. <th class='nh'>User Time(ms)</th>
  1041. <th class='nh'>Kernel Time(ms)</th>
  1042. <th class='nh'>User Time(ms)</th>
  1043. <th class='nh'>CPU%</th>
  1044. </tr>
  1045. <xsl:for-each select="image">
  1046. <xsl:sort select="cpu" data-type="number" order="descending"/>
  1047. <xsl:sort select="@name" data-type="number" order="ascending"/>
  1048. <tr>
  1049. <xsl:if test="position() mod 2 = 1">
  1050. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  1051. </xsl:if>
  1052. <td class='sf'><xsl:value-of select="@name"/></td>
  1053. <td class='sf'><xsl:value-of select="pid"/></td>
  1054. <td class='nf'><xsl:value-of select="threads"/></td>
  1055. <td class='nf'><xsl:value-of select="used_threads"/></td>
  1056. <td class='nf'><xsl:value-of select="process_kernel"/></td>
  1057. <td class='nf'><xsl:value-of select="process_user"/></td>
  1058. <td class='nf'><xsl:value-of select="transaction_kernel"/></td>
  1059. <td class='nf'><xsl:value-of select="transaction_user"/></td>
  1060. <td class='nf'><xsl:value-of select="cpu"/></td>
  1061. </tr>
  1062. </xsl:for-each>
  1063. <td colspan='2'/>
  1064. <td class='nf'><hr/><xsl:value-of select="sum(image/threads)"/></td>
  1065. <td class='nf'><hr/><xsl:value-of select="sum(image/used_threads)"/></td>
  1066. <td class='nf'><hr/><xsl:value-of select="sum(image/process_kernel)"/></td>
  1067. <td class='nf'><hr/><xsl:value-of select="sum(image/process_user)"/></td>
  1068. <td class='nf'><hr/><xsl:value-of select="sum(image/transaction_kernel)"/></td>
  1069. <td class='nf'><hr/><xsl:value-of select="sum(image/transaction_user)"/></td>
  1070. <td class='nf'><hr/><xsl:value-of select="format-number(sum(image/cpu), '#.00')"/></td>
  1071. </table>
  1072. </td></tr>
  1073. </table>
  1074. <br/><br/>
  1075. </xsl:for-each>
  1076. <xsl:for-each select="report/table[@title='Disk Totals']">
  1077. <a name='disk'/>
  1078. <table style="border:1px solid black" width='100%'>
  1079. <tr><td class='sub_title'>Disk Totals<hr/></td></tr>
  1080. <tr><td valign='top'>
  1081. <table width='100%' style="border:1px solid black">
  1082. <tr>
  1083. <th class='sh'>Disk Name</th>
  1084. <th class='nh'>Reads/sec</th>
  1085. <th class='nh'>Kb/Read</th>
  1086. <th class='nh'>Writes/sec</th>
  1087. <th class='nh'>Kb/Write</th>
  1088. </tr>
  1089. <xsl:for-each select="disk">
  1090. <xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
  1091. <tr>
  1092. <xsl:if test="position() mod 2 = 1">
  1093. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  1094. </xsl:if>
  1095. <td class='sf'><xsl:value-of select="@number"/></td>
  1096. <td class='nf'><xsl:value-of select="read_rate"/></td>
  1097. <td class='nf'><xsl:value-of select="read_size"/></td>
  1098. <td class='nf'><xsl:value-of select="write_rate"/></td>
  1099. <td class='nf'><xsl:value-of select="write_size"/></td>
  1100. </tr>
  1101. </xsl:for-each>
  1102. </table>
  1103. </td></tr>
  1104. </table>
  1105. <br/><br/>
  1106. </xsl:for-each>
  1107. <xsl:for-each select="report/table[@title='Disk']">
  1108. <table style="border:1px solid black" width='100%'>
  1109. <tr><td class='sub_title'>Disk <xsl:value-of select="@number"/><hr/></td></tr>
  1110. <tr><td valign='top'>
  1111. <table width='100%' style="border:1px solid black">
  1112. <tr>
  1113. <th class='sh'>Image Name</th>
  1114. <th class='sh'>Process ID</th>
  1115. <th class='sh'>Authority</th>
  1116. <th class='nh'>Reads/sec</th>
  1117. <th class='nh'>Kb/Read</th>
  1118. <th class='nh'>Writes/sec</th>
  1119. <th class='nh'>Kb/Write</th>
  1120. </tr>
  1121. <xsl:for-each select="image">
  1122. <xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
  1123. <tr>
  1124. <xsl:if test="position() mod 2 = 1">
  1125. <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
  1126. </xsl:if>
  1127. <td class='sf'><xsl:value-of select="@name"/></td>
  1128. <td class='sf'><xsl:value-of select="pid"/></td>
  1129. <td class='sf' width='230'><xsl:value-of select="authority"/></td>
  1130. <td class='nf'><xsl:value-of select="read_rate"/></td>
  1131. <td class='nf'><xsl:value-of select="read_size"/></td>
  1132. <td class='nf'><xsl:value-of select="write_rate"/></td>
  1133. <td class='nf'><xsl:value-of select="write_size"/></td>
  1134. </tr>
  1135. </xsl:for-each>
  1136. </table>
  1137. </td></tr>
  1138. </table>
  1139. <br/><br/>
  1140. </xsl:for-each>
  1141. <xsl:for-each select="report/table[@title='Files Causing Most Disk IOs']">
  1142. <a name='top_file'/>
  1143. <table style="border:1px solid black" width='100%'>
  1144. <tr><td class='sub_title'>Files Causing Most Disk IOs<hr/></td></tr>
  1145. <tr><td valign='top'>
  1146. <table width='100%' style="border:1px solid black">
  1147. <tr>
  1148. <th class='sh'>File</th>
  1149. <th colspan='2'/>
  1150. <th class='sh'>Disk</th>
  1151. <th class='nh'>Reads/sec</th>
  1152. <th class='nh'>Read size(Kb)</th>
  1153. <th class='nh'>Writes/sec</th>
  1154. <th class='nh'>Write size(Kb)</th>
  1155. </tr>
  1156. <xsl:for-each select="file">
  1157. <xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
  1158. <tr>
  1159. <xsl:variable name='bg'>
  1160. <xsl:if test="position() mod 2 = 0">#F5F5F5</xsl:if>
  1161. <xsl:if test="position() mod 2 = 1">lightgrey</xsl:if>
  1162. </xsl:variable>
  1163. <xsl:attribute name="bgcolor"><xsl:value-of select="$bg"/></xsl:attribute>
  1164. <td class='sh' colspan='3'><xsl:value-of select="drive"/><xsl:value-of select="@name"/></td>
  1165. <td class='sf'><xsl:value-of select="disk"/></td>
  1166. <td class='nf'><xsl:value-of select="read_rate"/></td>
  1167. <td class='nf'><xsl:value-of select="read_size"/></td>
  1168. <td class='nf'><xsl:value-of select="write_rate"/></td>
  1169. <td class='nf'><xsl:value-of select="write_size"/></td>
  1170. </tr>
  1171. <xsl:for-each select="image">
  1172. <xsl:sort select="read_rate + write_rate" data-type="number" order="descending"/>
  1173. <tr>
  1174. <xsl:attribute name="bgcolor"><xsl:value-of select="$bg"/></xsl:attribute>
  1175. <td/>
  1176. <td class='sf'><xsl:value-of select="@name"/></td>
  1177. <td class='sf'><xsl:value-of select="pid"/></td>
  1178. <td/>
  1179. <td class='nf'><xsl:value-of select="read_rate"/></td>
  1180. <td class='nf'><xsl:value-of select="read_size"/></td>
  1181. <td class='nf'><xsl:value-of select="write_rate"/></td>
  1182. <td class='nf'><xsl:value-of select="write_size"/></td>
  1183. </tr>
  1184. </xsl:for-each>
  1185. </xsl:for-each>
  1186. </table>
  1187. </td></tr>
  1188. </table>
  1189. </xsl:for-each>
  1190. </body>
  1191. </html>
  1192. </xsl:template>
  1193. </xsl:stylesheet>