Jump to content
  • 0

Question

Posted

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.

14 answers to this question

Recommended Posts

  • 1
Posted (edited)
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
  • 1
Posted (edited)

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
  • 0
Posted

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 ?

  • 0
Posted

@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
 

  • 0
Posted

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

 

  • 0
Posted

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]

 

  • 0
Posted
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" .

Guest
This topic is now closed to further replies.


  • Posts

    • Update M54: Global HP/MP/CP consumable handling expanded beyond combat-only usage. Offensive mage idle recovery with learned skill Battle Heal. Spellhowler/Storm Screamer prioritizes Hurricane, using Vampiric Claw mostly below 90% HP. Major structural refactor initialized: Added category/class organization such as Archer, Dagger, Tank, Mage, Healer, Support and Specialized class files. Further structural cleanup. Extracted combat memory/state and more class-policy logic from the main controller. Added global stuck/inactivity watchdog for bots blocked by terrain/geodata. Added unreachable dropped ground-item timeout/temporary blacklist. Reworked Necromancer/Soultaker PvP: Dominator level 78+ maintains learned Arcane Power toggle on. Overlord/Dominator level 44+ maintains learned Soul Guard toggle automatically. Stability/scalability update: Bot controller ticks staggered instead of all starting in the same phase: Same 350 ms update rate retained Reduces simultaneous AI workload bursts. Removed the old manual aggressive-monster EVT_AGGRESSION bridge. Phantoms now use native Lucera setActive() behavior so monsters aggro them naturally. Reduced unnecessary NPC scans and native AI event pressure. Added saved-bot equipment overrides using a separate database table:         lucera_autobots_items Existing lucera_autobots remains the main saved-bot identity/state table. Equipment rows are linked to saved bots through bot_id. Added optional convenience view to show bot name together with equipment overrides:         lucera_autobots_items_view Added editable equipment slots in columns: Weapon Shield Helmet Chest Legs Gloves Boots Necklace Left/Right Earrings Left/Right Rings Equipment override values: 0 = use normal class/level profile item -1 = force slot empty >0 = equip that Item ID Custom equipment works only for saved database bots. Default class/level equipment profiles remain unchanged. Supports custom equipment from No Grade to S Grade, regardless of the bot's current level. Added validation for invalid item IDs and incompatible equipment slots. Added handling for: Two-handed weapons vs shields Full-body armor vs separate leggings Added all-grade Soulshots and Spiritshots to bot inventory/replenishment so custom lower-grade weapons still use the correct shots. Mage profiles that already use Blessed Spiritshots keep that behavior with all relevant grades available. First save the bot normally so it exists in table:         lucera_autobots Then open:         lucera_autobots_items Find the row with the same bot_id and edit only the equipment slots you want. Example: weapon_id = 6608 shield_id = -1 helmet_id = 0 chest_id = 0 legs_id = 0 gloves_id = 0 boots_id = 0 This means: weapon_id 6608 → custom weapon shield_id -1 → no shield all 0 values → keep normal default profile equipment After editing the DB, despawn and respawn the saved bot so M54 reloads its equipment overrides. Do not edit bot_id. Use it only to identify which saved bot the equipment row belongs to.   DOWNLOAD
    • It will be multi client so it will detect the client from the files and adapt the packets and asset loading. I am aiming for C4 and H5 after IL
    • this is just to simplify your life, time, and can be done for free by yourself just watch some tutorials, in case you don't wanna waste time check it out!   https://l2getwork.art   https://l2getwork.art/showcase.html  
    • Good job! Any chance for it to be downgradeable or at least compatible with older chronicles?
    • Fermata now runs in a web browser too. Try it here: https://web.fermata.gg/    
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..