An-Sar / PrimalCore

Official Wiki, Issue Tracking, Localization
12 stars 7 forks source link

Cascading Worldgen Lag #110

Closed Kevun1 closed 6 years ago

Kevun1 commented 6 years ago

Minecraft 1.12.2 PrimalCore v0.6.5 Forge v2545

The log is getting spammed with messages like these: [17:57:05] [Server thread/WARN]: PrimalCore loaded a new chunk (-27, 5 Dimension: 0) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [17:57:05] [Server thread/WARN]: PrimalCore loaded a new chunk (-25, 5 Dimension: 0) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [17:57:05] [Server thread/WARN]: PrimalCore loaded a new chunk (-24, 5 Dimension: 0) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config.

There's no crash, but PrimalCore seems to be intense on world gen. Seems like world gen is triggering generation in neighboring chunks, which then triggers more world gen, etc.

This is a pretty common problem, and this thread goes into detail about it: https://www.reddit.com/r/feedthebeast/comments/5x0twz/investigating_extreme_worldgen_lag/

Not sure if anything can be applied to PrimalCore, but some common solutions like offsetting world gen x and z locations by 8 so they start in the middle of the chunk might help.

AdaraChristine commented 6 years ago

I started getting this when we created a Nether portal on our server.

Axebeard2025 commented 6 years ago

The mod Recurrent Complex also has this problem. The cascading worldgen lag messages appear during initial worldgen, and as you explore new chunks in the world.

It occurs during worldgen of SSP and SMP worlds. (I have not tested it with Hardcore or Creative modes).

Also, if you combine Recurrent Complex and PrimalCore into the same modpack, the lag is VERY bad.

Axebeard2025 commented 6 years ago

Ivorforce just posted some more info about this on this.

Based on what Ivorforce said, I did some research, and it looks like the following might be relevant. (I'm not sure, as I'm not a modder.)

Cypress187 commented 6 years ago

Maybe it's related, but the BOP biome "Bamboo Forest" breaks all the bamboo on your generated "terra clay" / "wet mud" and "ortho stone", causing huge lag / unplayable, thousands of items drop (bamboo sticks) in some places.

An-Sar commented 6 years ago

This is not directly related to the cascading worldgen issue.

Unfortunately BOP has hardcoded certain acceptable blocks that the bamboo is allowed to stay on, i don't believe there is much i can do on my end, but i am looking into it further.

JamesProGamer commented 6 years ago

Ok so iv been playing SevTech Ages (version 3.0.7) and PrimalCore is really fucking over the server. A few friends and I have tried to figure out what the hell is going on but we can't seem to fix it. Any help on trying to minimize the chunk issues would be very helpful.

Edit: It works just fine when I play it solo, but while I have the server up PrimalCore craps itself. I have 8 gigs running the server so that should not be the issue. And I now have it running on my ssd but that does not seem to help primal much either.

kiwifrogg commented 6 years ago

Primal Core is not causing your lag or memory issues, I have 2 servers running primal core packs(one 7 months old), and both have the world gen message, but nether run over 4 gig ram even with the 12gig allocated. The message is a warning, but in reality is not causing any issues, it is the placebo effect of seeing it as a error that makes you relate this to what the real cause is.

EEwing commented 6 years ago

It very well might be a placebo effect, but my game freezes for 3-10 seconds quite often, and my minecraft logs at the time always report cascading worldgen lag coming from PrimalCore just before reporting that it can't keep up.

Correlation doesn't mean causation, but it is definitely a possibility.

kiwifrogg commented 6 years ago

Neither of my 2 PrimalCore servers, or an sars tech server freeze with this. Might pay to put in tickprofiler or lag goggles, visual VM or even pop sponge on just to use timings, these will narrow it down. If you like send me your java args, and list any extras you have installed, I'll fire up a sevtech server over the weekend and see if I can see anything that pops out.

thiakil commented 6 years ago

This is very much an issue on servers, chunk loading & generation is heavy enough as is. When one of our players is out exploring we often got below 10tps, sometimes down to like 5.

kreezxil commented 6 years ago

PrimalCore 1.12.2 0.6.56 Forge 1.12.2 b2705 I'm getting intense lag on my server and each time when a player mentions it, PrimalCore is causing worldgen lag is all up in the console. Here starting at line 6447 http://paste.ubuntu.com/p/GGMnygMdcv/.

LordRIB commented 6 years ago

I just launched a new world today using the latest SevTech and I started getting intermittent halts by the second ingame day cycle. Which got progressively worse. Then I saw this on the server window - [FML] PrimalCore loaded a new chunk [-10, -1] in dimension 0 (overworld) while populating chunk [-11, -1], causing cascading worldgen lag Do we have any workarounds or setting tweaks anyone can suggest?

thiakil commented 6 years ago

cascading

GenMinableSubOre appears to be calling getBlockState on a position outside the current chunk

thiakil commented 6 years ago

@An-Sar I have made some discoveries while attempting to solve this (personal use only decompile of the mod) and another mod's cascading. Here are some things I have discovered:

With these changes I didnt get any cascading messages.

Something that can help is to use a simple coremod I made that logspams when something blindly loads a chunk unintentionally. http://maven.thiakil.com/ghostdetector-1.1.jar NB: you can do the same thing in your debugger with a conditional breakpoint that checks world.isBlockLoaded

An-Sar commented 6 years ago

the setBlockState flag change is pretty interesting, i will test this out.

As for positions outside chunk boundaries, the issue here is that a lot of the worldgen is larger than a single chunk.

There are a few approaches that i have been looking at, but another concern is, any time put into worldgen now will be outmoded by 1.13 which has a major worldgen overhaul. Obviously it will be awhile before stable modding is taking place on 1.13 but from my perspective it is a consideration for how time is spent.

thiakil commented 6 years ago

As for positions outside chunk boundaries, the issue here is that a lot of the worldgen is larger than a single chunk.

Hence the mention of stored for later :P

but another concern is, any time put into worldgen now will be outmoded by 1.13 which has a major worldgen overhaul

This is still a long way away, and making some relatively minor changes to your current world gen shouldn't take very long. Many users are experiencing lag caused by your mod (as it is included in at least one major pack).

You are welcome to copy what I did here for Geolosys; it only took about an afternoon to whip that up.

An-Sar commented 6 years ago

i'll take a look at that for sure

Normal69 commented 6 years ago

Cool, wonderful. I'm thankful. :)

An-Sar commented 6 years ago

i've integrated the solution from Geolosys, all appears to be working. there is a bit more testing for this and some unrelated fixes before release.

@thiakil thank you for the code

An-Sar commented 6 years ago

0.6.57 beta release is up on curse for public testing

MysticAura commented 6 years ago

@kiwifrogg Telling people that the problem is in their head. Is not constructive to the conversation. Just because your server does not have a problem, does not mean there is no problem. I'm guessing you're the type who argues if a person says a game is hard, by responding with 'It isn't hard for me!' ... It's just not helpful.

Bucky420 commented 6 years ago

this is still an issue im using the latest version ... it tanks a 12 core cpu and fills up 10gb ram any time any chunks is gened atm on my server and it seizes up completely

An-Sar commented 6 years ago

do you have logs? is this in a modpack?

Bucky420 commented 6 years ago

yes u can have any thing u want there is nothing in the logs thoe ... here u go yes its a private packhttp://public.ntgclan.com/logs/

Bucky420 commented 6 years ago

a fix that works for me i dont know if u need some things to play the mod let me know so i can test to find out which one is the cause

# Disable worldgen for vanilla andesite stone
B:DISABLE_VANILLA_ANDESITE=false

# Disable worldgen for vanilla coal ore
B:DISABLE_VANILLA_COAL=false

# Disable worldgen for vanilla diamond ore
B:DISABLE_VANILLA_DIAMOND=false

# Disable worldgen for vanilla diorite stone
B:DISABLE_VANILLA_DIORITE=false

# Disable worldgen for vanilla dirt
B:DISABLE_VANILLA_DIRT=false

# Disable worldgen for vanilla emerald ore
B:DISABLE_VANILLA_EMERALD=false

# Disable worldgen for vanilla gold ore
B:DISABLE_VANILLA_GOLD=false

# Disable worldgen for vanilla granite stone
B:DISABLE_VANILLA_GRANITE=false

# Disable worldgen for vanilla gravel
B:DISABLE_VANILLA_GRAVEL=false

# Disable worldgen for vanilla iron ore
B:DISABLE_VANILLA_IRON=false

# Disable worldgen for vanilla lapis ore
B:DISABLE_VANILLA_LAPIS=false

# Disable worldgen for vanilla quartz ore
B:DISABLE_VANILLA_QUARTZ=false

# Disable worldgen for vanilla redstone ore
B:DISABLE_VANILLA_REDSTONE=false

# Enable Worldgen for PrimalPotion, appears in the Overworld in forested areas
B:ENABLE_ACONITE=false

# Enable Worldgen for Ancient Ice
B:ENABLE_ANCIENT_ICE=false

# Enable Worldgen for Bitumen Fluid, appears in the Overworld and the Nether
B:ENABLE_BITUMEN=false

# Enable Worldgen for Blueschist Stone, appears primarily in the Overworld
B:ENABLE_BLUE_SCHIST=false

# Enable Worldgen for Blue Stone, appears primarily in the Overworld
B:ENABLE_BLUE_STONE=false

# Enable Worldgen for Bog Iron Ores, this generates along with mud, terra and cinis clays
B:ENABLE_BOG_IRON=false

# Enable Worldgen for Brine Fluid, appears in the Overworld
B:ENABLE_BRINE=false

# Enable Worldgen for Carbonate/Limestone Stone, appears primarily in the Overworld
B:ENABLE_CARBONATE_STONE=false

# Enable Worldgen for Nether Grass, early game Nether progression
B:ENABLE_CINERIS_CILIUM=false

# Enable Worldgen for Ciniscotta Clay, appears primarily in the Nether
B:ENABLE_CINISCOTTA=false

# Enable Worldgen for the Daucus Murn plant, grows in the Nether
B:ENABLE_DAUCUS_MURN=false

# Enable Worldgen for the Devils' Tongue plant, grows in the Nether
B:ENABLE_DEVILS_TONGUE=false

# Enable Worldgen for Paraffin Earth Wax, appears in the Overworld
B:ENABLE_EARTHWAX=false

# Enable Worldgen for Eroded Stone, appears in the End
B:ENABLE_ERODED_END_STONE=false

# Enable Worldgen for Ferrocalcite Stone, appears primarily in the Nether
B:ENABLE_FERRO_STONE=false

# Global control for all primal End worldgen
B:ENABLE_GENERATION_END=false

# Global control for all primal Nether worldgen
B:ENABLE_GENERATION_NETHER=false

# Global control for all primal Overworld worldgen
B:ENABLE_GENERATION_OVERWORLD=true

# Enable Worldgen for Greenschist Stone, appears primarily in the Overworld
B:ENABLE_GREEN_SCHIST=false

# Enable Worldgen for Void Grass, expands consciousness and is vital to space travel
B:ENABLE_INERIS_CILIUM=false

# Enable Worldgen for Ironwood wood, appear primarily in the Overworld
B:ENABLE_IRONWOOD_TREES=false

# Enable Worldgen for Magma Fluid, appears in the Nether
B:ENABLE_MAGMA=false

# Enable Worldgen for Magnetite Ore, this is primarily used by Kitsu's ForgeCraft
B:ENABLE_MAGNETITE=false

# Allow Overworld generation to take place in unknown dimensions
B:ENABLE_MOD_DIMENSIONS=false

# Enable Worldgen for Mud, appears in the Overworld near water
B:ENABLE_MUD=false

# Enable Worldgen for Calcified Paraffin fuel, appears in the Nether
B:ENABLE_NETHERWAX=false

# Enable Worldgen for Nether Creep, early game Nether progression
B:ENABLE_NETHER_CREEP=false

# Enable Worldgen for Nether Dead Bushes, early game Nether progression
B:ENABLE_NETHER_DEADBUSH=false

# Enable Worldgen for Nether Earth blocks, used as a building material and nether farming
B:ENABLE_NETHER_EARTH=false

# Enable Worldgen for Nether Growth blocks, a rare nether resource
B:ENABLE_NETHER_GROWTH=false

# Enable Worldgen for Nether Palm wood, also known as Corypha Pachyptila, early game Nether progression
B:ENABLE_NETHER_PALM=false

# Enable Worldgen for Nether Vines, early game Nether progression
B:ENABLE_NETHER_VINES=false

# Enable Worldgen for Night Stone, appears in the End
B:ENABLE_NIGHT_STONE=false

# Enable Worldgen for Blood Opals, this is essentially nether equivalent of diamonds
B:ENABLE_OPAL=false

# Enable Worldgen for Ortho Stone, appears primarily in the Overworld
B:ENABLE_ORTHO_STONE=false

# Enable Worldgen for Primal Gold AbstractOre, this generates in large deposits with ore blocks of varying density. EXPERIMENTAL
B:ENABLE_PRIMAL_ORE_GOLD=false

# Enable Worldgen for Primal Iron AbstractOre, this generates in large deposits with ore blocks of varying density. EXPERIMENTAL
B:ENABLE_PRIMAL_ORE_IRON=false

# Enable Worldgen for Purpurite Stone, appears in the End
B:ENABLE_PURPURITE_STONE=false

# Enable Worldgen for Rushes, primary resource for making Thatch, appears in the Overworld near water
B:ENABLE_RUSHES=false

# Enable Worldgen for End Rock Salt, early game End progression
B:ENABLE_SALT_END=false

# Enable Worldgen for Netjry Salt Falts, appears primarily in the Overworld
B:ENABLE_SALT_FLATS=false

# Enable Worldgen for Fire Rock Salt, early game Nether progression
B:ENABLE_SALT_NETHER=false

# Enable Worldgen for Halite Rock Salt, appears primarily in the Overworld
B:ENABLE_SALT_ROCK=false

# Enable Worldgen for Sarsen Stone, appears primarily in the Overworld
B:ENABLE_SARSEN_STONE=false

# Enable Worldgen for Satetsu, the Iron Sand, appears mostly in the Overworld
B:ENABLE_SATETSU=false

# Enable Worldgen for Scoria Stone, appears mostly in the Nether
B:ENABLE_SCORIA_STONE=false

# Enable Worldgen for Sinuous Weed, dangerous reed-like nether canNewGrow
B:ENABLE_SINUOUS_WEED=false

# Enable Worldgen for Strangle Weed Vines, early game Nether progression
B:ENABLE_STRANGLE_WEED=false

# Enable Worldgen for Terracotta Clay, appears in Overworld
B:ENABLE_TERRACOTTA=false

# Enable Worldgen for the Valus Omniferum plant, grows in the Nether
B:ENABLE_VALUS_OMNIFERUM=false

# Enable Worldgen for Corn, appears in the Overworld
B:ENABLE_WILD_CORN=false

# Enable Worldgen for Yew wood, appear primarily in the Overworld
B:ENABLE_YEW_TREES=false
thiakil commented 6 years ago

From what I can see in debug-1.log, there are no cascading messages. You also appear to be using a random teleport command which is putting you in the middle of completely ungenerated chunks. A completely unrealistic situation, of course generating your entire render distance is going to lag.

An-Sar commented 6 years ago

0.6.64 releasing shortly with modifications to worldgen code ready for testing

PsiNAK commented 6 years ago

Primal Core is not causing your lag or memory issues, I have 2 servers running primal core packs(one 7 months old), and both have the world gen message, but nether run over 4 gig ram even with the 12gig allocated. The message is a warning, but in reality is not causing any issues, it is the placebo effect of seeing it as a error that makes you relate this to what the real cause is.

This is absolutely not placebo effect. The lag/stuttering caused by this is intolerable. When traveling fast, (slime sling + slow fall gliding in SevTech Ages) player movement is temporarily halted, with velocity lost each time the cascading worldgen lag hits. My log is absolutely filled with messages like this:

[16:48:45] [Server thread/WARN] [FML]: PrimalCore loaded a new chunk [102, -159] in dimension 0 (overworld) while populating chunk [101, -159], causing cascading worldgen lag.

It makes exploration miserable, and fast movement-based travel impossible.

An-Sar commented 6 years ago

@PsiNAK sevtech is nearly 50 versions behind the current release.

Fireztonez commented 6 years ago

@An-Sar Sorry to reopen that issue, but I think the issue is not really fix at the day.

Darkosto have test the new world gen into is stream yesterday when is testing the new SevTech Update in developpement and have decide to turn off somes stones from the generation because of the PrimalCore Cascading WorldGen Lags and if you look the stone generation is crazy (And I look into my modpack with the latest update of PrimalCore). I Can say about 1/10 chunks is not connected to other with PrimalCore Stones Vein, this is crazy and this is exactly what causing the big Cascading Worldgen lags.

primalcore_cascading_worldgen

I suggest you to turn down a bit the size of somes veins and try make the vein go less from one chunk to the other, and it will fix the issue.

But, I think you should really add, is an option to setup the generation chance and quantity for each type of stones or things you generate into the world, because right now you have just possibility to turn on or off. This is really not good, because modpack dev cannot change quantity, question of fixing some worldgen issue or ajust for respect what the dev whant like generation into is modpack. (For do that most mod use simpy quantity options and question to turn off you can set to 0, this is a way you can do)

Thank's An-Sar

An-Sar commented 6 years ago

i've been running a server with no cascading messages at all, the worldgen caches generation that overlaps unloaded chunks and generates them later when/if the chunk is loaded. i would need to see logs that show version and the cascading messages.

An-Sar commented 6 years ago

As for adding controls to all generation-- This is something that will get definitely get added down the road, most likely 1.13 due to extensive worldgen changes that will have to take place anyway. Ideally each generation will be extracted into json file that allow more or less complete control.

That being said this will very likely not happen for the 1.12 version simply due to me being a single developer with limited time.

Fireztonez commented 6 years ago

Ok,

I have not really look about the log into my modpack at this time to see if there have Cascading Worldgen error, I will have to look that...

For the wordgen option, this is your choice, but I think you should try to do into 1.12.2, because the version 1.13 is not ready for really have complete modpack yet. And I do not think 1.12.2 is about to be dethroned, given the huge changes it has had between 1.12.2 and 1.13. And to believe that I read, forge still have a lot of work to do on the development of the version of 1.13.x and it may take a while longer.

That being said, if you think that adding the generation options is too big a job and that it's not worth the cost, even if I'm not totally of this opinion, it's your choice. For my part, I will probably have to redo some generation by another mod, such as CoFH World.

An-Sar commented 6 years ago

unfortunately it's just a matter of dev time that i don't have at the moment, it's always possible that i do end up doing it, especially if it looks like the work would carry over into 1.13/1.14, that would actually be the main factor.

Realistic Ore Veins is a very good mod that provides a lot of control over generating whatever blocks you want, i would highly suggest it in the mean time.