-
-
Save anonymous/8cb045a84edb3fb74aa8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ perl -Irepo/minion/lib minion_bench.pl | |
Clean start with 10000 jobs | |
Enqueued 10000 jobs in 4.14251303672791 seconds (2413.994/s) | |
85025 has started 4 workers | |
85030 will finish 1000 jobs | |
85031 will finish 1000 jobs | |
85033 will finish 1000 jobs | |
85032 will finish 1000 jobs | |
85033 finished 1000 jobs in 1.52169513702393 seconds (657.162/s) | |
85032 finished 1000 jobs in 1.52468419075012 seconds (655.874/s) | |
85030 finished 1000 jobs in 1.52593517303467 seconds (655.336/s) | |
85031 finished 1000 jobs in 1.52984499931335 seconds (653.661/s) | |
4 workers finished 1000 jobs each in 1.55294394493103 seconds (2575.753/s) | |
85025 has started 4 workers | |
85040 will finish 1000 jobs | |
85038 will finish 1000 jobs | |
85039 will finish 1000 jobs | |
85041 will finish 1000 jobs | |
85040 finished 1000 jobs in 1.58918619155884 seconds (629.253/s) | |
85038 finished 1000 jobs in 1.58949017524719 seconds (629.133/s) | |
85041 finished 1000 jobs in 1.59609603881836 seconds (626.529/s) | |
85039 finished 1000 jobs in 1.60254907608032 seconds (624.006/s) | |
4 workers finished 1000 jobs each in 1.62194681167603 seconds (2466.172/s) | |
Requesting stats 100 times | |
Received stats 100 times in 0.388854026794434 seconds (257.166/s) | |
Repairing 100 times | |
Repaired 100 times in 0.580440998077393 seconds (172.283/s) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use Mojo::Base -strict; | |
use Minion; | |
use Time::HiRes 'time'; | |
my $ENQUEUE = 10000; | |
my $DEQUEUE = 1000; | |
my $REPETITIONS = 2; | |
my $WORKERS = 4; | |
my $STATS = 100; | |
my $REPAIR = 100; | |
my $minion = Minion->new(Pg => 'postgresql://tester:testing@/test'); | |
$minion->add_task(foo => sub { }); | |
$minion->add_task(bar => sub { }); | |
$minion->reset; | |
# Enqueue | |
say "Clean start with $ENQUEUE jobs"; | |
my $before = time; | |
$minion->enqueue($_ % 2 ? 'foo' : 'bar') for 1 .. $ENQUEUE; | |
my $elapsed = time - $before; | |
my $avg = sprintf '%.3f', $ENQUEUE / $elapsed; | |
say "Enqueued $ENQUEUE jobs in $elapsed seconds ($avg/s)"; | |
# Dequeue | |
sub dequeue { | |
my @pids; | |
for (1 .. $WORKERS) { | |
die "Couldn't fork: $!" unless defined(my $pid = fork); | |
unless ($pid) { | |
my $worker = $minion->worker->register; | |
say "$$ will finish $DEQUEUE jobs"; | |
my $before = time; | |
$worker->dequeue(0.5)->finish for 1 .. $DEQUEUE; | |
my $elapsed = time - $before; | |
my $avg = sprintf '%.3f', $DEQUEUE / $elapsed; | |
say "$$ finished $DEQUEUE jobs in $elapsed seconds ($avg/s)"; | |
$worker->unregister; | |
exit; | |
} | |
push @pids, $pid; | |
} | |
say "$$ has started $WORKERS workers"; | |
my $before = time; | |
waitpid $_, 0 for @pids; | |
my $elapsed = time - $before; | |
my $avg = sprintf '%.3f', ($DEQUEUE * $WORKERS) / $elapsed; | |
say | |
"$WORKERS workers finished $DEQUEUE jobs each in $elapsed seconds ($avg/s)"; | |
} | |
dequeue() for 1 .. $REPETITIONS; | |
# Stats | |
say "Requesting stats $STATS times"; | |
$before = time; | |
$minion->stats for 1 .. $STATS; | |
$elapsed = time - $before; | |
$avg = sprintf '%.3f', $STATS / $elapsed; | |
say "Received stats $STATS times in $elapsed seconds ($avg/s)"; | |
# Repair | |
say "Repairing $REPAIR times"; | |
$before = time; | |
$minion->repair for 1 .. $REPAIR; | |
$elapsed = time - $before; | |
$avg = sprintf '%.3f', $REPAIR / $elapsed; | |
say "Repaired $REPAIR times in $elapsed seconds ($avg/s)"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment