tools/http_load/merge_stats.pl (52 lines of code) (raw):

#!/usr/bin/perl # A brief file description # # @section license License # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. my $runs = 0; my $fetches = 0; my $conns = 0; my $parallel = 0; my $bytes = 0; my $seconds = 0; my $mean_bytes = 0; my $fetches_sec = 0.0; my $bytes_sec = 0.0; my %msecs_connect = ( "mean" => 0.0, "max" => 0.0, "min" => 0.0 ); my %msecs_response = ( "mean" => 0.0, "max" => 0.0, "min" => 0.0 ); while (<>) { my @c = split(); if (/fetches on/) { $fetches += $c[0]; $conns += $c[3]; $parallel += $c[5]; $bytes += $c[8]; $seconds += $c[11]; $runs++; } elsif (/mean bytes/) { $mean_bytes += $c[0]; } elsif (/fetches\/sec/) { $fetches_sec += $c[0]; $bytes_sec += $c[2]; } elsif (/msecs\/connect/) { $msecs_connect{"mean"} += $c[1]; $msecs_connect{"max"} += $c[3]; $msecs_connect{"min"} += $c[5]; } elsif (/msecs\/first/) { $msecs_response{"mean"} += $c[1]; $msecs_response{"max"} += $c[3]; $msecs_response{"min"} += $c[5]; } } print "Total runs: ", $runs, "\n"; printf "%d fetches on %d conns, %d max parallel, %.5e bytes in %d seconds\n", $fetches, $conns, $parallel, $bytes, $seconds / $runs; print $mean_bytes/ $runs, " mean bytes/fetch\n"; printf "%.2f fetches/sec, %.5e bytes/sec\n", $fetches_sec, $bytes_sec; print "msecs/connect: ", $msecs_connect{"mean"} / $runs, " mean, ", $msecs_connect{"max"} / $runs, " max, ", $msecs_connect{"min"} / $runs, " min\n"; print "msecs/first-response: ", $msecs_response{"mean"} / $runs, " mean, ", $msecs_response{"max"} / $runs, " max, ", $msecs_response{"min"} / $runs, " min\n";