Live data from Hacker News

From 30 to 230 Docker containers per host

sven.stormbind.net

21–30 of 55 posts

Re: From 30 to 230 Docker containers per host

#21
post #17

Earlier quoted context omitted.

I think he miscalculated. His point still stands, just not with 20 browser tabs.

The important bit is "running our software" - depending on the complexity of said software, 200MB is pretty meh.

wait, i had windows xp with firefox and all at 256 mb ram ! which i got later upgraded to 384 mbs because i reused another 128 mb ram chip :)

Re: From 30 to 230 Docker containers per host

#22
post #15

They could easily double that density with Go, or quadruple with C++ or Rust. Why people still use JRE I fail to understand.

The density per server savings is probably a drop in the hat compared to the cost of the engineers themselves... also by the sounds of it memory usage isn't the issue here which is the only thing I think you'd get from C++. I've seen well written java applications do amazing things performance wise even expert C programmers couldn't match (without an obtuse amount of effort).

  >> The density per server savings is probably a drop in 
  >> the hat compared to the cost of the engineers themselves
For C++ and Rust yes, unless scale is huge. For Go, emphatically no. Go is simpler to work with, and on typical programs it uses half the RAM and fewer threads. Although even for C++ and Rust at medium scale I'd rather do proper engineering, and pay my (rather than somebody else's) people better. "Hard" languages tend to select better engineers. Go is a bit of an odd one in this regard because it selects better engineers by not allowing the kind of mindless GoF masturbation one often sees in Java programs, at the language feature level. Can't abuse OOP if there's no OOP.

  >> [memory] is the only thing I think you'd get from C++
This is far, far from the "only" thing you'd get out of the languages I mentioned. Quarter of the memory, as few threads as you'd like, access to vector instruction sets, easier performance optimization where the code calls for it, not having to tune your GC for smaller heap, not having to new up a class every time you do anything (I know you don't have to, but that wouldn't be idiomatic Java), etc, etc.

Re: From 30 to 230 Docker containers per host

#23
post #15

They could easily double that density with Go, or quadruple with C++ or Rust. Why people still use JRE I fail to understand.

Because of the existing code and libraries which are not available in other languages. For instance if I am writing some NLP related code I would write it in python.

Re: From 30 to 230 Docker containers per host

#24
post #9

So at one point we where doing scale testing for our product where we needed to simulate systems running our software connected back to a central point. The idea was to run as many docker containers as we could on a server with 2x24 core and 512GB of RAM. The RAM needed for each container was very small. No matter what the system would start to break around ~1000 containers (this was 4 years ago). After doing may hou…

512GB RAM/2500 containers is still 500MB per container. In former days™ this was enough for a computer to run a complete desktop environment with a web browser and 20 tabs open (source: I had a PC with physically 500MB RAM). Is this really the limit for such a decent equipped machine? (I guess a server grade 48 cores, 512GB RAM should be less then 5kEUR nowadays)

What was the remaining 12 MB of RAM used for?

Re: From 30 to 230 Docker containers per host

#25
post #17

Earlier quoted context omitted.

I think he miscalculated. His point still stands, just not with 20 browser tabs.

The important bit is "running our software" - depending on the complexity of said software, 200MB is pretty meh.

Yes. Needed ~150MB per container. It was just simulating end points - ie, TCP connections back to a central system.

Re: From 30 to 230 Docker containers per host

#26

So at one point we where doing scale testing for our product where we needed to simulate systems running our software connected back to a central point. The idea was to run as many docker containers as we could on a server with 2x24 core and 512GB of RAM. The RAM needed for each container was very small. No matter what the system would start to break around ~1000 containers (this was 4 years ago). After doing may hou…

Nice! But how do you tell that from strace? Wouldn't it just show the guests stuck in connect()? With perf, sure, but strace?

Re: From 30 to 230 Docker containers per host

#27

Earlier quoted context omitted.

Probably but you can still have the configuration secure as default and people would be aware of the security implications when enabling insecure features.

No, that would be a breaking change .

Java did that with modules and it appears to have worked ok for them.

Re: From 30 to 230 Docker containers per host

#28
post #15

They could easily double that density with Go, or quadruple with C++ or Rust. Why people still use JRE I fail to understand.

Because of the existing code and libraries which are not available in other languages. For instance if I am writing some NLP related code I would write it in python.

Ironically, that'd still be better than JRE, because your NLP libs end up spending most of their time in high performance, memory efficient C++ code that underpins such libs.

Re: From 30 to 230 Docker containers per host

#29
post #28

Earlier quoted context omitted.

Because of the existing code and libraries which are not available in other languages. For instance if I am writing some NLP related code I would write it in python.

Ironically, that'd still be better than JRE, because your NLP libs end up spending most of their time in high performance, memory efficient C++ code that underpins such libs.

No man I wouldn't want to call those horrific c functions compared to those sweet python functions ! and the libs calling those C functions do much more than just being a wrapper. they add a lot of tooling around.

Re: From 30 to 230 Docker containers per host

#30
post #17

Earlier quoted context omitted.

The important bit is "running our software" - depending on the complexity of said software, 200MB is pretty meh.

wait, i had windows xp with firefox and all at 256 mb ram ! which i got later upgraded to 384 mbs because i reused another 128 mb ram chip :)

In ~2003, I replaced my desktop that had been Intel-based with a Duron 800MHz system, only I didn't have enough budget to get it the RAM it required (new/different slot iirc), so I only had the 128MB it came with (whereas my old machine had 768MB cobbled together from like six dimms).

I figured that one hop over 100Mbit Ethernet to remote memory was going to be faster then swapping to spinning rust (remember this was before consumer SSDs, and onions on our belts), so I made a ramdisk on the old machine and mounted it over the network with the nbd (network block device) kernel driver, ran swapon on the nbd and boom, extra "512MB" of RAM.

It worked amazingly well, and (knock on wood) none of my roommates ever tripped over the Ethernet cables.

Post reply on HN