> On Aug 23, 2017, at 16:15, Pau Freixes <[email protected]> wrote:
> 
> Hi,
> 
> Im trying to push [1] for some changes in the CPython Asyncio core [1] to 
> publish a new method called load that would inform about how many resources 
> are used or how many of them are left. The idea behind this new method its 
> pretty easy and can be summarized as: A load of an asynchronous loop can be 
> at some point easily inferred using the sleeping time vs the overall time, 
> this information brings us to understand how to saturate is the loop with a 
> metric that informs you how many CPU resources are being used or most 
> important how many CPU resources left. 
> 
> This metric can have many purposes, but the original idea was conceived to 
> allow the developer to apply some back pressure mechanisms at the application 
> layer. Having the info of how much resources you have or are still pending to 
> be used give you the chance to answer a key question: could I face the 
> ongoing request? The concept is not new and it's well described in this blog 
> posts [3] [4] , indeed there is an implementation in NodeJS called `toobusy` 
> that gets this metric implicitly using the lag of the callbacks [5].
> 
> What I would like is continue with the work done and not finished - we will 
> see how it evolves - within the libuv. Having a new method called 
> `uv_loop_load` that will give you a float value between 0.0 and 1.0 that will 
> inform the user the load of the loop. The way to calculate this load is based 
> on the percentage of sleeping time vs the overall time, more info about the 
> algorithm here [6]
> 
> Before start on working with the code I would like to receive your feedback, 
> first impressions and if this change might be aligned with the maintainers one
> 
> 
> [1] https://mail.python.org/pipermail/async-sig/2017-August/000382.html
> [2] 
> https://github.com/pfreixes/cpython/commit/ac07fef5af51746c7311494f21b0f067c772a2bf
> [3] https://dzone.com/articles/applying-back-pressure-when
> [4] http://engineering.voxer.com/2013/09/16/backpressure-in-nodejs/
> [5] https://github.com/lloyd/node-toobusy
> [6] 
> https://github.com/pfreixes/cpython/commit/ac07fef5af51746c7311494f21b0f067c772a2bf#diff-08afa52ab2b1511bee8527814ad44d80R1457
> 

Hi Pau,

I think your idea is interesting, and maybe can be implemented on top of 
something like this: https://github.com/libuv/libuv/pull/1489 So (at a back of 
a napkin design level) libuv would provide with some metrics on top of which 
you can compute the load in userland.

Or maybe there is benefit in having it baked in, I’m personally open to that 
too. I’d appreciate if you chime in into that issue and tell James (I don’t 
think he reads this mailing list) about your ideas and refine his proposal to 
better cater for your use case.


Cheers,

--
Saúl

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to