Skip to content

Commit

Permalink
Add support for Telemetry.general-jobs
Browse files Browse the repository at this point in the history
- the number of jobs waiting for handling by general-workers
  • Loading branch information
lizmat committed Oct 31, 2017
1 parent 8a0eb7f commit bc00894
Showing 1 changed file with 29 additions and 2 deletions.
31 changes: 29 additions & 2 deletions lib/Telemetry.pm6
Expand Up @@ -10,6 +10,7 @@ class Telemetry {
has int $!wallclock;
has int $!supervisor;
has int $!general-workers;
has int $!general-jobs;
has int $!timer-workers;
has int $!affinity-workers;

Expand All @@ -32,6 +33,10 @@ class Telemetry {
-> \workers {
$!general-workers = nqp::elems(workers);
}
if nqp::getattr($scheduler,ThreadPoolScheduler,'$!general-queue')
-> \queue {
$!general-jobs = nqp::elems(queue);
}
if nqp::getattr($scheduler,ThreadPoolScheduler,'$!timer-workers')
-> \workers {
$!timer-workers = nqp::elems(workers);
Expand Down Expand Up @@ -98,6 +103,17 @@ class Telemetry {
}
multi method general-workers(Telemetry:D:) { $!general-workers }

proto method general-jobs() { * }
multi method general-jobs(Telemetry:U:) {
nqp::if(
nqp::istrue((my $queue := nqp::getattr(
nqp::decont($*SCHEDULER),ThreadPoolScheduler,'$!general-queue'
))),
nqp::elems($queue)
)
}
multi method general-jobs(Telemetry:D:) { $!general-jobs }

proto method timer-workers() { * }
multi method timer-workers(Telemetry:U:) {
nqp::if(
Expand Down Expand Up @@ -135,12 +151,15 @@ class Telemetry::Period is Telemetry {
int :$wallclock,
int :$supervisor,
int :$general-workers,
int :$general-jobs,
int :$timer-workers,
int :$affinity-workers,
) {
self.new(
$cpu-user, $cpu-sys, $wallclock,
$supervisor, $general-workers, $timer-workers, $affinity-workers
$cpu-user, $cpu-sys, $wallclock, $supervisor,
$general-workers, $general-jobs,
$timer-workers,
$affinity-workers
)
}
multi method new(Telemetry::Period:
Expand All @@ -149,6 +168,7 @@ class Telemetry::Period is Telemetry {
int $wallclock,
int $supervisor,
int $general-workers,
int $general-jobs,
int $timer-workers,
int $affinity-workers,
) {
Expand All @@ -158,6 +178,7 @@ class Telemetry::Period is Telemetry {
nqp::bindattr_i($period,Telemetry,'$!wallclock', $wallclock);
nqp::bindattr_i($period,Telemetry,'$!supervisor', $supervisor);
nqp::bindattr_i($period,Telemetry,'$!general-workers',$general-workers);
nqp::bindattr_i($period,Telemetry,'$!general-jobs', $general-jobs);
nqp::bindattr_i($period,Telemetry,'$!timer-workers', $timer-workers);
nqp::bindattr_i($period,Telemetry,'$!affinity-workers',$affinity-workers);
$period
Expand All @@ -174,6 +195,8 @@ class Telemetry::Period is Telemetry {
nqp::getattr_i(self,Telemetry,'$!supervisor')
}), :general-workers({
nqp::getattr_i(self,Telemetry,'$!general-workers')
}), :general-jobs({
nqp::getattr_i(self,Telemetry,'$!general-jobs')
}), :timer-workers({
nqp::getattr_i(self,Telemetry,'$!timer-workers')
}), :affinity-workers({
Expand Down Expand Up @@ -219,6 +242,10 @@ multi sub infix:<->(Telemetry:D $a, Telemetry:D $b) is export {
nqp::getattr_i(nqp::decont($a),Telemetry,'$!general-workers'),
nqp::getattr_i(nqp::decont($b),Telemetry,'$!general-workers')
),
nqp::sub_i(
nqp::getattr_i(nqp::decont($a),Telemetry,'$!general-jobs'),
nqp::getattr_i(nqp::decont($b),Telemetry,'$!general-jobs')
),
nqp::sub_i(
nqp::getattr_i(nqp::decont($a),Telemetry,'$!timer-workers'),
nqp::getattr_i(nqp::decont($b),Telemetry,'$!timer-workers')
Expand Down

0 comments on commit bc00894

Please sign in to comment.