} } } } page_header($title); # list of software packages $packages = software_list(); # regular expressions for different software packages $pkgmatch = software_match_list(); $keys = array_keys($_POST); if (isset($_POST['system'])) { $db = db_connect(); foreach ($keys as $key) { if ($key != 'system' && $key != 'start_date' && $key != 'end_date') { echo "<H3><CODE>" . $key . "</CODE></H3>\n"; $sql = "SELECT " . xaxis_column("month") . ", COUNT(jobid) AS jobcount, SUM(nproc*TIME_TO_SEC(walltime))/3600.0 AS cpuhours, SUM(TIME_TO_SEC(cput))/3600.0 AS cpuhours_alt, COUNT(DISTINCT(username)) AS users, COUNT(DISTINCT(groupname)) AS groups FROM Jobs WHERE system LIKE '" . $_POST['system'] . "' AND ( "; if (isset($pkgmatch[$key])) { $sql .= $pkgmatch[$key]; } else { $sql .= "script LIKE '%" . $key . "%' OR software LIKE '%" . $key . "%'"; } $sql .= " ) AND ( " . dateselect("start", $_POST['start_date'], $_POST['end_date']) . " ) GROUP BY month;"; #echo "<PRE>".htmlspecialchars($sql)."</PRE>"; $result = db_query($db, $sql); echo "<TABLE border=1>\n"; echo "<TR><TH>month</TH><TH>jobcount</TH><TH>cpuhours</TH><TH>cpuhours_alt</TH><TH>users</TH><TH>groups</TH></TR>\n"; while ($result->fetchInto($row)) { $rkeys = array_keys($row); echo "<TR>"; foreach ($rkeys as $rkey) { $data[$rkey] = array_shift($row);
function get_bucketed_metric($db, $system, $xaxis, $metric, $start_date, $end_date) { $query = "SELECT " . xaxis_column($xaxis) . ",COUNT(jobid) AS jobcount"; if (columns($metric, $system) != "") { $query .= "," . columns($metric, $system); } if ($xaxis == "walltime" || $xaxis == "walltime_req") { $query .= ",MIN(TIME_TO_SEC(" . $xaxis . ")) AS hidden"; } elseif ($xaxis == "nproc_bucketed") { $query .= ",MIN(nproc) AS hidden"; } else { $query .= ",MIN(" . $xaxis . ") AS hidden"; } $query .= " FROM Jobs WHERE (" . sysselect($system) . ") AND (" . dateselect("start", $start_date, $end_date) . ")"; if (clause($xaxis, $metric) != "") { $query .= " AND " . clause($xaxis, $metric); } if ($xaxis == "nproc_bucketed") { $query .= " GROUP BY nproc"; } else { $query .= " GROUP BY " . $xaxis; } $query .= " ORDER BY hidden;"; #print "<PRE>".$query."</PRE>\n"; return db_query($db, $query); }
} } } } page_header($title); # list of software packages $packages = software_list(); # regular expressions for different software packages $pkgmatch = software_match_list(); $keys = array_keys($_POST); if (isset($_POST['system'])) { $db = db_connect(); foreach ($keys as $key) { if ($key != 'system' && $key != 'start_date' && $key != 'end_date') { echo "<H3><CODE>" . $key . "</CODE></H3>\n"; $sql = "SELECT " . xaxis_column("walltime") . ",COUNT(jobid) AS jobcount, SUM(nproc*TIME_TO_SEC(walltime))/3600.0 AS cpuhours, SUM(TIME_TO_SEC(cput))/3600.0 AS cpuhours_alt,MIN(TIME_TO_SEC(walltime)) AS hidden FROM Jobs WHERE system LIKE '" . $_POST['system'] . "' AND username IS NOT NULL AND ( script IS NOT NULL AND "; if (isset($pkgmatch[$key])) { $sql .= $pkgmatch[$key]; } else { $sql .= "script LIKE '%" . $key . "%' OR software LIKE '%" . $key . "%'"; } $sql .= " ) AND ( " . dateselect("start", $_POST['start_date'], $_POST['end_date']) . " ) GROUP BY walltime UNION SELECT 'TOTAL:' AS walltime,COUNT(jobid) AS jobcount, SUM(nproc*TIME_TO_SEC(walltime))/3600.0 AS cpuhours, SUM(TIME_TO_SEC(cput))/3600.0 AS alt_cpuhours, 100000000 AS hidden FROM Jobs WHERE system LIKE '" . $_POST['system'] . "' AND username IS NOT NULL AND ( "; if (isset($pkgmatch[$key])) { $sql .= $pkgmatch[$key]; } else { $sql .= "script LIKE '%" . $key . "%' OR software LIKE '%" . $key . "%'"; } $sql .= " ) AND ( " . dateselect("start", $_POST['start_date'], $_POST['end_date']) . " ) ORDER BY hidden;"; #echo "<PRE>".htmlspecialchars($sql)."</PRE>"; $result = db_query($db, $sql); echo "<TABLE border=1>\n";