Tree of Savior Forum

I checked my GPU load during terrible city framerate loss. Here's what I discovered

I can confirm one thing that helped my framerate a lot and it was disabling Hyperthreading. The game only used 4 threads instead of all 8 but with just 4 cores it works fine.

Also some minor user.xml edits helps.

Iā€™ve read about disabling Hyperthreading. But it wasnā€™t something i wanted to try since it would be bad for my overall system.
I tend to have a lot of things open at the same time. :grin:

But then again this would again make it a CPU issue rather than TCP waiting?

This gameā€¦ :sweat_smile:

Ummmā€¦ presumably entering a crowded area with lots of other players will still drop your FPS like a heavy rockā€¦ so what was the point of trying to optimize performance?

Well this is a really sad possibilityā€¦ if this fail net code implementation has been baked into ToS from the very beginning then itā€™s highly highly unlikely it will ever get fixedā€¦

If this is true then GvG and world boss battles will never have good performance :frowning:

I noticed something really interesting at the Zeraha elevator.
When i targeted a monster out of view my fps immideately dropped to 15-16fps and my cpu went up to 13% on client_tos (1 of 8 threads fully used).
When i looked away everything was fine again.
Look back in the direction of a monster - low fps. Could repeat as often as i wanted.


That could maybe come from repeatedly requesting mob info because heā€™s not yet loaded on to my client in view and thus not actively loaded on my client.
No enemy - hey we gotta load it to read the data.
Not on screen - unload, but wait we need some data - request that again, but heā€™s not on screen, unload that - loop.

Just make sure there is a mob up there and no players that keep killing them.

Itā€™s not a long term effect.

Spamming chat messages in a recently opened client already causes huge fps drops.

@miguelc0611 and some people donā€™t know how to make reasonable comparations; which was what I was trying to explain. :slight_smile:

@etm42: So Granado Espada also has similar perfomance issues? Now that makes some sense. Itā€™s the same dev afterall, so the same mistakes are to be expected.

@Fuzzy: Itā€™s the first time Iā€™ve seen someone using Quagmire on PvE, rofl.
Either way, what I was talking about are the TCP ACK packets coming from the server; thatā€™s not adjustable from your registry settings. And RO runs on a completely different engine, and has a decent TCP implementation (not making TCP wait on the main thread).

And about the mob reloading thing; Iā€™ve never had this issue, although I have targeted offscreen mobs more than a few times already. Iā€™m playing Mouse mode, though.

@Spinlock: I saw no difference between running the game on my SSD and HDD. Iā€™m not sure if a RAMDISK would help.

@celgaming: The point here isnā€™t minimizing those fps drops, but knowing exactly what causes them so the devs can fix it.

1 Like

@Maavy Well thatā€™s disappointing, Iā€™d rather have caching problems than netcode problems. I wonder why opening the mini-map and world map freezes the game for a short while, it makes no sense to me. I really hope they donā€™t send any packages just because you open it though I suspect it. I think the client does not cache information about the character-/map-/other- information so every-time you open a menu the client asks for data. It should be an async message but considering the game freezing I worry about the design.

Map is probably asking for a nice big package of data of where you have been and where not.
And since things seem to be cleared on map/channel change it then happens again.
And if you hover your mouse over a place of a world map its probably asking for how you uncovered that particular map already.

Sure, it could be hacked/cheated a little if it was client side only.
But oh manā€¦ like this itā€™s really nasty.

E:
oh, just minimap.
But yeah, probably checking what has been uncovered and what NPCs can be shown on the map?
Not sureā€¦

@Fuzzy It seems like their solution to netcode and security was just basically make everything netbased then after launch optimize the net-load of the client though I obviously canā€™t know for sure.

The simplest solution would be to cache the data and renew the cache every once in a while (preferably in another thread thatā€™s not blocking the game in any way).

Because it just happened to me again: I wonder what exactly causes the lag when you have your minimap (m) open and start sprinting with a swordsman character, or certain effects are loaded.
Also often, I donā€™t think always NPC dialogues cause heavy lag when the minimap is opened.

Badly unoptimized, but at least its playableā€¦ Cabal II is even worst

Yeah if 5-10 FPS during GvG and world boss battles is ā€œplayableā€ā€¦

yeah, its stupid the game dont use a fcking gpu ā€¦

Are you talking about the minimap or the world map?

The world map locks the game for about a second here, but the minimap always opens instantly.

@Maavy Not to me it doesnā€™t it drops my framerate by 15-20 (Iā€™m talking about both).

Running 16gig RAM, i7 4.0Ghz and 980 GTX

Thatā€™s nothing to do with TCP or any internet connection related issue, but thatā€™s something related to process in Client PC, try to get lower res or get a better PC with high RAM memmory, cheers

Hi, I did a few tests. I did this with chat (All) open. I also did it in first channel at Lempresa Pond (starting point of Orsha side)

There was only a few people occasionally (1-2) and no mobs as well.
Surprisingly, having only a few people on my screen didnā€™t hurt my framerate alot. They were just walking/running however

CPU ~ 35%
Ram ~ 500MB
FPS ~ 30-35
Cores = All


CPU ~ 25%
Ram ~ 520MB
FPS ~ 25
Core0


CPU ~ 26%
Ram ~ 460MB
FPS ~ 30
Core1


CPU ~ 25%
Ram ~ 480MB
FPS ~ 32
Core2


CPU ~ 28%
Ram ~ 470MB
FPS ~ 30
Core3


CPU ~ 33%
Ram ~ 400MB
FPS ~ 35
Cores: 1 2 & 3


It seems limiting it to only one core decreases processing % but the FPS doesnā€™t seem to change, will experiment more in a more populated area :stuck_out_tongue:

Edit: Also, it seems changing the affinity to a certain core causes my sound to stutter occasionally, not sure why that is

1 Like

Based on what Iā€™ve seen, your FPS will only start taking a hit once there are more than 3-5 other players on your screen. Then once you reach 10+ your FPS is likely to be in the 10-15 range. 15+ players will bring it down to 5-10 FPS range.

This game is clearly not CPU or GPU limited in the majority of cases Iā€™d say.

For some reason, the DrawActorPersistant isnā€™t working
I set it to 10, and I see more than 30 people on my screen

Yeahā€¦ I asked @STAFF_Julie to have the dev team test FPS when ā€œDrawActorPersistant=0ā€ in the presence of large groups of other players in a live setting. I suspect that the ā€œDrawActorā€ function is calling on the TCP socket thread to obtain player positions.

Because @Maavy and I have shown that increasingly large chat messages being spammed causes increasingly large FPS drops here is what I think is happening:

DrawActor function calls on TCP socket thread to return information about player positions and actions. This is okay for small numbers of players, but when there are a ton of players then the ā€œmessageā€ being passed gets increasingly large. Also because player positions need to be updated frequently, we approach a situation like the chat message spam FPS drop. I.E. The server has to pass increasingly large messages to the client about other player positions and actions.

If the TCP socket thread gets blocked because of dropped packets for increasingly large TCP messages, then the DrawActor function will be stuck in a ā€œwaitā€ mode which will cause the main game thread to idle (this will cause a drop in CPU and GPU utilization and will also cause the FPS to drop)

But yeah, we need to know if the hypothesis suggested is correct before actual solutions can be suggested.