Networking in particular: with thousands of containers, now there are lots more interfaces, routes, conntrack entries, "background" traffic, iptables rules etc.
Some problems are algorithmic: for example historically a lot of code has been written with the assumption that the number of network interfaces is small. With >1k interfaces, suddenly O(n) lookups take time. Similarly, iptables rules are run sequentially. etc.
Some resources have limits. Exceeding these may impact performance. In his case the load blew up the ARP cache. Nice!
Am I missing something? 512gb / 2500 is around 200mb per container.
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.
On a more serious note, gonna add that trick to my book - still plenty of rust spinnin' round