Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Any plans/thoughts about monitoring event loop performance #131

Closed
zimbabao opened this issue Dec 12, 2017 · 12 comments
Closed

Any plans/thoughts about monitoring event loop performance #131

zimbabao opened this issue Dec 12, 2017 · 12 comments

Comments

@zimbabao
Copy link

Event loop performance metrics like

  1. time for iteration
  2. size of the queue during each phases.
  3. statistics on these numbers (percentiles, SD etc)

Can be helpful just like GC numbers dumped by V8 VM.

Any thoughts for or against this?.

@jkrems
Copy link
Contributor

jkrems commented Dec 12, 2017

@zimbabao
Copy link
Author

Thanks @jkrems, I'm interested in monitoring event loop.

  1. To keep tab on event loop stalls
  2. Attribute latency to event loop stalls

@danielkhan
Copy link
Contributor

Have a look at my blog post: https://medium.com/the-node-js-collection/what-you-should-know-to-really-understand-the-node-js-event-loop-and-its-metrics-c4907b19da4c

I am covering some metrics that can be easily gathered there.

@naugtur
Copy link
Contributor

naugtur commented Dec 14, 2017

This might be useful:
https://github.com/naugtur/blocked-at

Disclaimer: I'm the author and blocked-at is still considered experimental (but seems to work)

@mcollina
Copy link
Member

I know that @jasnell looked extensively in it, and it seemed it could not be possible without a breaking change in libuv, which I don't think the team was willing to do.

@jasnell
Copy link
Member

jasnell commented Dec 15, 2017

Still intending to work on this, but it definitely will be libuv2

@bnb
Copy link

bnb commented Dec 18, 2017

We currently do this with N|Solid and from my understanding it's... not easy. I've looked into the existing ecosystem tooling and it kinda reflects that, unfortunately. 😞

@Fishrock123 and @cxreg did a ton of work on it and may be able to share their experience with it.

@bnoordhuis
Copy link
Member

time for iteration

Can already be done with a uv_check_t + uv_prepare_t.

size of the queue during each phase

Can you specify "queue" and "phase" a bit more?

@Fishrock123
Copy link
Contributor

Yeah we pretty much do this stuff in N|Solid already, and also event loop "stall" notifications.


size of the queue during each phase

Can you specify "queue" and "phase" a bit more?

Probably one of the things we do: essentially the number of MakeCallbacks per loop.

@zimbabao
Copy link
Author

@bnoordhuis : By phases I'm referring to phases to https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/. By queues I meant macro task queues in that phase and micro task queue in process.tick().

@Fishrock123 : That's what I meant.

@gireeshpunathil
Copy link
Member

should this remain open? [ I am trying to chase dormant issues to closure ]

@jasnell
Copy link
Member

jasnell commented Oct 25, 2019

I've abandoned the effort to get something into libuv as I just could not get feedback or any positive momentum from the maintainers. I've added loop delay sampling to node.js itself so I think we can close this

@jasnell jasnell closed this as completed Oct 25, 2019
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

No branches or pull requests

10 participants