Skip to content

NMS-19586: Improve enlinkd performance#8343

Open
JSimo wants to merge 1 commit intoOpenNMS:developfrom
JSimo:enlinkd-performance-improvements
Open

NMS-19586: Improve enlinkd performance#8343
JSimo wants to merge 1 commit intoOpenNMS:developfrom
JSimo:enlinkd-performance-improvements

Conversation

@JSimo
Copy link
Contributor

@JSimo JSimo commented Mar 6, 2026

  • Stop CPU spinning by switching the scheduling to be delay based
  • Improve performance for lookup by including an hashmap

Previously enlinkd has been considered an performance heavy feature, it was figured out with the use of flamegraphs that the feature mostly kept 1 CPU core fully loaded with an classic spin loop. This commit targets fixed to fix that.

image

All Contributors

Contribution Checklist

  • Please make an issue in the OpenNMS issue tracker if there isn't one already.
    Once there is an issue, please:
    1. update the title of this PR to be in the format: ${JIRA-ISSUE-NUMBER}: subject of pull request
    2. update the Jira link at the bottom of this comment to refer to the real issue number
    3. prefix your commit messages with the issue number, if possible
    4. once you've created this PR, please link to it in a comment in the Jira issue
      Don't worry if this sounds like a lot, we can help you get things set up properly.
  • If this code is likely to affect the UI, did you name your branch with -smoke in it to trigger smoke tests?
  • If this is a new or updated feature, is there documentation for the new behavior?
  • If this is new code, are there unit and/or integration tests?
  • If this PR targets a foundation-* branch, does it try to avoid changing files in $OPENNMS_HOME/etc/?

What's Next?

A PR should be assigned at least 2 reviewers. If you know that someone would be a good person to review your code, feel free to add them.

If you need help making additions or changes to the documentation related to your changes, please let us know.

In any case, if anything is unclear or you want help getting your PR ready for merge, please don't hesitate to say something in the comments here,
or in the #opennms-development chat channel.

Once reviewer(s) accept the PR and the branch passes continuous integration, the PR is eligible for merge.

At that time, if you have commit access (are an OpenNMS Group employee or a member of the OGP) you are welcome to merge the PR when you're ready.
Otherwise, a reviewer can merge it for you.

Thanks for taking time to contribute!

External References

- Stop CPU spinning by switching the scheduling to be delay based
- Improve performance for lookup by including an hashmap

Previously enlinkd has been considered an performance heavy feature,
it was figured out with the use of flamegraphs that the feature
mostly kept 1 CPU core fully loaded with an classic spin loop. This
commit targets fixed to fix that.

Co-authored-by: WilssoN93 <wilsson93@users.noreply.github.com>
Co-authored-by: JSimo <jsimo@users.noreply.github.com>
@rssntn67
Copy link
Contributor

rssntn67 commented Mar 6, 2026

This PR looks good for me.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants