Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance issues (stuttering, UI freezes) with video songs on Windows #53

Open
santiago-afonso opened this issue Mar 9, 2021 · 6 comments

Comments

@santiago-afonso
Copy link

santiago-afonso commented Mar 9, 2021

Hi! First of all, thanks for all the work!
I'm on a fully patched and up to date Windows 10 machine with a high end machine with a NVMe drive and 32GB of RAM. I'm running UltraStar 21.02 off from a USB 3 SSD with 500MB/s sequential and 200MB/s random read speeds (benchmarked in my own computer). UltraStar suffers from micro-freezes in the UI and general stuttering on songs that display a video in the background.

They show on the Performance Tab of the Task Manager as the SSD's "Average Response Times" that go from 0 to between 200 and 1500ms constantly every ~1-3 seconds. Other software doesn't display this behavior (I've checked, and opening the videos directly with a video player doesn't either). It seems to stem from some buffering problem on UltraStar. Each time the UI pauses because of this the mic input is lost to the program, as if muted during each 200-1500ms freeze.

The program should completely load the videos to memory - these being all ~100MB files, there shouldn't be a problem in doing so even in low end machines.

I put forth that solution because I suppose that you're caching using some library, not a buffering algo you've implemented yourselves, and fixing that code could be harder than just reading the whole file.

@TeLiXj
Copy link
Contributor

TeLiXj commented Mar 9, 2021

If you have a lot of song it's more common to use a HDD instead of a SSD, because this I added in 18.11 version a cover preload.
I suspect that you are talking about it, because load and free all covers after start the game and it stopped if detect an user interaction.
With more than 15000 songs works fine in all my high ends machines but using a classic hard disk, I only tried with ~500 using a SSD and never saw this behaviour.
Can you upload a small video to see it?

I hope change the cover preload using a SDL2 layer or at least allow to disable it if you use a SSD because isn't necessary.

@santiago-afonso
Copy link
Author

This isn't about the songs cover screen (although performance is abismal there too and now that you raise the issue I believe it is because of the same problem). The issue I describe happens during the song playback.

I'm running with about 1800 songs.

@TeLiXj
Copy link
Contributor

TeLiXj commented Mar 9, 2021

During song playback the cover preload is stopped at all, it's impossible that could be the problem.

Copy one song to your NVMe and use it to sing, have you the same problem?

@santiago-afonso
Copy link
Author

Just tried it - works perfectly from the NVMe (just the song - the game still from the USB SSD).

@TeLiXj
Copy link
Contributor

TeLiXj commented Mar 9, 2021

Then the problem is your USB connection. Have no sense that with a HDD on USB works fine in every PC that I have tried (only are slow on first load) and with your SSD on USB failed.

Have you another USB like a pendrive or HDD to try with the same song?

@santiago-afonso
Copy link
Author

santiago-afonso commented Mar 9, 2021

image

I have a Samsung T5 SSD over USB 3.0 on a fast Lenovo X1 Extreme (512GB NVMe SSD, 32GB of RAM, Core i7-8750H), with both Windows 10 and the drivers fully up to date. CrystalDiskMark shows >460 MB/s sequential and ~200MB/sec random read speeds, which are within expected. I investigated the performance with Perfmon and performed three tests which you can see on the picture.

On [1] I ran UltraStar. As you can see the response times (line in pink) are horrible - sometimes pausing the transfer (reading) for one and a half seconds!! Typically 200-1500ms. That's even though the amount of data read is very low (line in yellow).

On [2] I perform a CrystalDiskMark sequential read test (yielding >460MB/sec speeds), as you can see there's no problem there (yellow line). On [3] I perform a random read test on CrystalDiskMark, again with proper read speeds and no pauses. The number of requests is in cyan - light blue.

That CrystalDiskMark shows no issues leads me to believe it must be UltraStar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants