MartinHowe wrote:This is not quite what I would have imagined and is definitely more sophisticated that the 'nearly asynchronous with mutexes and such' I would have thought of; I have only once in my varied IT career written multithreaded code and that was using helper stuff in .NET, so all this is quite an eye-opener for me.
I haven't had much excuse to write a whole lot of multithreaded code, but I feel like you might be approaching the thought from the wrong angle. That is you seem to be thinking only in "how do I start more threads" rather than redefining the problem so that it becomes "embarrassingly parallel," or at least a close to it as you can get. Mutexes are effectively a necessary evil and if you want code to go fast you need to avoid them. If you were to take the naive approach of parallelizing the playsim and mutex every actor you're going to burn a lot of time waiting on mutexes locks. This can easily result in code which may use more CPU percentage but actually perform no additional work, or worse.
MartinHowe wrote:Looks like that lovely Ryzen 9 3950X I was thinking of buying, with 16 cores, won't help me that much against the Spawn of Hell
Even as someone that loves playing with old hardware and making it do things it really shouldn't be doing, my advice is go mid range and upgrade twice as often. Since it's not really something that shows up in spec sheets people forget that the platform architecture as a whole evolves with the years, not to mention new instruction sets and IPC improvements. Obviously there's a limit to how far down the product stack this advice applies, but when it comes to the 3950X I do think that's in the territory of: if having 16 cores is not going to save yourself time today, don't buy it.
My brother garbage picked a 2006 dual Opteron 285 (quad core) system with 16GB of RAM. It was funny since with a GTX 960 4GB it would often running games get into a state where both CPU and GPU utilization was in single digits. Presumably the system buses were just too slow at carting data around. Probably not helped by games not being NUMA aware. A problem your socket 771 system doesn't have, but on the other hand with your CPUs being native dual core dies you effectively have a quad socket system which isn't doing the FSB any favors. He upgraded to a Haswell Celeron (2C/2T) and it ran circles around the Opterons in most things he did.
Or how about when my, at the time 7 years old, first gen core i5 couldn't handle video capture at 4:4:4 despite nominally having enough PCIe bandwidth for the card. But my Dad's Kaveri system did the same without breaking a sweat. Granted I was just waiting for Zen to upgrade anyway.
By the way you do know "server-grade memory" means slower with higher latency right? Granted the modules usually have a lot of overclocking headroom, but most server boards don't allow taking advantage of that.