#Everest Core uses too much RAM and lag-spikes after clean install

109 messages · Page 1 of 1 (latest)

prisma sail
#

I'm making a separate post from my original "game sometimes stops drawing frames on death" post because this issue has evolved immensely in the past week
after I began playing strawberry jam, I encountered a number of new performance-related issues, some of which only began happening when I reinstalled celeste's opengl beta and everest core to see if I can fix my issues. after reinstalling, I updated dotnet-sdk-bin to the latest testing version in the gentoo repos.
here's a detailed list of the jank I've experienced so far:

  • when strawberry jam is enabled, selecting a map in a lobby or opening the journal (even in vanilla maps) causes a consistent lag spike, and dying in a map causes a longer lag spike the more I play (especially with a golden strawberry) regardless of mod cache.
  • with strawberry jam, the game idles at above 2.4gb of ram and it only goes up with time, sometimes even going as high as ~3gb. without any mods, it idles at 1gb.
  • without any mods enabled, the game doesn't lag between deaths and the load times are fast, but selecting "return to map" while playing any vanilla map causes a sizable lag spike, with no message in the log to indicate why this happens. this didn't start happening until I reinstalled.
  • olympus can't launch the vanilla game when clicking the "celeste" button. I always had problems with this, but it mysteriously worked one day and then stopped. I haven't been able to launch the vanilla game for a while, but I confirmed that all of these issues do not happen in vanilla
  • sometimes large enough lag spikes can result in the entire game locking up with the only way to exit being to kill the process
    I'm sorry for posting so much about this type of issue, but I've officially run out of ideas for how to even begin debugging it. the log isn't helpful, and the game does not produce a crash log upon freezing. the only ideas I have for what this could be are a memory leak, a very specific issue with my setup, or an everest core bug.
#

in the first video, I have no mods enabled
in the second video, I only have strawberry jam's dependencies enabled

deft summit
#

Strawberry Jam is huge, so the higher memory usage there is to be expected

#

We are aware of the vanilla thing - it's some jank Steam interaction which has been resisting our attempts to fix it for an eternity now

#

The lagspikes on map enter/exit are probably caused by mods adding/removing hooks there, so lagspikes there are to be expected

#

Golden deaths fall into that category as well, since they reload the entire map

#

That pretty much just leaves the lockup issue from your earlier post, and maybe the fact that some of these issues are more severe than they are for others (I would have to review the video for that though, which I am currently unable to do) laugheline

near thistle
#

they're decently big, more than i've noticed myself, but still only about half a second

#

the first video is leaving golden ridge; the second is opening a cu2 lobby chapter panel thing

#

golden deaths are always annoyingly long in my experience; that's just because reloading the map is expensive

#

posting about an issue a bunch is fine as long as it's not spam, which this definitely isn't; you've done a good job documenting this

prisma sail
#

it seems like it isn't supposed to take that much memory though, and I doubt my OS would cause such a major difference
#1173025991837351946 message

#

the most confusing part about this is how it suddenly began happening after a reinstall
right now I'm using --graphics Vulkan, but it doesn't make a noticeable difference besides putting some extra info in the log
I think I'm going to do an insane maneuver and test what it's like on everest stable

#

the strawberry jam map/journal selection lag is gone, and death transitions are really smooth
there's a little stutter between room transitions (as expected) and when returning to map but nowhere near as bad as core

near thistle
#

hmm interesting

prisma sail
#

I can tell deaths are fine because the music in paint doesn't get interrupted on death

#

is dotnet-sdk-bin screwing everything up?
I was tempted to install dotnet 8 but good lord, I need 20gb on my root partition to be able to compile it

#

2.5gb ram
maybe this is normal

deft summit
#

Well, people regularly run into OOM crashes if they have SJ and another big mod enabled, and those happen if more than 4GB of memory is used

#

So it definitely isn't abnormal

austere bough
#

I guess pointer size could effect memory due to the jump to 64 bit

#

I know its a huge deal in java but java doesn't have structs like c# so idk

near thistle
#

i wouldn't expect pointers to take up that much memory, but i suppose there might be lots of them
would be cool to have a memory profile

austere bough
deft summit
#

Other than this I am invoking the runtime jank card - if you can reproduce this on another clean machine then it might hint at a more fundamental issue

#

Alternatively, you could try attaching a profiler to check what is causing the lagspike

austere bough
#

Quick update on my ( 13 years old ) Ubuntu laptop running core I get:

  • without any mods in main menu: 124,639,696 GC Heap bytes & 612,906 GC Heap objects & 434.5MB total usage of system memory
  • without any mods after 5 min of gameplay: 128,442,065 GC Heap bytes & 618,691 GC Heap objects & 476.8MB total usage of system memory
  • SJ main menu: 126,495,241 GC Heap bytes & 613,471 GC Heap objects & 1.6GB total usage of system memory
  • SJ after 5 min of gameplay (while in paint): 878,708,326 GC Heap bytes & 8,388,211 GC Heap objects & 1.6GB total usage of system memory
#

with 60~ fps hyperfrogeline

austere bough
#

is there a chance that the runtime is acting up and setting some weird GC settings?

deft summit
#

Honestly their entire runtime feels jank to me

#

I am on Linux as well, and I never encountered anything like this

#

This might be an issue with Gentoo's runtime package?

austere bough
#

maybe I had trouble with the Ubuntu repo as well after moving to the Microsoft repo it got better

deft summit
#

I mean Piton should address repo issues (as in, it will download its own runtime), but it uses the system runtime if present thinkeline

#

So if the system runtime is present but bugged then that doesn't help

#

And currently Piton has no way to override its config pausefrogeline

austere bough
#

what is Piton? laugheline

deft summit
#

TLDR: a custom native apphost I wrote which replaces the default one, which will automatically download / set up runtime binaries if the .NET Runtime isn't installed locally

#

It's purpose is to cut out the "install the .NET 7.0 runtime" step

#

Making the entire thing zero click

#

Without having to bundle the runtime itself in the Everest binaries

austere bough
#

frogeline rust moment

#

I see

deft summit
#

It's rust because I was looking for an excuse to write something in Rust cluelesseline

#

Samah wasn't that big of a fan

#

A C++ application / a native AOT C# application could have done the same job as well

austere bough
#

I mean you can't really jump head first into rust the learning curve is steep

deft summit
#

Welp I did pausefrogeline

austere bough
#

I mean you can but .Clone() is gona be your best friend for a while

deft summit
#

4 days in or so I was already reading the Rustinomicon

austere bough
deft summit
#

6 days in I was writing my own native weak interop linker to support the disaster that is Win32 DPI support

#

Oh and I landed on the specialization Github issue like three separate times cluelesseline

austere bough
#

damm

#

I'll be real I have no clue what's a weak interop linker is or what is DPI cluelesseline

deft summit
#

So, uh, yeah, I think my learning cure was slightly accelerated and felt more like a learning bump pausefrogeline

deft summit
austere bough
#

//Excuse my french, but what the absolute f*ck is this, Microsoft ._. so true

deft summit
#

Yes apparently I am unable to use the English language correctly

#

But who doesn't love some good old LoadLibraryA / GetProcAddress calls which are then transmuted into native function pointers pausefrogeline

austere bough
#

kinda surprised by the fact that windows-rs panics

#

isn't it like a microsoft crate?

#

they should know better

deft summit
#

Yep

#

Also it's not MSes fault pausefrogeline

#

All Rust native bindings panic if the function they are linked against isn't found

austere bough
deft summit
#

I could have just queried the windows version and used that to decide whether to call the API, but that's a bit jank imo

austere bough
#

wait when you say native bindings you mean FFI right?

deft summit
#

I was referring to the link attribute, but I believe that falls under FFI

austere bough
#

Ahhh right

#

now I see why they panic there isn't much you can do without a some sort of wrapper around it

austere bough
prisma sail
#

I think the journal and map selection lag spikes just vanished from existence after switching to stable and back to core
the return to map lag spike looks a lot more natural now and respawn times are less laggy
dying in the beginner gym doesn't lag at all

#

oh
the gcdump is too big

#

it's 164mb
don't know what to do with this

dusky sparrow
#

split it into two maybe?

prisma sail
#

it's just this but for a reeeeeally long time

austere bough
#

it will convert it to something more human readable

prisma sail
#

I'm not particularly smart

austere bough
#

when was this snapshot taken?

#

after a gameplay session or just in the main menu?

#

anyways the heap object count is kinda low

#

less then 1GB

prisma sail
#

this was taken after a playthrough of paint and if my 'driveway' almost did you in

#

then I returned to menu

austere bough
#

I see seems like weird GC settings then

#

do you have any env starting with DOTNET_?

#

or mb some kinda global runtimeconfig.json file?

austere bough
prisma sail
#

I never set any environment variables related to dotnet, and this is a freshly installed dotnet-sdk-bin
should I try without the system binary and let everest set up dotnet?

austere bough
#

sure that could help

dusky sparrow
austere bough
dusky sparrow
prisma sail
#

I died in cassette cliffs and for the first time in a while, the death transition was 100% smooth

austere bough
#

how much memory is the game using?

prisma sail
#

2.4gb

austere bough
#

do you have any other mods loaded beside SJ and it's dependencies?

prisma sail
#

nope

austere bough
#

idk then sorry