[Darshan-commits] [Darshan] branch, dev-modular, updated. darshan-2.3.1-169-gfc94307
Service Account
git at mcs.anl.gov
Fri Sep 4 14:56:23 CDT 2015
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, dev-modular has been updated
via fc94307057726297593d0a5af8e5c4c8ebfc50f6 (commit)
from ac26379597807cf610c81a3945388d7f746f4c80 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit fc94307057726297593d0a5af8e5c4c8ebfc50f6
Author: Shane Snyder <ssnyder at mcs.anl.gov>
Date: Fri Sep 4 14:55:56 2015 -0500
final tweaks for darshan-job-summary graphs
-----------------------------------------------------------------------
Summary of changes:
.../bin/darshan-job-summary.pl.in | 425 ++++++++++----------
darshan-util/darshan-job-summary/share/summary.tex | 22 +-
darshan-util/darshan-job-summary/share/title.tex | 2 +
3 files changed, 224 insertions(+), 225 deletions(-)
Diff of changes:
diff --git a/darshan-util/darshan-job-summary/bin/darshan-job-summary.pl.in b/darshan-util/darshan-job-summary/bin/darshan-job-summary.pl.in
index 0b11851..4fcb1c6 100755
--- a/darshan-util/darshan-job-summary/bin/darshan-job-summary.pl.in
+++ b/darshan-util/darshan-job-summary/bin/darshan-job-summary.pl.in
@@ -78,10 +78,7 @@ my $cumul_meta_shared = 0;
my $cumul_meta_indep = 0;
my $first_data_line = 1;
-my $current_rank = 0;
-my $current_hash = 0;
my %file_record_hash = ();
-
my %fs_data = ();
while($line = <PARSE_OUT>)
@@ -133,33 +130,23 @@ while($line = <PARSE_OUT>)
@fields = split(/[\t ]+/, $line);
# encode the file system name to protect against special characters
- $fields[5] = encode('latex', $fields[5]);
+ $fields[6] = encode('latex', $fields[6]);
# is this our first piece of data?
if($first_data_line)
{
- $current_rank = $fields[1];
- $current_hash = $fields[2];
$first_data_line = 0;
}
# is this a new file record?
- if($fields[1] != $current_rank || $fields[2] != $current_hash)
+ if (!defined $file_record_hash{$fields[2]})
{
- # process previous record (if posix or mpiio record)
- if ($fields[0] eq "POSIX" || $fields[0] eq "MPIIO")
- {
- process_file_record($current_rank, $current_hash, \%file_record_hash);
- }
-
- # reset variables for next record
- $current_rank = $fields[1];
- $current_hash = $fields[2];
- %file_record_hash = ();
- $file_record_hash{FILE_NAME} = $fields[5];
+ $file_record_hash{$fields[2]} = ();
+ $file_record_hash{$fields[2]}{FILE_NAME} = $fields[5];
+ $file_record_hash{$fields[2]}{RANK} = $fields[1];
}
- $file_record_hash{$fields[3]} = $fields[4];
+ $file_record_hash{$fields[2]}{$fields[3]} = $fields[4];
$summary{$fields[3]} += $fields[4];
# accumulate independent and shared data as well as fs data
@@ -332,11 +319,9 @@ if ($first_data_line)
exit(1);
}
-# process last file record
-$file_record_hash{FILE_NAME} = $fields[5];
-if ($fields[0] eq "POSIX" || $fields[0] eq "MPIIO")
+foreach $key (keys %file_record_hash)
{
- process_file_record($current_rank, $current_hash, \%file_record_hash);
+ process_file_record($key, \%{$file_record_hash{$key}});
}
# copy template files to tmp tmp_dir
@@ -477,6 +462,7 @@ close PATTERN;
# table of common access sizes
open(ACCESS_TABLE, ">$tmp_dir/access-table.tex") || die("error opening output file:$!\n");
print ACCESS_TABLE "
+\\begin{threeparttable}
\\begin{tabular}{r|r|r}
\\multicolumn{3}{c}{ } \\\\
\\multicolumn{3}{c}{Most Common Access Sizes} \\\\
@@ -546,7 +532,7 @@ if ($tmp_access_count > 0)
if ($i == 0) {
print ACCESS_TABLE "
\\hline
- \\multirow{$tmp_access_count}{*}{MPI-IO \\textdagger} \& $value \& $mpiio_access_hash{$value} \\\\\n
+ \\multirow{$tmp_access_count}{*}{MPI-IO \\textbf{\\ddag}} \& $value \& $mpiio_access_hash{$value} \\\\\n
";
}
else {
@@ -562,197 +548,202 @@ print ACCESS_TABLE "
\\hline
\\end{tabular}
";
+if ($tmp_access_count > 0)
+{
+ print ACCESS_TABLE "
+ \\begin{tablenotes}
+ \\item[\\normalsize \\textbf{\\ddag}] \\scriptsize NOTE: MPI-IO accesses are given in terms of aggregate datatype size.
+ \\end{tablenotes}
+ ";
+}
+print ACCESS_TABLE "
+\\end{threeparttable}
+";
close ACCESS_TABLE;
# file count table
-#open(TABLES, ">$tmp_dir/file-count-table.tex") || die("error opening output file:$!\n");
-#print TABLES "
-#\\begin{tabular}{r|r|r|r}
-#\\multicolumn{4}{c}{ } \\\\
-#\\multicolumn{4}{c}{File Count Summary} \\\\
-#";
-#if($size_est_flag == 1)
-#{
-#print TABLES "
-#\\multicolumn{4}{c}{(estimated by I/O access offsets)} \\\\
-#";
-#}
-#print TABLES "
-#\\hline
-#type \& number of files \& avg. size \& max size \\\\
-#\\hline
-#\\hline
-#";
-#my $counter;
-#my $sum;
-#my $max;
-#my $key;
-#my $avg;
-#
-#$counter = 0;
-#$sum = 0;
-#$max = 0;
-#foreach $key (keys %hash_files) {
-# $counter++;
-# if($hash_files{$key}{'min_open_size'} >
-# $hash_files{$key}{'max_size'})
-# {
-# $sum += $hash_files{$key}{'min_open_size'};
-# if($hash_files{$key}{'min_open_size'} > $max)
-# {
-# $max = $hash_files{$key}{'min_open_size'};
-# }
-# }
-# else
-# {
-# $sum += $hash_files{$key}{'max_size'};
-# if($hash_files{$key}{'max_size'} > $max)
-# {
-# $max = $hash_files{$key}{'max_size'};
-# }
-# }
-#}
-#if($counter > 0) { $avg = $sum / $counter; }
-#else { $avg = 0; }
-#$avg = format_bytes($avg);
-#$max = format_bytes($max);
-#print TABLES "total opened \& $counter \& $avg \& $max \\\\\n";
-#
-#$counter = 0;
-#$sum = 0;
-#$max = 0;
-#foreach $key (keys %hash_files) {
-# if($hash_files{$key}{'was_read'} && !($hash_files{$key}{'was_written'}))
-# {
-# $counter++;
-# if($hash_files{$key}{'min_open_size'} >
-# $hash_files{$key}{'max_size'})
-# {
-# $sum += $hash_files{$key}{'min_open_size'};
-# if($hash_files{$key}{'min_open_size'} > $max)
-# {
-# $max = $hash_files{$key}{'min_open_size'};
-# }
-# }
-# else
-# {
-# $sum += $hash_files{$key}{'max_size'};
-# if($hash_files{$key}{'max_size'} > $max)
-# {
-# $max = $hash_files{$key}{'max_size'};
-# }
-# }
-# }
-#}
-#if($counter > 0) { $avg = $sum / $counter; }
-#else { $avg = 0; }
-#$avg = format_bytes($avg);
-#$max = format_bytes($max);
-#print TABLES "read-only files \& $counter \& $avg \& $max \\\\\n";
-#
-#$counter = 0;
-#$sum = 0;
-#$max = 0;
-#foreach $key (keys %hash_files) {
-# if(!($hash_files{$key}{'was_read'}) && $hash_files{$key}{'was_written'})
-# {
-# $counter++;
-# if($hash_files{$key}{'min_open_size'} >
-# $hash_files{$key}{'max_size'})
-# {
-# $sum += $hash_files{$key}{'min_open_size'};
-# if($hash_files{$key}{'min_open_size'} > $max)
-# {
-# $max = $hash_files{$key}{'min_open_size'};
-# }
-# }
-# else
-# {
-# $sum += $hash_files{$key}{'max_size'};
-# if($hash_files{$key}{'max_size'} > $max)
-# {
-# $max = $hash_files{$key}{'max_size'};
-# }
-# }
-# }
-#}
-#if($counter > 0) { $avg = $sum / $counter; }
-#else { $avg = 0; }
-#$avg = format_bytes($avg);
-#$max = format_bytes($max);
-#print TABLES "write-only files \& $counter \& $avg \& $max \\\\\n";
-#
-#$counter = 0;
-#$sum = 0;
-#$max = 0;
-#foreach $key (keys %hash_files) {
-# if($hash_files{$key}{'was_read'} && $hash_files{$key}{'was_written'})
-# {
-# $counter++;
-# if($hash_files{$key}{'min_open_size'} >
-# $hash_files{$key}{'max_size'})
-# {
-# $sum += $hash_files{$key}{'min_open_size'};
-# if($hash_files{$key}{'min_open_size'} > $max)
-# {
-# $max = $hash_files{$key}{'min_open_size'};
-# }
-# }
-# else
-# {
-# $sum += $hash_files{$key}{'max_size'};
-# if($hash_files{$key}{'max_size'} > $max)
-# {
-# $max = $hash_files{$key}{'max_size'};
-# }
-# }
-# }
-#}
-#if($counter > 0) { $avg = $sum / $counter; }
-#else { $avg = 0; }
-#$avg = format_bytes($avg);
-#$max = format_bytes($max);
-#print TABLES "read/write files \& $counter \& $avg \& $max \\\\\n";
-#
-#$counter = 0;
-#$sum = 0;
-#$max = 0;
-#foreach $key (keys %hash_files) {
-# if($hash_files{$key}{'was_written'} &&
-# $hash_files{$key}{'min_open_size'} == 0 &&
-# $hash_files{$key}{'max_size'} > 0)
-# {
-# $counter++;
-# if($hash_files{$key}{'min_open_size'} >
-# $hash_files{$key}{'max_size'})
-# {
-# $sum += $hash_files{$key}{'min_open_size'};
-# if($hash_files{$key}{'min_open_size'} > $max)
-# {
-# $max = $hash_files{$key}{'min_open_size'};
-# }
-# }
-# else
-# {
-# $sum += $hash_files{$key}{'max_size'};
-# if($hash_files{$key}{'max_size'} > $max)
-# {
-# $max = $hash_files{$key}{'max_size'};
-# }
-# }
-# }
-#}
-#if($counter > 0) { $avg = $sum / $counter; }
-#else { $avg = 0; }
-#$avg = format_bytes($avg);
-#$max = format_bytes($max);
-#print TABLES "created files \& $counter \& $avg \& $max \\\\\n";
-#
-#print TABLES "
-#\\hline
-#\\end{tabular}
-#";
-#close(TABLES);
+open(FILE_CNT_TABLE, ">$tmp_dir/file-count-table.tex") || die("error opening output file:$!\n");
+print FILE_CNT_TABLE "
+\\begin{tabular}{r|r|r|r}
+\\multicolumn{4}{c}{ } \\\\
+\\multicolumn{4}{c}{File Count Summary} \\\\
+\\multicolumn{4}{c}{(estimated by I/O access offsets)} \\\\
+\\hline
+type \& number of files \& avg. size \& max size \\\\
+\\hline
+\\hline
+";
+
+my $counter;
+my $sum;
+my $max;
+my $key;
+my $avg;
+
+$counter = 0;
+$sum = 0;
+$max = 0;
+foreach $key (keys %hash_files) {
+ $counter++;
+ if($hash_files{$key}{'min_open_size'} >
+ $hash_files{$key}{'max_size'})
+ {
+ $sum += $hash_files{$key}{'min_open_size'};
+ if($hash_files{$key}{'min_open_size'} > $max)
+ {
+ $max = $hash_files{$key}{'min_open_size'};
+ }
+ }
+ else
+ {
+ $sum += $hash_files{$key}{'max_size'};
+ if($hash_files{$key}{'max_size'} > $max)
+ {
+ $max = $hash_files{$key}{'max_size'};
+ }
+ }
+}
+if($counter > 0) { $avg = $sum / $counter; }
+else { $avg = 0; }
+$avg = format_bytes($avg);
+$max = format_bytes($max);
+print FILE_CNT_TABLE "total opened \& $counter \& $avg \& $max \\\\\n";
+
+$counter = 0;
+$sum = 0;
+$max = 0;
+foreach $key (keys %hash_files) {
+ if($hash_files{$key}{'was_read'} && !($hash_files{$key}{'was_written'}))
+ {
+ $counter++;
+ if($hash_files{$key}{'min_open_size'} >
+ $hash_files{$key}{'max_size'})
+ {
+ $sum += $hash_files{$key}{'min_open_size'};
+ if($hash_files{$key}{'min_open_size'} > $max)
+ {
+ $max = $hash_files{$key}{'min_open_size'};
+ }
+ }
+ else
+ {
+ $sum += $hash_files{$key}{'max_size'};
+ if($hash_files{$key}{'max_size'} > $max)
+ {
+ $max = $hash_files{$key}{'max_size'};
+ }
+ }
+ }
+}
+if($counter > 0) { $avg = $sum / $counter; }
+else { $avg = 0; }
+$avg = format_bytes($avg);
+$max = format_bytes($max);
+print FILE_CNT_TABLE "read-only files \& $counter \& $avg \& $max \\\\\n";
+
+$counter = 0;
+$sum = 0;
+$max = 0;
+foreach $key (keys %hash_files) {
+ if(!($hash_files{$key}{'was_read'}) && $hash_files{$key}{'was_written'})
+ {
+ $counter++;
+ if($hash_files{$key}{'min_open_size'} >
+ $hash_files{$key}{'max_size'})
+ {
+ $sum += $hash_files{$key}{'min_open_size'};
+ if($hash_files{$key}{'min_open_size'} > $max)
+ {
+ $max = $hash_files{$key}{'min_open_size'};
+ }
+ }
+ else
+ {
+ $sum += $hash_files{$key}{'max_size'};
+ if($hash_files{$key}{'max_size'} > $max)
+ {
+ $max = $hash_files{$key}{'max_size'};
+ }
+ }
+ }
+}
+if($counter > 0) { $avg = $sum / $counter; }
+else { $avg = 0; }
+$avg = format_bytes($avg);
+$max = format_bytes($max);
+print FILE_CNT_TABLE "write-only files \& $counter \& $avg \& $max \\\\\n";
+
+$counter = 0;
+$sum = 0;
+$max = 0;
+foreach $key (keys %hash_files) {
+ if($hash_files{$key}{'was_read'} && $hash_files{$key}{'was_written'})
+ {
+ $counter++;
+ if($hash_files{$key}{'min_open_size'} >
+ $hash_files{$key}{'max_size'})
+ {
+ $sum += $hash_files{$key}{'min_open_size'};
+ if($hash_files{$key}{'min_open_size'} > $max)
+ {
+ $max = $hash_files{$key}{'min_open_size'};
+ }
+ }
+ else
+ {
+ $sum += $hash_files{$key}{'max_size'};
+ if($hash_files{$key}{'max_size'} > $max)
+ {
+ $max = $hash_files{$key}{'max_size'};
+ }
+ }
+ }
+}
+if($counter > 0) { $avg = $sum / $counter; }
+else { $avg = 0; }
+$avg = format_bytes($avg);
+$max = format_bytes($max);
+print FILE_CNT_TABLE "read/write files \& $counter \& $avg \& $max \\\\\n";
+
+$counter = 0;
+$sum = 0;
+$max = 0;
+foreach $key (keys %hash_files) {
+ if($hash_files{$key}{'was_written'} &&
+ $hash_files{$key}{'min_open_size'} == 0 &&
+ $hash_files{$key}{'max_size'} > 0)
+ {
+ $counter++;
+ if($hash_files{$key}{'min_open_size'} >
+ $hash_files{$key}{'max_size'})
+ {
+ $sum += $hash_files{$key}{'min_open_size'};
+ if($hash_files{$key}{'min_open_size'} > $max)
+ {
+ $max = $hash_files{$key}{'min_open_size'};
+ }
+ }
+ else
+ {
+ $sum += $hash_files{$key}{'max_size'};
+ if($hash_files{$key}{'max_size'} > $max)
+ {
+ $max = $hash_files{$key}{'max_size'};
+ }
+ }
+ }
+}
+if($counter > 0) { $avg = $sum / $counter; }
+else { $avg = 0; }
+$avg = format_bytes($avg);
+$max = format_bytes($max);
+print FILE_CNT_TABLE "created files \& $counter \& $avg \& $max \\\\\n";
+
+print FILE_CNT_TABLE "
+\\hline
+\\end{tabular}
+";
+close(FILE_CNT_TABLE);
# generate per filesystem data
open(FS_TABLE, ">$tmp_dir/fs-data-table.tex") || die("error opening output files:$!\n");
@@ -829,7 +820,7 @@ foreach $key (sort { $hash_files{$b}{'slowest_time'} <=> $hash_files{$a}{'slowes
my $vb = sprintf("%.3g", sqrt($hash_files{$key}{'variance_bytes'}));
my $fast_bytes = format_bytes($hash_files{$key}{'fastest_bytes'});
my $slow_bytes = format_bytes($hash_files{$key}{'slowest_bytes'});
- my $name = encode('latex', $hash_files{$key}{'name'});
+ my $name = encode('latex', "..." . substr($hash_files{$key}{'name'}, -12));
print VAR_TABLE "
$name \&
@@ -905,7 +896,7 @@ my $cms = $cumul_meta_shared / $nprocs;
# do any extra work needed for plotting mpi-io graphs
if (defined $summary{MPIIO_INDEP_OPENS})
{
- system "$gnuplot -e \"data_file='mpiio-access-hist.dat'; graph_title='MPI-IO Access Sizes {\262}'; \\
+ system "$gnuplot -e \"data_file='mpiio-access-hist.dat'; graph_title='MPI-IO Access Sizes {/Times-Bold=32 \263}'; \\
output_file='mpiio-access-hist.eps'\" access-hist-eps.gplt";
system "$epstopdf mpiio-access-hist.eps";
@@ -990,9 +981,9 @@ system "$mv $tmp_dir/summary.pdf $output_file";
sub process_file_record
{
- my $rank = $_[0];
- my $hash = $_[1];
- my(%file_record) = %{$_[2]};
+ my $hash = $_[0];
+ my(%file_record) = %{$_[1]};
+ my $rank = $file_record{'RANK'};
if($file_record{'POSIX_OPENS'} == 0 &&
$file_record{'POSIX_FOPENS'} == 0 &&
diff --git a/darshan-util/darshan-job-summary/share/summary.tex b/darshan-util/darshan-job-summary/share/summary.tex
index 1a1572a..81bb690 100644
--- a/darshan-util/darshan-job-summary/share/summary.tex
+++ b/darshan-util/darshan-job-summary/share/summary.tex
@@ -5,6 +5,8 @@
\usepackage{lastpage}
\usepackage{subfigure}
\usepackage{multirow}
+\usepackage{threeparttable}
+
%
% GET THE MARGINS RIGHT, THE UGLY WAY
%
@@ -38,11 +40,11 @@
}\\
\subfigure
{
- \includegraphics[scale=0.8]{time-summary.pdf}
+ \includegraphics[scale=0.75]{time-summary.pdf}
}
\subfigure
{
- \includegraphics[scale=0.8]{op-counts.pdf}
+ \includegraphics[scale=0.75]{op-counts.pdf}
}
\end{figure*}
@@ -50,12 +52,12 @@
\centering
\subfigure
{
- \includegraphics[scale=0.8]{posix-access-hist.pdf}
+ \includegraphics[scale=0.75]{posix-access-hist.pdf}
}
\ifdefined\inclmpiio
\subfigure
{
- \includegraphics[scale=0.8]{mpiio-access-hist.pdf}
+ \includegraphics[scale=0.75]{mpiio-access-hist.pdf}
}
\fi
\end{figure*}
@@ -66,10 +68,10 @@
{
\input{access-table.tex}
}
-%\subfigure
-%{
-% \input{file-count-table}
-%}
+\subfigure
+{
+ \input{file-count-table.tex}
+}
\end{figure*}
\begin{figure*}[!h]
@@ -102,6 +104,10 @@
{
\includegraphics[scale=0.65]{pattern.pdf}
}
+\scriptsize
+\\ \textit{sequential}: An I/O op issued at an offset greater than where the previous I/O op ended.
+\\ \textit{consecutive}: An I/O op issued at the offset immediately following the end of the previous I/O op. \\
+\normalsize
\subfigure
{
\input{variance-table.tex}
diff --git a/darshan-util/darshan-job-summary/share/title.tex b/darshan-util/darshan-job-summary/share/title.tex
index 88343b8..566b3bf 100644
--- a/darshan-util/darshan-job-summary/share/title.tex
+++ b/darshan-util/darshan-job-summary/share/title.tex
@@ -1,3 +1,5 @@
+\renewcommand{\footrulewidth}{0.4pt}
+
\rhead{\thepage\ of \pageref{LastPage}}
\chead[
\large{\titlecmd \space (\titlemon/\titlemday/\titleyear)}
hooks/post-receive
--
More information about the Darshan-commits
mailing list