Skip to content

Commit

Permalink
add stats about input/output sizes
Browse files Browse the repository at this point in the history
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
  • Loading branch information
julien-nc committed Jul 22, 2024
1 parent 5c8bbd9 commit 2076e99
Showing 1 changed file with 47 additions and 6 deletions.
53 changes: 47 additions & 6 deletions core/Command/TaskProcessing/Statistics.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$maxUserWaitingTime = 0;
$totalUserWaitingTime = 0;
$userWaitingTimeCount = 0;

$maxInputSize = 0;
$maxOutputSize = 0;
$inputCount = 0;
$inputSum = 0;
$outputCount = 0;
$outputSum = 0;

foreach ($tasks as $task) {
// running time
if ($task->getStartedAt() !== null && $task->getEndedAt() !== null) {
Expand Down Expand Up @@ -118,26 +126,59 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$maxUserWaitingTime = $taskUserWaitingTime;
}
}
// input/output sizes
if ($task->getStatus() === Task::STATUS_SUCCESSFUL) {
$outputString = json_encode($task->getOutput());
if ($outputString !== false) {
$outputCount++;
$outputLength = strlen($outputString);
$outputSum += $outputLength;
if ($outputLength > $maxOutputSize) {
$maxOutputSize = $outputLength;
}
}
}
$inputString = json_encode($task->getInput());
if ($inputString !== false) {
$inputCount++;
$inputLength = strlen($inputString);
$inputSum += $inputLength;
if ($inputLength > $maxInputSize) {
$maxInputSize = $inputLength;
}
}
}

if ($runningTimeCount > 0) {
$stats['Max running time'] = $maxRunningTime;
$averageRunningTime = (int)($totalRunningTime / $runningTimeCount);
$stats['Average running time'] = $averageRunningTime;
$averageRunningTime = $totalRunningTime / $runningTimeCount;
$stats['Average running time'] = (int)$averageRunningTime;
$stats['Running time count'] = $runningTimeCount;
}
if ($queuingTimeCount > 0) {
$stats['Max queuing time'] = $maxQueuingTime;
$averageQueuingTime = (int)($totalQueuingTime / $queuingTimeCount);
$stats['Average queuing time'] = $averageQueuingTime;
$averageQueuingTime = $totalQueuingTime / $queuingTimeCount;
$stats['Average queuing time'] = (int)$averageQueuingTime;
$stats['Queuing time count'] = $queuingTimeCount;
}
if ($userWaitingTimeCount > 0) {
$stats['Max user waiting time'] = $maxUserWaitingTime;
$averageUserWaitingTime = (int)($totalUserWaitingTime / $userWaitingTimeCount);
$stats['Average user waiting time'] = $averageUserWaitingTime;
$averageUserWaitingTime = $totalUserWaitingTime / $userWaitingTimeCount;
$stats['Average user waiting time'] = (int)$averageUserWaitingTime;
$stats['User waiting time count'] = $userWaitingTimeCount;
}
if ($outputCount > 0) {
$stats['Max output size (bytes)'] = $maxOutputSize;
$averageOutputSize = $outputSum / $outputCount;
$stats['Average output size (bytes)'] = (int)$averageOutputSize;
$stats['Number of tasks with output'] = $outputCount;
}
if ($inputCount > 0) {
$stats['Max input size (bytes)'] = $maxInputSize;
$averageInputSize = $inputSum / $inputCount;
$stats['Average input size (bytes)'] = (int)$averageInputSize;
$stats['Number of tasks with input'] = $inputCount;
}

$this->writeArrayInOutputFormat($input, $output, $stats);
return 0;
Expand Down

0 comments on commit 2076e99

Please sign in to comment.