Ender IO Zoo

Ender IO Zoo

963k Downloads

EnderIO-1.10.2-3.0.1.117_beta Conduit lag

Vauxite opened this issue ยท 19 comments

commented

Issue Description:

This issue has been present in both All The mods pack and FTB Present hermitpack (current)

What happens:

After some time the enderIO conduits start effecting the server tickrate.

What you expected to happen:

Not affecting the server performance that much.

Steps to reproduce:

  1. Place down plenty of energy conduits.
  2. Put something that produce in one end and a few consumers. (net negative)

Affected Versions (Do not use "latest"):

  • EnderIO: 1.10.2-3.0.1.117_beta
  • EnderCore: 1.10.2-0.4.1.56-beta
  • Minecraft: 1.10.2
  • Forge: forge-2092

Your most recent log file where the issue was present:

https://timings.aikar.co/v2/?id=e438b783044147af939debeea708d409&section=all

commented

looks to me like environmentaltech:controller_void_res_miner is causing chunk generation.

Is there any way to get that graph with a bit more detail? Ender IO::ConduitNetworkTickHandler_onServerTick() is a method that has basically one line of code...

commented

I would love to get a more granular view of the issue. However I haven't found a profiler that will provide such info. You can go to chunk view and find all items placed in the world. however. I'm pretty certain it's related to energy conduits. Had most success causing lag with that.

commented

If you need access to the server or any other detail, let me know.

commented

One problem is that ConduitNetworkTickHandler_onServerTick handles all conduits: all blocks, in all worlds, of all types.

I'll probably add some debug timing output for this.

commented

image
This from HermitPack modpack.

The lag managed to hold the server for 3mn, up to trigger a preventive crash:

---- Minecraft Crash Report ----

WARNING: coremods are present:
  LoadingPlugin (Quark-r1.0-56.jar)
  ShetiPhian-ASM (shetiphiancore-1.10.0-3.3.1.jar)
  LoadingPlugin (sampler-1.66.jar)
  IC2core (industrialcraft-2-2.6.69-ex110.jar)
  LoadingPlugin (RandomThings-MC1.10.2-3.7.6.jar)
  EnderCorePlugin (EnderCore-1.10.2-0.4.1.56-beta.jar)
  NWRTweak (redstonepaste-mc1.9.4-1.7.4.jar)
  SpongeCoremod (spongeforge-1.10.2-2098-5.0.0-BETA-1794.jar)
  FMLPlugin (InventoryTweaks-1.61-58.jar)
  LoadingHook (Mekanism-1.10.2-9.2.0.292.jar)
  TransformerLoader (OpenComputers-MC1.10.2-1.6.0.3-rc.1.jar)
Contact their authors BEFORE contacting forge

// Don't be sad. I'll do better next time, I promise!

Time: 10/11/16 7:01 PM
Description: Watching Server

java.lang.Error
    at net.minecraft.world.World.func_189508_F(World.java:2421)
    at net.minecraft.world.World.func_175625_s(World.java:108)
    at com.enderio.core.common.BlockEnder.getTileEntity(BlockEnder.java:160)
    at crazypants.enderio.conduit.BlockConduitBundle.func_189540_a(BlockConduitBundle.java:868)
    at org.spongepowered.common.event.tracking.CauseTracker.notifyBlockOfStateChange(CauseTracker.java:316)
    at net.minecraft.world.WorldServer.func_175685_c(WorldServer.java:1263)
    at crazypants.enderio.conduit.TileConduitBundle.doConduitsDirty(TileConduitBundle.java:255)
    at crazypants.enderio.conduit.TileConduitBundle.doUpdate(TileConduitBundle.java:238)
    at com.enderio.core.common.TileEntityBase.func_73660_a(TileEntityBase.java:36)
    at org.spongepowered.common.event.tracking.TrackingUtil.tickTileEntity(TrackingUtil.java:194)
    at net.minecraft.world.WorldServer.redirect$onUpdateTileEntities$zji000(WorldServer.java:1290)
    at net.minecraft.world.World.func_72939_s(World.java:1255)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:709)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:709)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:387)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471)
    at java.lang.Thread.run(Thread.java:745)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Server Watchdog
Stacktrace:
    at net.minecraft.world.World.func_189508_F(World.java:2421)
    at net.minecraft.world.World.func_175625_s(World.java:108)
    at com.enderio.core.common.BlockEnder.getTileEntity(BlockEnder.java:160)
    at crazypants.enderio.conduit.BlockConduitBundle.func_189540_a(BlockConduitBundle.java:868)
    at org.spongepowered.common.event.tracking.CauseTracker.notifyBlockOfStateChange(CauseTracker.java:316)
    at net.minecraft.world.WorldServer.func_175685_c(WorldServer.java:1263)
    at crazypants.enderio.conduit.TileConduitBundle.doConduitsDirty(TileConduitBundle.java:255)
    at crazypants.enderio.conduit.TileConduitBundle.doUpdate(TileConduitBundle.java:238)
    at com.enderio.core.common.TileEntityBase.func_73660_a(TileEntityBase.java:36)
    at org.spongepowered.common.event.tracking.TrackingUtil.tickTileEntity(TrackingUtil.java:194)
    at net.minecraft.world.WorldServer.redirect$onUpdateTileEntities$zji000(WorldServer.java:1290)
    at net.minecraft.world.World.func_72939_s(World.java:1255)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:709)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:709)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:387)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613)
...


Stacktrace:
    at net.minecraft.server.dedicated.ServerHangWatchdog.run(ServerHangWatchdog.java:63)
    at java.lang.Thread.run(Thread.java:745)

-- System Details --
Details:
    Minecraft Version: 1.10.2
    Operating System: Linux (amd64) version 3.14.32-xxxx-grs-ipv6-64
    Java Version: 1.8.0_101, Oracle Corporation
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 2061653544 bytes (1966 MB) / 5324668928 bytes (5078 MB) up to 5368709120 bytes (5120 MB)
    JVM Flags: 20 total; -Xms3G -Xmx5G -XX:+UseG1GC -XX:+UseStringDeduplication -XX:ParallelGCThreads=2 -XX:+CMSClassUnloadingEnabled -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -XX:NewRatio=3 -XX:SurvivorRatio=3 -XX:TargetSurvivorRatio=80 -XX:MaxTenuringThreshold=8 -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=50 -XX:+ExplicitGCInvokesConcurrent -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+BindGCTaskThreadsToCPUs -Xnoclassgc -Xss4M
    IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
    FML: MCP 9.32 Powered by Forge 12.18.1.2095 104 mods loaded, 104 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
...
commented

This is with EnderIO-1.10.2-3.0.1.117_beta

commented

From the same profiling:
image
crazypants.enderio.capacitor.CapacitorKey.get() takes ~6% CPU by itself, out of 22% taken by crazypants.enderio.conduit.power.PowerConduitNetwork.doNetworkTick().

A opened view of the item conduit lag:
image

commented

I'm unable to reproduce the lag in single player with just EnderIO.
@sherkas can you share pictures of your setup?

commented

Just putting a comment here that im running version .120 and im getting extreme conduit lag. After taking apart my mods its come down to me leading to ender io. I had to create an rfworld to escape the lag but of course eventually built conduits. At that point even that world is lagged (only contains cobble, ender io spawners and conduits). After removing ender io the whole world is seemless with no lag.

Ive only used the green (20krf/t) conduit and item conduit if that matters.

commented

The problem causing this lag is Sponge. Update it or follow the steps mentioned in this issue

commented

I currently am not using Sponge and am experiencing this issue. Shutting off an EnderIO autocrafting set up it stops the lag on the server that has been slowly building up and crashing things.

commented

Sorry for not being able to send a WarmRoast report and/or an other profiling proof now, but my server is having lag spikes, and EnderIO seems to be causing that. The class is the same. Here is the timings: https://timings.aikar.co/?id=3f7c72898cf64f8eb6b5b43b26224c1d

commented

I wouldn't believe a single timing from that Aikar tool, it has the tendency to measure complete nonsense.

commented

The reason is that I'm reporting the SAME issue as the people above, so it should matter.

commented

So, you report that you have the same issue as people had 3 months ago but cannot give any data that would enable me to do anything about it. Not even the Ender IO version you are using.

That should matter? No, it doesn't.

The data you present is useless on so many levels. I see that half your tick time is used up by all of your world's conduits combined. So if you have a world with 8000 conduits constantly shuffling around items, fluids and energy and using the latest Ender IO, I'd call that an extreme success for all those countless optimisations I added in the last months. If you have it with the Ender IO version from 4 months ago and a single conduit in your world, I'd call it a bad case of not updating. That is if that measurement even is correct. Just yesterday I got an Aikar report that claimed the conduit code spending its time adding energy capabilities to item stacks---which is just one example of the nonsense it measures.

commented

PS: Which reminds me...: Closing this issue for being outdated. The code in question has changed too much since November.

commented

Sorry, you could have replied me about the mod versions. I replied here because of I don't like opening duplicated issues, so I first search for already opened ones. In the Timings you can see the count of conduits, and my server is new and doesn't have chunk loaders, my guess is that there are 200 +/- conduits in the world.

EnderIO-1.10.2-3.1.164
EnderCore-1.10.2-0.4.1.65-beta
Forge 1.10.2-12.18.3.2202
My modpack is this one, and you can see the mod list here.

commented
commented

Still, that output is next to useless.

First, it says you have 1,283 conduits. Then it says the processing for all conduits takes "8.56% of tick". And in another view it says it takes "50.31% of tick", which it presumable spends mostly in "EnergyUpgradePowerAdapter_attachCapabilities"---a method that has nothing to do with conduits at all.

PS: Also, when looking at the whole thing some things look funny: 264 Actually Additions worms---that is a lot, considering that they hydrate farmland and generate growth ticks. About 10,000 tile entities---that's also a lot, even assuming most don't tick that's a big load for any server.