diff --git a/scan.pl b/scan.pl
index 6214efe..1005756 100755
--- a/scan.pl
+++ b/scan.pl
@@ -21,6 +21,44 @@
# number of entries to store in the "full range" LTTB CSV file
my $numlttb = 100;
+# generate grouped pages with a set of graphs
+my %groups = (
+ 'h1parallel-speed' => 'http1,speed',
+ 'h1parallel-mem' => 'http1,mem',
+ 'h1parallel-cpu' => 'http1,cpu',
+ 'h1parallel-upload-speed' => 'http1,speed',
+ 'h1parallel-upload-mem' => 'http1,mem',
+ 'h1parallel-upload-cpu' => 'http1,cpu',
+ 'h1-requests' => 'http1,parallel',
+ 'h1-req-mem' => 'http1,mem',
+ 'h1-req-cpu"' => 'http1,cpu',
+
+ 'h2parallel-speed' => 'http2,speed',
+ 'h2parallel-mem' => 'http2,mem',
+ 'h2parallel-cpu' => 'http2,cpu',
+ 'h2parallel-upload-speed' => 'http2,speed',
+ 'h2parallel-upload-mem' => 'http2,mem',
+ 'h2parallel-upload-cpu' => 'http2,cpu',
+ 'h2-requests' => 'http2,parallel',
+ 'h2-req-mem' => 'http2,mem',
+ 'h2-req-cpu"' => 'http2,cpu',
+
+ 'h3parallel-speed' => 'http3,speed',
+ 'h3parallel-mem' => 'http3,mem',
+ 'h3parallel-cpu' => 'http3,cpu',
+ 'h3parallel-upload-speed' => 'http3,speed',
+ 'h3parallel-upload-mem' => 'http3,mem',
+ 'h3parallel-upload-cpu' => 'http3,cpu',
+ 'h3-requests' => 'http3,parallel',
+ 'h3-req-mem' => 'http3,mem',
+ 'h3-req-cpu"' => 'http3,cpu',
+
+ 'snprintf' => 'printf',
+ 'maprintf' => 'printf',
+ 'simplef' => 'printf',
+ );
+
+
opendir(my $dh, $logdir) || die "Can't open dir: $!";
my @logs = grep { /^perf.*\.log/ && -f "$logdir/$_" } readdir($dh);
closedir $dh;
@@ -634,6 +672,18 @@ sub show {
$f, scalar(@o) - 1;
push @out, "\n";
+ my $gname = $groups{$filename};
+ if($gname) {
+ # add this to the group displays
+ my @a = split(/,/, $gname);
+ for my $g (@a) {
+ open(F, ">>$outdir/$g.html");
+ print F "