3 ms·
It's not just ports, resource contention in general is largely the pain of multi-user systems. If you've ever managed a host with thousands of users, you'd rem
by salmo 9y ago
It's not just ports, resource contention in general is largely the pain of multi-user systems.
If you've ever managed a host with thousands of users, you'd remember. Sure many of these have work-arounds now, but I've seen users (or have personally) run a machine out of:
- /tmp space
- processes
- open file handles
- inodes
- shared memory segments
- ephemeral ports
- etc., etc.
You ever have a root shell on a box that's out of processes. Luckily modern shells have built-ins, so you can at least `ls` and stuff. But when you can't run, say, `lsof`, what do you do? That used to be a classic interview question.
And then there's the traditional resource contention folks think of like saturating links, i/o channels, disk space, cpu, memory, and so on.
But nowadays it's virtual machines all the way down. My favorite is to think of something like Puppet server (I like to pick on it) running in Docker. Count the abstractions in the chain:
- JRuby interpreter
- JVM
- Process
- Container
- OS
- Virtual Machine
- Hypervisor process
- Hypervisor OS
- even UEFI to an extent
- Hardware
You could say things like the process and OS are redundant, and you could probably add more if you consider some of the subcomponents of some of these. But each one is there to segment and/or simplify and then we add all kinds of holes for each to directly access one of its parental chain.
It is an evolved system where we are doomed to "reinvent Unix badly". But I'll be curious to see where we end up in 10-15 years...