Clark's Curious Corollary of Concurrency
clarkgaebel.com
Clark's Curious Corollary of Concurrency
1–10 of 23 posts
Re: Clark's Curious Corollary of Concurrency
#2You should take a look - I think it says something similar.
Re: Clark's Curious Corollary of Concurrency
#3Still, I think most large systems where latency is a major concern have some level of concurrency and/or queueing that can be manipulated to reduce latency.
Re: Clark's Curious Corollary of Concurrency
#4Have you heard of Amdahl's Law? You should take a look - I think it says something similar.
The OP is saying that there are techniques that hurt latency and increase throughput, but not necessarily vice versa (except unwinding techniques going the other way), so it makes sense to focus on latency first.
It's an interesting theory, and I've filed it away as something to ponder, but I'm not sure in what use cases it's valid for.
If you've got a stream of independent non trivial requests, then the best throughput strategy is to process each request on one thread; almost all computing resources are focused on the problem at hand.
The best latency strategy is to devote all threads to each request in turn (assuming this gives a speedup). The communication overhead will increase the CPU cost of dealing with each request, hurting overall throughput (if you process two requests simultaneously, your latency will explode).
In this scenario, it's a simple trade off and thus doesn't seem to fit. Of course, nothing real world is this idealized, and the devil in the details is probably where the OP's law fits in.
Re: Clark's Curious Corollary of Concurrency
#5> Years ago David Cheriton at Stanford taught me something that seemed very obvious at the time -- that if you have a network link with low bandwidth then it's an easy matter of putting several in parallel to make a combined link with higher bandwidth, but if you have a network link with bad latency then no amount of money can turn any number of them into a link with good latency.
You can tell it's dated from this little tidbit:
> The Cable TV industry is hyping "cable modems" right now
Re: Clark's Curious Corollary of Concurrency
#6Re: Clark's Curious Corollary of Concurrency
#7http://www.cis.gvsu.edu/~kurmasz/Teaching/OldCourses/CS451/G...
Re: Clark's Curious Corollary of Concurrency
#8I believe this is naive. First, it has no context. You optimize for what you need; there is no absolute best thing. If you have fantastic latency, but your throughput is not good enough to meet your needs, then, no, latency is not more important.
Second, while we tend to trade latency for throughput, it's not an even trade. That is, we tend to trade a small increase in latency for a large increase in throughput.
The insight the author had is a good one (although as others have pointed out, we've realized it before), but I think he oversold the conclusions.
Re: Clark's Curious Corollary of Concurrency
#9Re: Clark's Curious Corollary of Concurrency
#10Performance is hard, but we should all be working together towards the things that matter the most. Latency is more important to optimize than throughput. Let's just focus on that. I believe this is naive. First, it has no context. You optimize for what you need; there is no absolute best thing. If you have fantastic latency, but your throughput is not good enough to meet your needs, then, no, latency is not more imp…
The whole point of this post is that if you have low latency, there are easy ways to trade it away for better throughput. Whereas there are not easy ways to trade high throughput for better latency. And, therefore, latency is fundamentally more important.