Skip to content

Negative utilization in eventLoopUtilization for worker_threads #40525

Open
@tshemsedinov

Description

@tshemsedinov

Version

v14.18.1, v15.14.0, v16.11.1, v17.0.0-pre (as of 16 Oct `21)

Platform

Linux marcus 5.13.19-200.fc34.x86_64 #1 SMP Sat Sep 18 16:32:24 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Subsystem

worker_threads

What steps will reproduce the bug?

Repository with example: https://github.com/tshemsedinov/wtu

How often does it reproduce? Is there a required condition?

If worker event loop is empty in delta calculation period.

What is the expected behavior?

Delta fields active and utilization are expected to be positive, utilization expected to be [0..1].

What do you see instead?

Negative values in ~50% cases. But if you add setInterval with empty handler for minimum eventloop load, utilization will be always between 0 and 1.

Additional information

I know that it is a stable API but it would be better in far future:

  • I'd propose to reduce time between loopIdleTime() call and now() in lower level, but my experiments in this field is not successful, still getting negative utilization.
  • To decompose this function to respect separation of concerns into performance.eventLoopUsage(): EventLoopUsage and performance.eventLoopUtilization(usage1, usage2): EventLoopUtilization.
  • Now we have 6 places to calculate proportion (for utilization), 3 in internal/worker.js and 3 in internal/perf/event_loop_utilization.js.

Activity

tshemsedinov

tshemsedinov commented on Oct 19, 2021

@tshemsedinov
ContributorAuthor

Refs: #35664
Refs: #37134

FYI: @trevnorris and @addaleax

added
perf_hooksIssues and PRs related to the implementation of the Performance Timing API.
workerIssues and PRs related to Worker support.
on Oct 19, 2021
trevnorris

trevnorris commented on Oct 26, 2021

@trevnorris
Contributor

Thanks. I'll give it a look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    perf_hooksIssues and PRs related to the implementation of the Performance Timing API.workerIssues and PRs related to Worker support.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

      Participants

      @trevnorris@tshemsedinov@Mesteery

      Issue actions

        Negative utilization in eventLoopUtilization for worker_threads · Issue #40525 · nodejs/node