Hello,
After playing a while with IE stuff, my game got laggs periodically and I noticed a strange CPU behaviour, I'll attach a Pic of the CPU-Load (http://fs5.directupload.net/images/160613/uniivzr3.png)
I'm not 100% sure if it's IE but it's quite likely cause it happens only after playing with IE items/blocks and it haven't happened before installing IE.
Removing or installing Optifine don't make any difference.
Here are the other mods I installed: http://prntscr.com/bfvkty
("thaumcraftServerHelper" is something from myself, It's not causing it, I already checked it!)
It happens on a Server as well as in SP
cad435
Please generate an NPS file for this. CPU load doesn't not really help except in showing that there is lag. You can generate the NPS file by 2 different methods:
/sampler trigger ticktime 100. Wait for a few lagspikes to happen, you should see messages in the server log saying that samples have been exported to specific files (If those messages don't appear, try replacing the 100 by 50. That will capture less "spiky" spikes). There should be files called spike-xxx-xxxxxx.nps in the main server directory (where stuff like the eula confirm file is).枚hm, Isn't Sampler just for server-threads, wich will exclude all ClientSideOnly/GL-operation threads? 0.o
Please correct me If I'm wrong...
anyway, I wasn't able to complete a Biodiesel an a brand new creative map until the first Spikes occure - here are 3 NPS Files.
Immersive_Engineering_Issue_1193_Lagg_Spikes.zip
Thanks for take time
Ok, those files don't show anything interesting. I thought you were talking about server performance, not client. If you have FPS lag, use /sampler trigger frametime 100. The command I gave you before triggered at server ticks over 100 ms, this one will trigger at frames lasting over 100 ms.
By the way, sampler will pick up anything (server+client thread, robot managing thread, thaumcraft aura processing, etc) happening in the Java process during the lag spike. The problem is, if it triggers at the wrong time it won't be able to record anything interesting.
yes, I know the tool, but I used it only for servers, never for Clients...
Anyway, there are another 5 NPS files: Immersive_Engineering_Issue_1193_Lagg_Spikes_2.zip
While playing around I noticed something else:
every lag seems to be a run from the Garbage-collector...
maybe this helps...
This would mean that you either haven't allocated enough ram or you have allocated to much ram. I once tried to play MC with 14GB of ram allocated to it and because the jvm can't handle that much ram in one application efficiently, the game lagged every time the garbage collector ran.
I'll take a look at a heap dump of my instance later today, but MC 1.8 generally generates more unused objects/garbage than previous versions because all methods like getBlock(int, int, int) have been changed to take a BlockPos object as a parameter.
i found that resizing the generation-space-ratios to the demands of forge and the used mods can halp a lot
but it needs several cycles of evaluation with dumping tenuring stages and space fragmentation ... i can share some configs later @cad435 i'll post an issue on my heavily outdated IE fork when i get home in about 8h for you so we can discuss this without disturbing Blu and Malte :) https://github.com/mindforger/ImmersiveEngineering/issues
I have 3GB of Ram allocated.
Garbage Collector seems to be working properly, up to a point were it suddenly starts lagging each time the GC takes a run. And it seems to happen when playing around with the IE-Mod.
@mindforger: TBH i'm not sure what you talking about, if you talk about the maxPermGen space, I run on Java8 were MaxPermGen isn't supported anymore, but I'll appreciate any help!
cad35
EDIT:
I run a Heap-Tracing:
This are the 2 stats directly before and in the middle between two GC-Runs:
Mid-Time:
http://prntscr.com/bgboes
(cyan is IE)
Directly Before GC:
http://prntscr.com/bgbxjg
(Darkblue is IE)
500MB of retained objects are damn Huge, aren't they?!
Taking a quick look at IESmartObjModel.java (seeing this class being pointed out by MAT in the heap-dump) and some other jars. I don't know how relevant this is, but I can imagine making your caches static might help. as of right now e.g. IESmartObjModel is holding IESmartObjModels in the cachedBakedItemModels, which (because cachedBakedItemModels is not static) hosts another cachedBakedItemModels-list of their own. A bit like this:
+ cachedBakedItemModels
+ IESmartObjModel (entry 1)
- cachedBakedItemModels (should be empty, but it's a GC-able object)
+ IESmartObjModel (entry 2)
- cachedBakedItemModels (should be empty, but it's a GC-able object)
...
I'd make those caches _static_ fields or if each IESmartObjModel requires it's own cache (seems to be not the case) think of a different class structure.
They really should be static, I just never noticed that they weren't. I also found a way to drastically reduce the amount of memory the crusher uses on the server side (up to about x64 in the most extreme case), I will push a commit to fix that tomorrow.
Sry, that was my smartphone going crazy in my Pocket while I was mowing the lawn _hmmpf_
sry for that...
And THAT is why email reply on github is terrible. GG on the formatting buddy >_>
Most helpful comment
And THAT is why email reply on github is terrible. GG on the formatting buddy >_>