[External] : Re: jstack, profilers and other tools

Ron Pressler ron.pressler at oracle.com
Sun Jul 17 10:19:29 UTC 2022


You don’t increase concurrency to increase throughput (in a system under a given load). Rather, higher levels of throughput require higher levels of concurrency, or, put another way, the level of concurrency in a system rises with its throughput. That is Little’s law.

User-mode threads or async APIs are all about Little’s law. Whether or not the level of concurrency is a common bottleneck in thread-per-request programs or not is an empirical question. If it isn’t, then people won’t use virtual threads or async APIs.

— Ron

On 16 Jul 2022, at 20:38, Alex Otenko <oleksandr.otenko at gmail.com<mailto:oleksandr.otenko at gmail.com>> wrote:

I agree about capacity to do work. What I don't agree with is that you can change concurrency to increase throughput in Little's law - not more than you can change acceleration to increase force.

And I don't agree that the common bottleneck is the lack of threads - 10k threads on 100 CPUs is not much; 10k longlived threads on 1 CPU is 99.99% waiting. Shortlived threads, or thread per request, isn't really about concurrency in Little's law.


Alex

On Fri, 15 Jul 2022, 15:05 Pedro Lamarão, <pedro.lamarao at prodist.com.br<mailto:pedro.lamarao at prodist.com.br>> wrote:
Em sex., 15 de jul. de 2022 às 05:39, Alex Otenko <oleksandr.otenko at gmail.com<mailto:oleksandr.otenko at gmail.com>> escreveu:

Adding threads allows to do more work. But you can't do more work at will - the amount of work going through the system is a quantity independent of your design.

I think that, more precisely, the maximum amount of work that can go through a concrete system is a quantity independent of programmer design.
Nobody is arguing that increasing the quantity of threads will increase work throughput in a machine with devices already at full capacity.
What is being argued is that, since "task" is one of the machine's "devices" consumed to do work,
increasing the capacity for "tasks" increases the maximum amount of work that can go through etc.
If there are free processors, free memory, free network bandwidth, free storage bandwidth etc. etc. then doing more work concurrently will increase work throughput.

--
Pedro Lamarão

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20220717/71718d69/attachment.htm>


More information about the loom-dev mailing list