+ private updateWaitTimeTasksUsage (
+ workerTasksUsage: TasksUsage,
+ message: MessageValue<Response>
+ ): void {
+ if (this.workerChoiceStrategyContext.getTaskStatistics().waitTime) {
+ workerTasksUsage.waitTime += message.waitTime ?? 0
+ if (
+ this.workerChoiceStrategyContext.getTaskStatistics().avgWaitTime &&
+ workerTasksUsage.ran !== 0
+ ) {
+ workerTasksUsage.avgWaitTime =
+ workerTasksUsage.waitTime / workerTasksUsage.ran
+ }
+ if (
+ this.workerChoiceStrategyContext.getTaskStatistics().medWaitTime &&
+ message.waitTime != null
+ ) {
+ workerTasksUsage.waitTimeHistory.push(message.waitTime)
+ workerTasksUsage.medWaitTime = median(workerTasksUsage.waitTimeHistory)
+ }
+ }
+ }
+
+ private updateEluTasksUsage (
+ workerTasksUsage: TasksUsage,
+ message: MessageValue<Response>
+ ): void {
+ if (this.workerChoiceStrategyContext.getTaskStatistics().elu) {
+ if (workerTasksUsage.elu != null && message.elu != null) {
+ workerTasksUsage.elu = {
+ idle: workerTasksUsage.elu.idle + message.elu.idle,
+ active: workerTasksUsage.elu.active + message.elu.active,
+ utilization:
+ (workerTasksUsage.elu.utilization + message.elu.utilization) / 2
+ }
+ } else if (message.elu != null) {
+ workerTasksUsage.elu = message.elu
+ }
+ }
+ }
+