Thanks Saul,

Definitely this feature can be built on top of that PR, I'm just
missing one statistic. I will jump to the PR to propose a small
change.



On Fri, Aug 25, 2017 at 10:16 AM, Saúl Ibarra Corretgé <sag...@gmail.com> wrote:
>
>> On Aug 23, 2017, at 16:15, Pau Freixes <pfrei...@gmail.com> 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 libuv+unsubscr...@googlegroups.com.
> To post to this group, send email to libuv@googlegroups.com.
> Visit this group at https://groups.google.com/group/libuv.
> For more options, visit https://groups.google.com/d/optout.



-- 
--pau

-- 
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 libuv+unsubscr...@googlegroups.com.
To post to this group, send email to libuv@googlegroups.com.
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to