TickThreading - concurrent entity/tile entity ticks and other optimisations

  • The FTB Forum is now read-only, and is here as an archive. To participate in our community discussions, please join our Discord! https://ftb.team/discord
Also getting this exception rather frequently in the logs with #1006 :
03-02 18:05:40 [SEVERE] [TickThreading] Exception while updating block neighbours
java.lang.NullPointerException
at buildcraft.transport.BlockGenericPipe.a(BlockGenericPipe.java:352)
at yc.m(World.java:124)
at yc.h(World.java:802)
at dan200.computer.shared.NetworkedComputerHelper.update(NetworkedComputerHelper.java:122)
at dan200.turtle.shared.TileEntityTurtle.g(TileEntityTurtle.java:2350)
at me.nallar.tickthreading.minecraft.tickregion.TileEntityTickRegion.doTick(TileEntityTickRegion.java:99)
at me.nallar.tickthreading.minecraft.tickregion.TickRegion.run(TickRegion.java:42)
at me.nallar.tickthreading.minecraft.ThreadManager$2.run(ThreadManager.java:90)
at me.nallar.tickthreading.minecraft.ThreadManager$1.run(ThreadManager.java:41)
at me.nallar.tickthreading.minecraft.ThreadManager$ServerWorkThread.run(ThreadManager.java:157)
 
TT now works with MCPC+!

By works, I mean I tested it for 2 minutes and everything is probably broken, please test it. :P
 
Herm, do I test this on my server and risk fucking up weeks worth of weeks, at the benefit of performance?

Tempting, but I think this is for someone else to test.
 
Our intention is to install aPerf on our server to improve performance. aPerf requires PermissionsEx and this mod be installed first. I've read a few dozen posts in this thread over the past few days and the only remaining concern I have is the Pactchme step. We rent space from a commercial host that uses McMyAdmin as the command interface. This is not a virtual server, rather, a shared environment using E5620 (quad core) machines. Looking at their file manager, I'm going to guess they're running Windows. What I am curious about is what is the best way to run the Patchme file with my setup? They do not grant access to bat files. Thanks.
 
Our intention is to install aPerf on our server to improve performance. aPerf requires PermissionsEx and this mod be installed first. I've read a few dozen posts in this thread over the past few days and the only remaining concern I have is the Pactchme step. We rent space from a commercial host that uses McMyAdmin as the command interface. This is not a virtual server, rather, a shared environment using E5620 (quad core) machines. Looking at their file manager, I'm going to guess they're running Windows. What I am curious about is what is the best way to run the Patchme file with my setup? They do not grant access to bat files. Thanks.
aperf doesn't require tickthreading - there are now instructions for patching your server jar manually in aperf's main post. In a shared environment, your host may not be very happy with you if you run TickThreading. If you still want to, you would just patch it locally and copy the server jar, mods, coremods and patchedMods folder to the remote server.
Nallar, any update on the IDSU loss of power issue?
Sorry, forgot about this. Will try to fix it soon.

If you take a backup first, there's no risk...
And it's probably also good to run it as a test server on a different port first to avoid downtime if it doesn't work.
 
aperf doesn't require tickthreading - there are now instructions for patching your server jar manually in aperf's main post. In a shared environment, your host may not be very happy with you if you run TickThreading. If you still want to, you would just patch it locally and copy the server jar, mods, coremods and patchedMods folder to the remote server.

heh...well I filed a support ticket to ask them about installing TT and they don't understand the purpose of TT and therefore (at least right now) don't have an opinion. Is there something similar to your mod for bukkit servers? They are very familiar with bukkit, but not so much with Forge. Maybe if they have some point of reference they will come to a decision. Thanks!
 
well the aperf team did a nice job with there mods. but they are not the friendlest moders i have seen
 
aperf doesn't require tickthreading - there are now instructions for patching your server jar manually in aperf's main post. In a shared environment, your host may not be very happy with you if you run TickThreading. If you still want to, you would just patch it locally and copy the server jar, mods, coremods and patchedMods folder to the remote server.

Response from the host: no. :( which was not unexpected, I guess. I'll consider your alternative option.

well the aperf team did a nice job with there mods. but they are not the friendlest moders i have seen

Yes, in reading through *every* post in that thread, she/he has one serious attitude problem. We were really only interested in aPerf, as the MyTown thing doesn't interest us. Unfortunately, aPerf proved only minimally effective (at best) in helping with CPU load. The entity limiting feature sounds like an excellent idea, but in practice it really doesn't work. Which reminds me...does Forge Essentials or some bukkitForge plugin have the capability to limit entity spawning?

Thanks guys.
 
Anyone have an issues with red power frames? Ive tried a few different versions and turned off the variable region tick rate and they always mess up, http://puu.sh/2bTG8 is what seems to happen most often. It will move about 5-15 times then one or more place end up like that. I dont see anything in any of the logs other than is complaining about thermal expansion stuff. http://pastebin.com/NTLw3dv2
 
Anyone have an issues with red power frames? Ive tried a few different versions and turned off the variable region tick rate and they always mess up, http://puu.sh/2bTG8 is what seems to happen most often. It will move about 5-15 times then one or more place end up like that. I dont see anything in any of the logs other than is complaining about thermal expansion stuff. http://pastebin.com/NTLw3dv2
Im having the same issue, I couldnt for the life of me figure out what the problem was
 
Anyone have an issues with red power frames? Ive tried a few different versions and turned off the variable region tick rate and they always mess up, http://puu.sh/2bTG8 is what seems to happen most often. It will move about 5-15 times then one or more place end up like that. I dont see anything in any of the logs other than is complaining about thermal expansion stuff. http://pastebin.com/NTLw3dv2
Can you try latest? Should be fixed now, if the issue was due to scheduled block ticks being lost sometimes.
 
2 minor bugs to report. Buildcraft gates will not continue working after a server restart, they need a block update to resume working, even if the area is chunk loaded. I tried every chunk loader in MindCrack. The other bug is Gregtech machine casings will show as incomplete when the entire thing is not within 1 chunk. Once again, tried chunk loaders, no fix.
 
Likely the the dumbest question in the thread...but, in follow up to my earlier post (371)

We decided to wipe the server of Mindcrack and start a new Ultimate server. I loaded everything on my local machine (i7 3820), installed TT, used your command line suggestion, gave the server 8Gs and pre-loaded the world. A few guys hopped on, we ran around in quantum suits, threw down a bunch of machines and wow...the game ran much better than we've seen from our commercial host (shared server, one core, etc). Sadly, we will upload to that server without 4 cores enabled. Despite that limitation, would it harm anything to upload with TT set to one core (leave the server command line unchanged)? I know it won't perform as well as 4 (if it works at all), but I'd like to have the ability to do CPU/tps analysis and at the same time not get spanked.

Well done, btw.
 
I get errors when patching a clean Mindcrack v8.1.1 server with #1077, and when starting I get the same exception as with #1025


Startup error:
Exception in thread "main" java.lang.ClassFormatError: Duplicate interface name in class file in
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:787)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:447)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
at java.lang.Class.getMethod0(Class.java:2694)
at java.lang.Class.getMethod(Class.java:1622)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)


Exceptions from patcher.log
03-07 14:15:38 [FINE] [TickThreading] Patching any with addMethod(return:java.lang.String,name:toString,code:return super.toString() + " x,y,z: " + l + ", " + m + ", " + n;)
03-07 14:15:38 [SEVERE] [TickThreading] Error patching any with addMethod
javassist.bytecode.DuplicateMemberException: duplicate method: toString in any
at javassist.bytecode.ClassFile.testExistingMethod(ClassFile.java:674)
at javassist.bytecode.ClassFile.addMethod(ClassFile.java:650)
at javassist.CtClassType.addMethod(CtClassType.java:1344)
at me.nallar.tickthreading.patcher.Patches.addMethod(Patches.java:392)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at me.nallar.tickthreading.patcher.PatchManager$PatchMethodDescriptor.run(PatchManager.java:311)
at me.nallar.tickthreading.patcher.PatchManager$PatchMethodDescriptor.run(PatchManager.java:293)
at me.nallar.tickthreading.patcher.PatchManager.runPatches(PatchManager.java:218)
at me.nallar.tickthreading.patcher.PatchMain.patcher(PatchMain.java:107)
at me.nallar.tickthreading.patcher.PatchMain.main(PatchMain.java:32)


03-07 14:15:39 [SEVERE] [TickThreading] Error patching ic2.core.EnergyNet with replaceInitializer
javassist.NotFoundException: field: worldToEnergyNetMap in ic2.core.EnergyNet
at javassist.CtClassType.checkGetField(CtClassType.java:920)
at javassist.CtClassType.getDeclaredField(CtClassType.java:969)
at javassist.CtClassType.getDeclaredField(CtClassType.java:964)
at me.nallar.tickthreading.patcher.Patches.replaceInitializer(Patches.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at me.nallar.tickthreading.patcher.PatchManager$PatchMethodDescriptor.run(PatchManager.java:311)
at me.nallar.tickthreading.patcher.PatchManager$PatchMethodDescriptor.run(PatchManager.java:293)
at me.nallar.tickthreading.patcher.PatchManager.runPatches(PatchManager.java:218)
at me.nallar.tickthreading.patcher.PatchMain.patcher(PatchMain.java:107)
at me.nallar.tickthreading.patcher.PatchMain.main(PatchMain.java:32)
 
Started getting this error on a New Ultimate server. Actually started last night after going into the Nether for the first time. Anyone going in gets kicked with a end-of-stream error. As you can see, the errors will severely spam the console until the server can restart. Let me know if I need to send this to anyone else. Thanks

http://pastebin.com/9Xb2hKfa

I'll add another paste. My folks are getting hammered with "Moved Wrongly" messages while in 0, and if they go into another dimension (-1, 5, 10, you name it) the error codes start to fly. Hopefully these pastes will help.

Thanks.

http://pastebin.com/Dgq1Z7KK