Index: /gs2-extensions/parallel-building/trunk/src/bin/script/generate_gantt.pl
===================================================================
--- /gs2-extensions/parallel-building/trunk/src/bin/script/generate_gantt.pl	(revision 27589)
+++ /gs2-extensions/parallel-building/trunk/src/bin/script/generate_gantt.pl	(revision 27590)
@@ -35,4 +35,9 @@
 }
 print "Chart Width: " . $chart_width . "px\n";
+
+my ($epoc) = $dir =~ /(\d+)$/;
+my $gantt_path = $dir . '/' . $epoc . '-gantt.html';
+print "Gantt Chart: " . $gantt_path . "\n";
+
 print "===================================\n\n";
 
@@ -62,5 +67,5 @@
       $filepath =~ s/^\s+|\s+$//g;
       $import_dir = &longestCommonPath($filepath, $import_dir);
-      $timing_data->{$worker_id}->{'F'}->{$parts[3]} = {'FN'=>$filepath, 'PS'=>($stop - $parts[5]), 'PE'=>$stop, 'E'=>$stop};
+      $timing_data->{$worker_id}->{'F'}->{$parts[3]} = {'FN'=>$filepath, 'PS'=>($stop - $parts[5]), 'PE'=>$stop, 'E'=>$stop, 'DL'=>$parts[6]};
     }
   }
@@ -75,5 +80,5 @@
 # 3. Produce pretty HTML chart of timing information including jobs
 print " * Generating timing information as HTML... ";
-open(HTMLOUT, '>:utf8', $dir . '/gantt.html') or die('Error! Failed to open file for writing: gantt.html');
+open(HTMLOUT, '>:utf8', $gantt_path) or die('Error! Failed to open file for writing: gantt.html');
 print HTMLOUT "<html>\n";
 print HTMLOUT '<head>' . "\n";
@@ -95,4 +100,5 @@
 my $total_duration = $timing_data->{'M'}->{'E'} - $timing_data->{'M'}->{'S'};
 my $file_count = 0;
+my $data_locality = 0;
 my $total_io_time = 0;
 my $total_process_time = 0;
@@ -139,14 +145,24 @@
       }
       $file_count++;
+      if ($timing_data->{$worker_id}->{'F'}->{$job_start}->{'DL'} == 1)
+      {
+        $data_locality++;
+      }
     }
   }
 }
 my $avg_processing_time = floor(($total_io_time + $total_process_time) / $file_count);
+my @months = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
 
 print HTMLOUT "<tr><th>Import Directory:</th><td>" . $import_dir . "</td></tr>\n";
+my ($sec, $min, $hour, $day, $month, $year) = (localtime($timing_data->{'M'}->{'S'}))[0,1,2,3,4,5];
+print HTMLOUT "<tr><th>Start Time:</th><td>" . sprintf('%04d%s%02d %02d:%02d:%02d', ($year+1900), $months[$month], $day, $hour, $min, $sec) . "</td></tr>\n";
 print HTMLOUT "<tr><th>Processing Time:</th><td>" . &renderTime($total_duration) . "</td></tr>\n";
 print HTMLOUT "<tr><th>Processing Threads:</th><td>" . $number_of_workers . "</td></tr>\n";
 print HTMLOUT "<tr><th>Files Processed:</th><td>" . $file_count . "</td></tr>\n";
-print HTMLOUT "<tr><th>Problem Files:</th><td>" . $problem_files . "</td></tr>\n";
+if ($data_locality > 0)
+{
+  print HTMLOUT "<tr><th>Data Locality:</th><td>" . sprintf('%d%% [%d out of %d]', (($data_locality / $file_count) * 100), $data_locality, $file_count) . "</td></tr>\n";
+}
 print HTMLOUT "<tr><th>Serial Processing Time:</th><td>" . &renderTime($total_process_time) . "</td></tr>\n";
 print HTMLOUT "<tr><th>Serial IO Time:</th><td>" . &renderTime($total_io_time) . "</td></tr>\n";
@@ -154,4 +170,5 @@
 print HTMLOUT "<tr><th>Fastest File:</th><td>" . &renderTime($fastest_file) . "</td></tr>\n";
 print HTMLOUT "<tr><th>Slowest File:</th><td>" . &renderTime($slowest_file) . "</td></tr>\n";
+print HTMLOUT "<tr><th>Problem Files:</th><td>" . $problem_files . "</td></tr>\n";
 
 print HTMLOUT "</table>\n";
@@ -309,5 +326,20 @@
     my $rpwidth = $jwidth - $rpleft;
     my $cpu_percent = int((($rpwidth / $jwidth) * 100) + 0.5);
-    $html .= '<div class="job" style="left:' . $jleft . 'px;width:' . $jwidth . 'px" title="FN:' . $jobs->{$jstart}->{'FN'} . ', S:' . renderTime($rjstart) . ', E:' . renderTime($rjend) . ', CPU: ' . $cpu_percent . '%"><span class="process" style="left:' . $rpleft . 'px;width:' . $rpwidth . 'px">&nbsp;</span><span class="label">' . $jobs->{$jstart}->{'FN'} . '</span></div>';
+    $html .= '<div class="job" style="left:' . $jleft . 'px;width:' . $jwidth . 'px;';
+    if ($jobs->{$jstart}->{'DL'} != 1)
+    {
+      $html .= 'border:1px dashed black;';
+    }
+    $html .= '" title="FN:' . $jobs->{$jstart}->{'FN'} . ', S:' . renderTime($rjstart) . ', E:' . renderTime($rjend) . ', CPU: ' . $cpu_percent . '%"><span class="process" style="left:' . $rpleft . 'px;width:' . $rpwidth . 'px">&nbsp;</span><span class="label"';
+    if ($jobs->{$jstart}->{'DL'} != 1)
+    {
+      $html .= ' style="color:#FF0000"';
+    }
+    $html .=  '>' . $jobs->{$jstart}->{'FN'};
+    if ($jobs->{$jstart}->{'DL'} != 1)
+    {
+      $html .= ' [NL]';
+    }
+    $html .= '</span></div>';
   }
   return $html;
