19 ms·
Basically any software, even something in C or C++ with manual memory management will scale more efficiently vertically than horizontally. Basically it would be
by kevincox 4y ago
Basically any software, even something in C or C++ with manual memory management will scale more efficiently vertically than horizontally. Basically it would be better to run one twice as big as it would be to run two instances on the same machine. There is almost always some overhead or cache that will make the performance of fewer instances better. The only exception is resource contention but it is generally not too hard to fix the important cases.
My default recommendation has always been to make instances "as big as possible, but no bigger". You may need 3 instances for redundancy, fault tolerance and graceful updates but past that you should probably scale up to near the size of your machine. There are obviously lots of complications and exceptions (for example maybe using most 3 instances uses 90% of your machines so you can't bin pack other processes there so it is better to use 4 instances at 70% as the machines will be used more efficiently) but bigger by default is generally a good option.
- JAlexoid 4y agoIt's really not a big surprise, tbh. Making data available to a thread on the same core has exceptionally high bandwidth. Just that alone will help with scaling.
- brunoborges 4y ago> make instances "as big as possible, but no bigger" Exactly. But I am seeing more and more of the opposite: make instances as small as possible, and scale out (not up) if/when needed.