IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29729


Ignore:
Timestamp:
Nov 9, 2010, 3:34:13 PM (16 years ago)
Author:
rhenders
Message:

now using DayMetrics class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/czarmetrics.pl

    r29687 r29729  
    88use CGI::Pretty qw[:standard];
    99
     10use czartool::DayMetrics;
    1011use czartool::CzarDb;
    1112use czartool::Gpc1Db;
    12 use czartool::Plotter;
    13 use czartool::StageMetrics;
    1413
    1514my $czarDbName = "czardb";
    16 my $save_temps = undef;
    17 my $interval = undef;
     15my $day = undef;
    1816my $begin = undef;
    1917my $end = undef;
    20 my $burntoolEnd = undef;
    21 my $day = undef;
    2218my $verbose = undef;
     19my $save_temps = undef;
    2320
    2421GetOptions (
    2522        "dbname=s" => \$czarDbName,
     23        "begin|b=s" => \$begin,
     24        "end|e=s" => \$end,
    2625        "day|y=s" => \$day,
    2726        "verbose|v" => \$verbose,
    2827        );
    29 
    3028
    3129print "\n*******************************************************************************\n";
     
    3735}
    3836if (!$day) {
    39     print "* OPTIONAL: choose a single day to plot     -y <date>                   (default=today)\n";
     37    print "* OPTIONAL: choose a single day to plot     -y <date>               (default=today)\n";
    4038}
     39if (!$begin) {
     40    print "* OPTIONAL: choose a begin date             -b <date>               (default=today)\n";}
     41if (!$end)
     42{
     43    print "* OPTIONAL: choose an end date              -e <date>               (default=today)\n";
     44}
     45
    4146print "*\n*******************************************************************************\n";
    4247
    4348if ($quit) {exit;}
    44 my @stages = ("burntool", "chip", "cam", "fake", "warp", "stack", "diff", "magic", "magicDS", "dist");
    4549
    4650my $gpc1Db = new czartool::Gpc1Db("gpc1", "ippdb01", "ippuser", "ippuser");
     
    4852$czarDb->setDateFormat("%Y%m%d-%H%i%s");
    4953
    50 # sort out times
    51 if (!$day) {$day = strftime('%Y-%m-%d', localtime);}
    52 $begin =  "$day 06:00";
    53 $end = $czarDb->addInterval($begin, "1 DAY");
    54 $burntoolEnd = $czarDb->addInterval($begin, "12 HOUR");
     54
     55if (!$day && !$begin && !$end) {
     56   
     57    $day = strftime('%Y-%m-%d', localtime);
     58}
     59if ($day) {($begin, $end) = $day;}
    5560
    5661
    57 # create path, dir and html file
    58 my $path = "./$day";
    59 mkdir($path, 0777);
    60 my $plotter = new czartool::Plotter(
    61         $czarDb,
    62         "%Y%m%d-%H%M%S",
    63         "png font \"/usr/share/fonts/corefonts/arial.ttf\" 8",
    64         $path,
    65         $save_temps);
     62my $thisDay = $begin;
     63while (1) {
    6664
    67 # create HTML file and write header stuff
    68 open (HTMLDOC, ">$day/index.html");
    69 print HTMLDOC "<html>\n";
    70 print HTMLDOC "<head>\n";
    71 print HTMLDOC "<title>IPP Metrics for $day</title>\n";
    72 print HTMLDOC "<a name=\"top\"></a>\n";
    73 print HTMLDOC "<h1 align=\"middle\">IPP Metrics for $day</h1>\n";
     65    my $dayMetrics = new czartool::DayMetrics($gpc1Db, $czarDb, "./ippMetrics", 1, 0, $thisDay);
     66    $dayMetrics->writeHTML();
    7467
    75 # summit and burntool exposures
    76 my $summitExposures = $gpc1Db->countScienceExposuresFromLastNight($day);
    77 my $burntoolMetrics = new czartool::StageMetrics("burntool", "all_stdscience_labels", $begin, $burntoolEnd);
    78 $czarDb->runAnalysis($burntoolMetrics);
    79 
    80 
    81 my $previousDay = $czarDb->subtractInterval($day, "1 DAY");
    82 my $nextDay = $czarDb->addInterval($day, "1 DAY");
    83 
    84 
    85 
    86 print HTMLDOC "<h5  align=\"middle\">";
    87 print HTMLDOC "<a href=\"file:///home/rhenders/$previousDay/index.html\"> \< previous day</a> | <a href=\"file:///home/rhenders/$nextDay/index.html\">next day \></a><br>\n";
    88 print HTMLDOC "Measured from $begin to $end HST<br>\n";
    89 printf (HTMLDOC "%d exposures taken on summit last night, %d through burntool today</h5>\n",
    90         $summitExposures, $burntoolMetrics->getProcessed() ? $burntoolMetrics->getProcessed() : 0 );
    91 print HTMLDOC "</head>\n";
    92 print HTMLDOC "<body>\n";
    93 
    94 
    95 
    96 
    97 
    98 my $labels = undef;
    99 my $label;
    100 if (!$czarDb->getStdscienceLabelsInTimePeriod($begin, $end, \$labels)) {next;}
    101 
    102 my $size = @{$labels};
    103 my $table;
    104 my $haveLabelData;
    105 my %initialPendingTotals;
    106 my %processedTotals;
    107 my %finalPendingTotals;
    108 my %faultTotals;
    109 my %labelTables;
    110 
    111 
    112 
    113 # loop through all labels and create tables for each that have content
    114 foreach my $row ( @{$labels} ) {
    115     my ($label) = @{$row};
    116 
    117 
    118     $table = "<table border='1'>";
    119     $table .= "  <tr>\n";
    120     $table .= "    <th>Stage</th>\n";
    121     $table .= "    <th>Initial Pending</th>\n";
    122     $table .= "    <th>Started</th>\n";
    123     $table .= "    <th>25% complete</th>\n";
    124     $table .= "    <th>50% complete</th>\n";
    125     $table .= "    <th>75% complete</th>\n";
    126     $table .= "    <th>90% complete</th>\n";
    127     $table .= "    <th>95% complete</th>\n";
    128     $table .= "    <th>Finished</th>\n";
    129     $table .= "    <th>Time taken</th>\n";
    130     $table .= "    <th>Processed</th>\n";
    131     $table .= "    <th>Exp per hour</th>\n";
    132     $table .= "    <th>Final Pending</th>\n";
    133     $table .= "  </tr>\n";
    134 
    135     $haveLabelData = 0;
    136     #while ( my ($stage, $value) = each(%processedTotals) ) {
    137 
    138     foreach my $stage ( @stages ){
    139 
    140         my $stageMetrics = new czartool::StageMetrics($stage, $label, $begin, ($stage eq "burntool") ? $burntoolEnd : $end);
    141         if (!$czarDb->runAnalysis($stageMetrics)) {next;}
    142 
    143         if (!$stageMetrics->anythingProcessed()) {next;}
    144 
    145         if ($stageMetrics->getProcessed() > 0) {$haveLabelData = 1;};
    146 
    147         $table .= "  <tr>\n";
    148         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getStage() );
    149         $table .= sprintf( "    <td>%d</td>\n", $stageMetrics->getInitialPending() ? $stageMetrics->getInitialPending() : "0" );
    150         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getStarted() ? $stageMetrics->getStarted() : "");
    151         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getFinished25() ? $stageMetrics->getFinished25() : "-" );
    152         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getFinished50() ? $stageMetrics->getFinished50() : "-" );
    153         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getFinished75() ? $stageMetrics->getFinished75() : "-" );
    154         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getFinished90() ? $stageMetrics->getFinished90() : "-" );
    155         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getFinished95() ? $stageMetrics->getFinished95() : "-" );
    156         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getFinished100() ? $stageMetrics->getFinished100() : "-" );
    157         $table .= sprintf( "    <td>%s</td>\n", $stageMetrics->getTotalTime() ? $stageMetrics->getTotalTime() : "-" );
    158         $table .= sprintf( "    <td>%d</td>\n", $stageMetrics->getProcessed() ? $stageMetrics->getProcessed() : "0" );
    159         $table .= sprintf( "    <td>%.2f</td>\n", $stageMetrics->getRate() ? $stageMetrics->getRate() : "0" );
    160         $table .= sprintf( "    <td>");
    161         if ($stageMetrics->getFinalPending() > 0) {$table .= "<font color=\"red\">";}
    162         $table .= sprintf( "%d\n", $stageMetrics->getFinalPending() );
    163         if ($stageMetrics->getFinalPending() > 0) {$table .= "</font>\n";}
    164         $table .= sprintf( "</td>");
    165         $table .= "  </tr>\n";
    166 
    167         if (!$initialPendingTotals{$stage}) {$initialPendingTotals{$stage} = 0;}
    168         $initialPendingTotals{$stage} = $initialPendingTotals{$stage} + $stageMetrics->getInitialPending();
    169         if (!$processedTotals{$stage}) {$processedTotals{$stage} = 0;}
    170         $processedTotals{$stage} = $processedTotals{$stage} + $stageMetrics->getProcessed();
    171         if (!$finalPendingTotals{$stage}) {$finalPendingTotals{$stage} = 0;}
    172         $finalPendingTotals{$stage} = $finalPendingTotals{$stage} + $stageMetrics->getFinalPending();
    173         if (!$faultTotals{$stage}) {$faultTotals{$stage} = 0;}
    174         $faultTotals{$stage} = $faultTotals{$stage} + $stageMetrics->getFaults();
    175     }
    176 
    177     $table .= "</table>";
    178     $table .= "<br>\n";
    179 
    180     if ($haveLabelData) { $labelTables{$label} = $table; print "- $label\n" }
     68    $thisDay = $czarDb->addInterval($thisDay, "1 DAY");
     69    if ($czarDb->isBefore($end, $thisDay)) {last;}
    18170}
    182 
    183 
    184 
    185 
    186 # create hyperlink list of list of active labels
    187 print HTMLDOC "<h2>Active labels for this day</h1>\n";
    188 foreach my $label (keys (%labelTables)) {
    189 
    190     print HTMLDOC "<a href=\"#$label\">$label</a><br>\n";
    191 }
    192 
    193 # some plots
    194 print HTMLDOC "<h1 align=\"middle\">Summary plots</h1>\n";
    195 $plotter->createTimeSeries("all_stdscience_labels", undef, $begin, $end, 0, 0, 0);
    196 print HTMLDOC "<img src=\"czarplot_linear_all_stdscience_labels_all_stages_t.png\" alt=\"All labels and all stages for $day\" />\n";
    197 $plotter->createHistogram("all_stdscience_labels", $begin, $end, 0, 0, 0);
    198 print HTMLDOC "<img src=\"czarplot_linear_all_stdscience_labels_all_stages_h.png\" alt=\"All stages for all_stdscience_labels for $day\" />\n";
    199 $plotter->createRateTimeSeries("all_stdscience_labels", undef, $begin, $end, "1 HOUR", 0);
    200 print HTMLDOC "<img src=\"czarplot_linear_all_stdscience_labels_all_stages_r.png\" alt=\"All stages for all_stdscience_labels for $day\" />\n";
    201 $plotter->plotStorageTimeSeries($begin, $end);
    202 print HTMLDOC "<img src=\"czarplot_cluster.png\" alt=\"All stages for all_stdscience_labels for $day\" />\n";
    203 
    204 
    205 # survey table
    206 printSurveyTable();
    207 
    208 # table for stage totals
    209 $table =  "<h2  align=\"middle\">Totals for all labels</h1>\n";
    210 $table .= "<table border='1'>";
    211 $table .= "  <tr>\n";
    212 $table .= "    <th>Stage</th>\n";
    213 $table .= "    <th>Initial Pending</th>\n";
    214 $table .= "    <th>Processed</th>\n";
    215 $table .= "    <th>Final Pending</th>\n";
    216 $table .= "    <th>Remaining Faults</th>\n";
    217 $table .= "  </tr>\n";
    218 foreach my $stage ( @stages ){
    219 
    220     $table .= "  <tr>\n";
    221     $table .= sprintf( "    <td>%s</td>\n", $stage );
    222     $table .= sprintf( "    <td>%d</td>\n", $initialPendingTotals{$stage} );
    223     $table .= sprintf( "    <td>%d</td>\n", $processedTotals{$stage} );
    224     $table .= sprintf( "    <td>%d</td>\n", $finalPendingTotals{$stage} );
    225     $table .= sprintf( "    <td>%d</td>\n", $faultTotals{$stage} );
    226     $table .= "  </tr>\n";
    227 }
    228 $table .= "</table>";
    229 $table .= "<br>\n";
    230 
    231 print HTMLDOC $table;
    232 
    233 # print all label tables to page
    234 foreach my $label (keys (%labelTables)) {
    235      
    236     print HTMLDOC "<a name=\"$label\"></a>\n";
    237     print HTMLDOC "<h2  align=\"middle\">$label <a href=\"#top\">(top)</a></h1>\n";
    238     $plotter->createTimeSeries($label, undef, $begin, $end, 0, 0, 0);
    239     print HTMLDOC "<img src=\"czarplot_linear_".$label."_all_stages_t.png\" alt=\"All stages for $label for $day\" />\n";
    240     $plotter->createHistogram($label, $begin, $end, 0, 0, 0);
    241     print HTMLDOC "<img src=\"czarplot_linear_".$label."_all_stages_h.png\" alt=\"All stages for $label for $day\" />\n";
    242 
    243     print HTMLDOC $labelTables{$label};
    244 }
    245 
    246 
    247 print HTMLDOC "<br>\n";
    248 print HTMLDOC "</body>\n";
    249 print HTMLDOC "</html>\n";
    250 close(HTMLDOC);
    251 
    252 
    253 ###########################################################################
    254 #
    255 # Creates a survey table
    256 #
    257 ###########################################################################
    258 
    259 sub printSurveyTable() {
    260 
    261     print HTMLDOC "<h2  align=\"middle\">Survey statistics</h1>\n";
    262     print HTMLDOC "<table border='1'>";
    263     print HTMLDOC "  <tr>\n";
    264     print HTMLDOC "    <th>Survey</th>\n";
    265     print HTMLDOC "    <th>Started burntool</th>\n";
    266     print HTMLDOC "    <th>Finished distribution</th>\n";
    267     print HTMLDOC "    <th>Time taken</th>\n";
    268     print HTMLDOC "  </tr>\n";
    269 
    270 # OSS survey
    271     my ($started, $finished, $timeTaken) = undef;
    272     $czarDb->getDayTimings("OSS.nightlyscience", "burntool", "diff", $begin, \$started, \$finished, \$timeTaken);
    273     printSurveyDetails("OSS", $started, $finished, $timeTaken);
    274 
    275 # MDF surveys
    276     my @mdfs = ("M31.nightlyscience",
    277             "MD01.nightlyscience",
    278             "MD02.nightlyscience",
    279             "MD03.nightlyscience",
    280             "MD04.nightlyscience",
    281             "MD05.nightlyscience",
    282             "MD06.nightlyscience",
    283             "MD07.nightlyscience",
    284             "MD08.nightlyscience",
    285             "MD09.nightlyscience",
    286             "MD10.nightlyscience",
    287             "MD11.nightlyscience");
    288 
    289     my $earliest = "2099-01-01";
    290     my $latest = "2001-01-01";
    291 
    292     my $mdf;
    293     my $haveStart = 0;
    294     my $haveEnd = 0;
    295     foreach $mdf (@mdfs) {
    296 
    297         if ($czarDb->getDayTimings($mdf, "burntool", "dist", $begin, \$started, \$finished, \$timeTaken)) {
    298 
    299             if ($started && $czarDb->isBefore($started, $earliest)) {$earliest = $started; $haveStart = 1;}
    300             if ($finished && $czarDb->isBefore($latest, $finished)) {$latest = $finished; $haveEnd = 1;}
    301         }
    302     }
    303 
    304     if (!$haveStart) {$earliest = undef;}
    305     if (!$haveEnd) {$latest = undef;}
    306     if (!$haveStart || !$haveEnd) {$timeTaken = undef;}
    307 
    308     else {$timeTaken = $czarDb->diffTimes($latest, $earliest);}
    309     printSurveyDetails("MDF", $earliest, $latest, $timeTaken);
    310 
    311     $czarDb->getDayTimings("all_stdscience_labels", "burntool", "dist", $begin, \$started, \$finished, \$timeTaken);
    312     printSurveyDetails("All", $started, $finished, $timeTaken);
    313 
    314     print HTMLDOC "</table>\n";
    315 }
    316 ###########################################################################
    317 #
    318 # Creates a row in the survey table
    319 #
    320 ###########################################################################
    321 sub printSurveyDetails() {
    322     my ($survey, $started, $finished, $timeTaken, $processed, $pending) = @_;
    323 
    324     print HTMLDOC "  <tr>\n";
    325     print HTMLDOC "    <td>$survey</td>\n";
    326     printf (HTMLDOC "    <td>%s</td>\n", $started ? $started : "no");
    327     printf (HTMLDOC "    <td>%s</td>\n", $finished ? $finished : "no");
    328     printf (HTMLDOC "    <td>%s</td>\n", $timeTaken ? $timeTaken : "na");
    329     print HTMLDOC "  </tr>\n";
    330 }
    331 
Note: See TracChangeset for help on using the changeset viewer.