Merge pull request #613 from avar/more-perl-tests-and-benchmarks

More perl tests and benchmarks
This commit is contained in:
unbit
2014-05-01 06:12:05 +02:00
2 changed files with 78 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
use v5.10.0;
use strict;
use warnings;
use Time::HiRes qw(sleep);
use autodie qw(:all);
my $psgi = $ARGV[0] || 't/perl/test_hello.psgi';
for my $use_thunder_lock (0,1) {
for my $cpu_multiplier (1,2,4,8,16,32,64) {
my $procs = 16 * $cpu_multiplier;
my $desc = sprintf "%3d procs %2s/TL", $procs, ($use_thunder_lock ? "w" : "wo");
my $tl_cl = $use_thunder_lock ? "--thunder-lock --lock-engine ipcsem --ftok $psgi" : "";
#say STDERR "Now testing $desc";
system q[for p in $(ps auxf|grep uwsgi.*--disable-logging|grep -v grep|awk '{print $2}'); do kill $p; done];
system qq[./uwsgi --http 127.0.0.1:8080 --processes $procs --psgi $psgi --disable-logging $tl_cl >/dev/null 2>&1 &];
sleep 0.5;
chomp(my $ab = qx[http_proxy= ab -n 10000 -c 32 http://localhost:8080/ 2>&1]);
my ($seconds) = $ab =~ m[Time taken for tests:\s+([0-9.]+) seconds];
say STDERR "$seconds\t$desc";
system q[for p in $(ps auxf|grep uwsgi.*--disable-logging|grep -v grep|awk '{print $2}'); do kill $p; done];
sleep 0.5;
}
}
__END__
$ perl t/perl/test_benchmark.pl t/perl/test_sleepy.psgi
7.128 16 procs wo/TL
3.547 32 procs wo/TL
2.038 64 procs wo/TL
2.880 128 procs wo/TL
4.578 256 procs wo/TL
8.199 512 procs wo/TL
13.379 1024 procs wo/TL
7.123 16 procs w/TL
3.559 32 procs w/TL
2.036 64 procs w/TL
1.972 128 procs w/TL
2.026 256 procs w/TL
2.172 512 procs w/TL
2.412 1024 procs w/TL
$ perl t/perl/test_benchmark.pl t/perl/test_hello.psgi
1.392 16 procs wo/TL
1.743 32 procs wo/TL
2.374 64 procs wo/TL
3.530 128 procs wo/TL
4.984 256 procs wo/TL
8.258 512 procs wo/TL
9.343 1024 procs wo/TL
1.134 16 procs w/TL
1.284 32 procs w/TL
1.152 64 procs w/TL
1.084 128 procs w/TL
1.286 256 procs w/TL
1.559 512 procs w/TL
1.537 1024 procs w/TL
+20
View File
@@ -0,0 +1,20 @@
use strict;
use warnings;
use Time::HiRes qw(usleep);
sub {
my $env = shift;
die "PANIC: We are expecting to support psgix.cleanup" unless $env->{'psgix.cleanup'};
my $msleep = 2 * 1000 + int rand 7 * 1000; # 2..10ms
my $csleep = 2 * 1000 + int rand 7 * 1000; # 2..10ms
push @{$env->{'psgix.cleanup.handlers'}} => sub { usleep($csleep) };
usleep($msleep);
return [
200,
[],
[ "Responding. Slept $msleep us in the main phase, sleeping $csleep us in the cleanup phase" ],
];
}