Live data from Hacker News

The C10M problem

c10m.robertgraham.com

11–20 of 116 posts

Re: The C10M problem

#11
I think cheetah OS, the MIT exo kernel project proved this and halvm by Galois does pretty well for network speed that xen provides, but I forget by how much.

The netmap freebsd/linux interface is awesome! I'm looking forward to seeing more examples of its use.

Re: The C10M problem

#12
post #9

>Content Blocked (content_filter_denied) >Content Category: "Piracy/Copyright Concerns" I'm starting to use these blocks at my workplace as a measure of site quality (this will be a high quality article). Can someone dump the text for me?

That page is essentially a glorified intro to his series of blog entries, and they are on another domain, so perhaps they are not blocked: http://blog.erratasec.com/search/label/C10M

Ah, erratasec. I'm surprised that isn't blocked here, too.

Thanks for the link.

Re: The C10M problem

#13
On the one hand, I love this. There's an old-school, down-to-the-metal, efficiency-is-everything angle that resonates deeply with me.

On the other hand, I worry that just means I'm old. There are a lot of perfectly competent developers out there that have very little idea about the concerns that motivate thinking like this C10M manifesto.

I sometimes wonder if my urge toward efficiency something like my grandmother's Depression-era tendency to save string? Is this kind of efficiency effectively obsolete for general-purpose programming? I hope not, but I'm definitely not confident.

Re: The C10M problem

#14

>Content Blocked (content_filter_denied) >Content Category: "Piracy/Copyright Concerns" I'm starting to use these blocks at my workplace as a measure of site quality (this will be a high quality article). Can someone dump the text for me?

Does it work through IA? http://web.archive.org/web/20140217043940/http://c10m.robert...

Also blocked, unfortunately. At least they didn't block all of archive.org

Re: The C10M problem

#15
post #10

Here is how C2M http://www.erlang-factory.com/upload/presentations/558/efsf2... It shows good practical tricks and pitfalls. It was 3 years ago so I can only assume it got better, but who knows. Here is the thing though, do you need to solve C*M problem on a single machine? Sometimes you do but sometimes you don't. But if you don't and you distribute your system you have to fight against sequential points in your sys…

If you could do 10M connections on one machine, then why not 1B on 100? Does it even make sense to have a billion simultaneous connections?

Re: The C10M problem

#16
What's significant to me is that you can do this stuff today on stock Linux. No need to run weird single-purpose kernels, strange hypervisors, etc.

You can SSH into your box. You can debug with gdb. Valgrind. Everything is normal...except the performance, which is just insane.

Given how easy it is, there isn't really a good excuse anymore to not write data plane applications the "right" way, instead of jamming everything through the kernel like we've been doing. Especially with Intel's latest E5 processors, the performance is just phenomenal.

If you want a fun, accessible project to play around with these concepts, Snabb Switch[0] makes it easy to write these kinds of apps with LuaJIT, which also has a super easy way to bind to C libraries. It's fast too: 40 million packets a second using a scripting language(!).

I wrote a little bit about a recent project I completed that used these principles here: https://news.ycombinator.com/item?id=7231407

[0] https://github.com/SnabbCo/snabbswitch

Re: The C10M problem

#17
post #13

On the one hand, I love this. There's an old-school, down-to-the-metal, efficiency-is-everything angle that resonates deeply with me. On the other hand, I worry that just means I'm old. There are a lot of perfectly competent developers out there that have very little idea about the concerns that motivate thinking like this C10M manifesto. I sometimes wonder if my urge toward efficiency something like my grandmother's…

I believe it's what used to be called 'craftsmanship'. Taking pride in creating things that are efficient and not wasteful for no other reason than the desire to make the best product possible.

Re: The C10M problem

#19
post #15
post #10

Here is how C2M http://www.erlang-factory.com/upload/presentations/558/efsf2... It shows good practical tricks and pitfalls. It was 3 years ago so I can only assume it got better, but who knows. Here is the thing though, do you need to solve C*M problem on a single machine? Sometimes you do but sometimes you don't. But if you don't and you distribute your system you have to fight against sequential points in your sys…

If you could do 10M connections on one machine, then why not 1B on 100? Does it even make sense to have a billion simultaneous connections?

If by "connection", you mean TCP, probably not. But that's not the only way to maintain connections, and it's certainly not the only reliable network protocol.

My latest project keeps every "connection" open at all times, but it's a custom UDP based reliable messaging protocol, not TCP. At Facebook's scale, we'd have the equivalent of one billion connections "open". It's easy to keep them open, despite changing IP addresses, because every packet is public-key authenticated and encrypted, so you don't have to rely on IP addresses to know who you're talking to...

It also means you only pay for a connection setup time once. For mobile devices, the improvement in latency is palpable.

Re: The C10M problem

#20

At the risk of sounding dumb, aren't we still limited to 65,534 ports on an interface?

Port numbers must only be unique for ip:port pairs. A TCP connection is identified by the "quadruple" source_ip:source_port, dest_ip:dest_port. You can have as many connections as you want on the same source_ip on port 80 as long as there aren't 65,535 to the same dest_ip (ie as long as the quadruple is unique).
Post reply on HN