mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-09-06 05:31:44 +00:00
Merge pull request #613 from avar/more-perl-tests-and-benchmarks
More perl tests and benchmarks
This commit is contained in:
@@ -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
|
||||
@@ -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" ],
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user