Performance: Constant 50% core load by VRage.EOS.MyP2PQoSAdapter.UpdateStats
Game version: 1.200.025
Method: VRage.EOS.MyP2PQoSAdapter.UpdateStats
Problem: Constant ~50% load on a single CPU core because of the above method. It is constantly running in its own thread, repeatedly called from a loop. It is especially bad for players with 4 or less CPU cores. It is bad anyway, since it is trashing the CPU cache and heap (GC pressure!), lowering its overall throughput of all the other threads.
How to reproduce:
- Start any game (it can even be an offline one!)
- Monitor the CPU consumption of methods/threads with a profiler, like dotTrace
- Find the thread constantly running the above networking code
- Notice the constant CPU load
Please see the attached dotTrace screenshot for reference. A 10 seconds long capture was taken while standing still in an almost empty offline world with only a single grid in it. (No planets, empty space only.) A CLR worker thread is ~50% loaded all the time. You can see the above method in the tree opened on the right, 2 lines above the blue row.
As a workaround I replaced 98% of those calls with Thread.Sleep(1) in the Performance Improvements plugin. According to actual player feedback it improves the overall smoothness of the game while playing in worlds populated with many grids. Certainly I'm aware, that it is not a proper fix.
Please feel free to reach out in case of questions.
Hello, Viktor,
thanks for letting us know. Issue was reported internally.
Kind Regards
Keen Software House: QA Department
Hello, Viktor,
thanks for letting us know. Issue was reported internally.
Kind Regards
Keen Software House: QA Department
Replies have been locked on this page!