Refined Storage

Refined Storage

77M Downloads

Severe FPS drop caused by Storage Drawers / Refined Storage Integration with compacting drawers

aemondis opened this issue ยท 8 comments

commented

This is essentially related to issue #277, but opening it new as it seems slightly different to the symptoms previously and the existing issue was already marked as closed.

I have a sever FPS drop (down to ~12 FPS) occurring currently with the latest version of both storage drawers (1.10.2-3.5.17) and refined storage (1.2.18) on Minecraft 1.10.2 (forge 12.18.3.2215).

I found detaching the external storage interface instantly resolved the issue. But since I want to use Storage Drawers for parts of the system, I wanted to maintain this integration. The storage controller is connecting to a drawer controller managing:

  • 18x basic drawers
  • 11x 4x4 basic drawers
  • 7x compacting drawers

What I found after "playing" around is that moving a single compacting drawer out of the system, after a few seconds the severe FPS drop disappears (presumably when the drawer controller refreshes the connected drawers). It doesn't matter which compacting drawer is removed, and even moving out a number of very full (e.g. 600+ stack) basic storage drawers doesn't seem to make any change either - so it doesn't seem to be an item count issue. I then added a empty compacting drawer back, to see if it is an item count issue - and again - the FPS drops from ~214 down to 12 FPS. There seems to be some sort of limitation on the compacting drawers being managed, but only when the Refined Storage is connected.

I thought maybe it was too many drops coming into the system via EnderIO conduits (thus causing frequent updates Refined Storage might be tracking) - but disconnecting the conduit made no difference either - so it is definitely the interaction between Refined Storage and Storage Drawers, specifically with compacting drawers it seems...

Attached a couple of examples of the impact of a single compacting drawer being added or removed.
2017-01-27_12 48 40
2017-01-27_12 49 13

commented

Doing some more testing since, I have found this may not actually be compacting drawers... but the drawer just to the right of the picture above contains bonemeal, and I have an interface (with crafting card) trying to provide bonemeal. The moment there are bones in the system that can be made into bonemeal, the FPS drop spikes between good and bad as that drawer has bonemeal available.

So this may perhaps be related to a RS interface trying to retrieve a resource that would be stored in the StorageDrawers system where a recipe exists in RS, but the resources to make it do not?

commented

Final update... it doesn't appear to matter whether the item is craftable or not. Simply having a resource in the storage drawers system that an RS device (such as an interface) specifically requests is enough to cause this issue.

commented

Using csampler, with "bonemeal" placed in an interface for export (and the storage drawer being empty) - the render updates are occurring on the storage drawer containing bonemeal and are the root cause of the lag.
2017-01-27_13 36 12

commented

This is not an RS issue it seems. RS is just simply a mod that interacts with the drawer.

commented

Can you run a profiling session on your client so we can see if its RS or Storage Drawers for sure?

https://refinedstorage.raoulvdberge.com/wiki/profiling

commented

So the issue is the drawer causing render updates as we take/store items in it. Seems a lot more like a Storage Drawers issue then a RS issue.

commented

Looks like it's a rendering issue by Storage Drawers. Report it on their tracker.

commented

As requested...
RS-Drawers1.zip

I don't believe it to be truly a bug per-se with RS - but for example, if I add an ender conduit to the drawers controller and request it to export an item that is empty in Storage Drawers (using the same example of bonemeal) - there is no issue whatsoever. But do the same with RS through requesting via an interface, and the lag drop is huge. I suspect it is more a case of how RS is handling the case of trying to import an item that is empty in the external storage system; it seems to just "keep trying" despite it being empty.