Skip to content

Negative utilization in eventLoopUtilization for worker_threads #40525

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

  1. tshemsedinov commented on Oct 19, 2021

    @tshemsedinov
    ContributorAuthor

    Refs: #35664
    Refs: #37134

    FYI: @trevnorris and @addaleax

  2. added
    perf_hooksIssues and PRs related to the perf_hooks module and performance measurement APIs.
    workerIssues and PRs related to the worker_threads module and Worker API.
    on Oct 19, 2021
  3. trevnorris commented on Oct 26, 2021

    @trevnorris
    Contributor

    Thanks. I'll give it a look.

  4. github-actions commented on Jun 26, 2026

    @github-actions
    Contributor

    This issue has been marked as stale due to 210 days of inactivity.
    It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.

  5. added
    staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.
    on Jun 26, 2026
  6. github-actions commented on Jul 27, 2026

    @github-actions
    Contributor

    This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 120 days).
    If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.

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 perf_hooks module and performance measurement APIs.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.workerIssues and PRs related to the worker_threads module and Worker API.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions