Welcome to MaxCheaters.com

Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads

  • 0

Help [SOLVED]GeoData Hi5 (Freeze sometimes)


Go to solution Solved by Tryskell,

Question

Hello everyone,

 

I'm using https://bitbucket.org/l2jgeo/l2j_geodata/src as GEODATA for my server on Hi5.

But when geodata is enabled, players are encountering freeze sometimes for 4 seconds, my server specs is 24GB RAM and 4vcore with HDD. I've already put -xmx 20GB on my GS launch script.

 

There is my geodata.ini configuration:

 

# Dimension maps
GeoFirstX = 11
GeoFirstY = 10
GeoLastX = 26
GeoLastY = 26

# Template file geodata
GeoFilesPattern = (\\d{2}_\\d{2})\\.l2j

# If True GEODATA
AllowGeodata = True

# Allow the player to fall from the horizontal wall if he clicks on the wall itself
AllowFallFromWalls = True

#Motion keyboard (arrows)
AllowMoveWithKeyboard = False

# Increase to Z for packages
ClientZShift = 16

# Optimization of geodata in memory, saves about 150MB memory
# Optimization should first need to generate a map of matches
CompactGeoData = True

# The minimum difference between the layers
MinLayerHeight = 64

# The maximum height of the step for geodata
MaxZDiff = 64

# Diagonal Search
# It should be disabled only for debugging
PathFindDiagonal = True

#Smooths the way #
# It should be disabled only for debugging
PathClean = True

# Strongly accelerates the search, the effect on the quality of unknown
# 0 - off, 1 - is just the beginning, 2 - the beginning and the end of the road
PathFindBoost = 2

# The maximum height of the step to find a way
PathFindMaxZDiff = 32

# The maximum time allowed to spend on the search path (in nanoseconds)
PathFindMaxTime = 100000000

# Configure the buffers to find a way, the number of x size of the map (in cages geodata)
# Minimum 96, maximum - 512
PathFindBuffers = 8x96;8x128;8x160;8x192;8x256;4x288;4x320;2x384;1x512

 

Please can you tell me how can I optimize it so there won't be freeze in game ?

Regards.

Share this post


Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 1
  • Solution
18 hours ago, lagunyve said:

Okay the settings are done, now I must check in game too.

Do you think those settings are good to add too ?

 


-XX:+UseConcMarkSweepGC -XX:+AggressiveOpts -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8

 

 

I personally found than without any other parameters than max RAM allocation flag, it was running smoothly.

 

If you don't NEED a particular flag, don't use it. Simple. You probably harm your server more than you do good. AggressiveOpts for example is barely useful, if not, shady.

 

Your logs probably come from

-XX:+CMSParallelRemarkEnabled

 

https://www.jclarity.com/2013/12/11/poorly-chosen-java-hotspot-garbage-collection-flags-and-how-to-fix-them/

Edited by Tryskell

Share this post


Link to post
Share on other sites
  • 1

If the freeze is cyclic, it's probably your GC under STW. You should use visualVM (which comes along JDK on the bin folder) to see if it's that.

 

20G with the wrong JVM would eventually end to a 4s delay, where everything is simply frozen.

 

L2J doesn't benefit of 20G anyway, you should reduce it to 6 to 8 max. If I'm right about it, your delays should come faster, but long lesser. If it's true, simply edit the GC called for one which doesn't use STW effect. G1 is normally the one by default for Java 9. If your L2J doesn't use at least Java 9, verify your GC on the .bat / .sh.

 

Using Java 8, my personal tests concluded CMS was the most ok GC for L2J.

 

I doubt it's anything related to geoengine itself, until you StackOverflow somewhere. If that was the case, you would have a long ass error on your logs.

 

Some readings :

https://dzone.com/articles/choosing-the-right-gc

 

-----

 

If you can do any action like speaking, if other people can do whatever they want when you are actually freezing - forget what i said, it's maybe simply your engine which takes a long time to process the given path. Which goes by a complete rework of the findPath method.

Edited by Tryskell

Share this post


Link to post
Share on other sites
  • 1

Add

-XX:+UseConcMarkSweepGC

and edit your  -Xms20G -Xmx20G  for  -Xmx6G

 

It should be normally far than enough.

 

Use VisualVM to see differences.

  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0

As I said, freezes are not happening everytime but it happens only when I enable geodata with the specified settings.
 

As I don't really understand how those settings works, can someone tell me which options can influence performance ? Maybe pathfinding takes to much sometimes when all players in the map are moving, I don't know.

 

If I can tweak the configuration so that pathfinding is not consuming a lot, maybe it would be better ?

Share this post


Link to post
Share on other sites
  • 0

@TryskellThis is my java conf actually, so I need to add a GC on it ? I use linux bash:

 

java -Xbootclasspath/p:./jsr167.jar -server -Dfile.encoding=UTF-8 -Duser.timezone="Pacific/Tahiti" -Xms20G -Xmx20G -cp ../libs/lameguard.jar:config:../libs/* com.lameguard.LameGuard l2f.gameserver.GameServer > log/stdout.log 2>&1
 

Share this post


Link to post
Share on other sites
  • 0

Okay the settings are done, now I must check in game too.

Do you think those settings are good to add too ?

 

-XX:+UseConcMarkSweepGC -XX:+AggressiveOpts -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8

 

Share this post


Link to post
Share on other sites
  • 0

Got those errors in log sometimes:

 

1089.311: [GC (Allocation Failure) 1089.311: [ParNew: 104717K->2999K(113024K), 0.0197582 secs] 2901337K->2799709K(4780904K) icms_dc=0 , 0.0199058 secs] [Times: user=0.08 sys=0.00, real=0.02 secs]
1127.703: [GC (Allocation Failure) 1127.703: [ParNew: 103479K->2708K(113024K), 0.0223378 secs] 2900189K->2799667K(4780904K) icms_dc=0 , 0.0225367 secs] [Times: user=0.08 sys=0.00, real=0.02 secs]
1162.453: [GC (Allocation Failure) 1162.453: [ParNew: 103188K->2131K(113024K), 0.0185006 secs] 2900147K->2799203K(4780904K) icms_dc=0 , 0.0186580 secs] [Times: user=0.07 sys=0.00, real=0.02 secs]
1200.053: [GC (Allocation Failure) 1200.054: [ParNew: 102611K->2388K(113024K), 0.0365686 secs] 2899683K->2799570K(4780904K) icms_dc=0 , 0.0367199 secs] [Times: user=0.08 sys=0.00, real=0.04 secs]
1233.817: [GC (Allocation Failure) 1233.817: [ParNew: 102868K->4991K(113024K), 0.0199087 secs] 2900050K->2802285K(4780904K) icms_dc=0 , 0.0200518 secs] [Times: user=0.08 sys=0.00, real=0.02 secs]
1275.089: [GC (Allocation Failure) 1275.089: [ParNew: 105471K->5713K(113024K), 0.0228596 secs] 2902765K->2803131K(4780904K) icms_dc=0 , 0.0230125 secs] [Times: user=0.09 sys=0.00, real=0.02 secs]
1313.199: [GC (Allocation Failure) 1313.200: [ParNew: 106193K->5963K(113024K), 0.0240173 secs] 2903611K->2803489K(4780904K) icms_dc=0 , 0.0242119 secs] [Times: user=0.09 sys=0.00, real=0.03 secs]

 

Share this post


Link to post
Share on other sites
  • 0
4 hours ago, lagunyve said:

Thanks.

Server is now using less RAM and we can see the improvements now. Thanks a lot @Tryskell I think you found what's wrong with my server. 

Please mark the answer that helped you solve the problem as "Correct" .

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.