Low performance on Storage Terminal when Item Interface is connected to Functional Storage's Controller
jmadarg opened this issue ยท 6 comments
Issue type:
- ๐ Performance issue
Short description:
My Integrated Dynamics system is connected to via item interfaces to a Colossal Chest and a Storage Controller (from Functional Storage, a similar mod to Storage Drawers). During my VolcanoBlock playthrough I noticed the Storage Terminal interface getting lower and lower FPS (just clientside, server doesn't seems affected, as it keeps a steady 20TPS). To find the issue I tried disconnecting the Colossal Chest first, which did not changed anything, then I disconnected the Storage Controller and everything was smooth again.
Steps to reproduce the problem:
Haven't tested in singleplayer or isolating, but this is how it went for me:
- Connect Storage Controller (from Functional Storage) using an Item Interface
- Add drawers to the system
- Eventually the Storage Terminal starts lagging out (low FPS)
Versions:
- This mod: 1.16.9 (Can't use 1.17.0 as I'm playing on a server)
- Minecraft: 1.19.2
- Forge: 43.2.14
Profiler output:
Profiler of client, let me know if the serverside one is needed (as previously said, server tps is steady at 20)
https://spark.lucko.me/bQzqLXiWvB
I noticed the Storage Terminal interface getting lower and lower FPS
How much lower is the FPS?
In any case, if the Storage Controller contains a large amount of items that change very frequently, then the FPS drop (caused by many large packets being sent from the server) is to be expected.
So some follow-up questions: how many items does the storage controller contain, and how frequently does its contents change?
As of right now, My frames drops from 80 to 30 when opening the Terminal when only the Colossal chest is connected (almost the same drop as when opening any inventory with this modpack), but when the Controller is connected my frames are at most 5.
Not really sure how to check the frequency of the content changes, but I do collect items from mob farms in it, and also some ore processing outputs. I probably have around 30 compacting drawers connected (can't check the actual number as the server I play is having issues).
I did tried to have a bigger ticks/operation (only managed to test up to 5), but did not seem to help.
We might be able to run parts of the packet handling off-thread, but will have to think about this a bit...
I've made some changes that improve performances.
New release coming in a bit.
Looking forward to hear what the impact is on your end @jmadarg.
In case performance is still too bad, there are some more things I can do (but I'd like to see another profile log in that case).
Note to self: investigate actually moving diffing off-thread.