Minecraft running slow but resource usage is low

minecraft-java-editionperformance

I am trying to help a friend of mine get his Minecraft instance running decently.

He has a workstation laptop with an i7 (3rd gen, not sure which exact model), a Nvidia Quadro K3000M, 16 GB RAM and an SSD.
So hardware-wise it's not a gaming laptop but should be strong enough to work decently.

The game is really running on the Nvidia Quadro and not on the Intel HD, at least F3 shows the Nvidia GPU.

In both vanilla (1.16.5) and the Team Rustic modpack (v2.13, running on Minecraft 1.16.4), he often has low single-digit FPS when other players with worse setups get 15-30 FPS in the same regions of the world. This is with lowest graphics settings (including a render distance of 2 chunks). I then installed Optifine and turned everything down to nothing, which increased the FPS, but now he gets 4 FPS instead of 2.
FPS limiting is set to 60 FPS.

Since he has a huge monitor, he plays in windowed mode and uses only a rather small part of the screen. So not too many pixels either.

I tried it either without Java flags or with these ones:

-XX:+UseG1GC -Dsun.rmi.dgc.server.gcInterval=2147483646 
-XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 
-XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M

And there isn't any appreciable difference either way.

I tried Java 8 (x64) and Java 11 (x64) and also that didn't change a thing.

The lagometer always reports "white" as the most time consuming task by a far margin.

What is really weird is that both the CPU and GPU are more or less idle at that time. They are <50°C and usually have an usage of <20%. RAM usage is usually around 12GB/16GB, since I turned his Java minimum and maximum memory usage to 6GB for Minecraft. The SSD should also not be a bottle neck.

Do you know what could cause this weird behaviour?

One more thing: This is a multiplayer session and the server software is not running on this laptop. So the laptop only handles the Minecraft client.

Best Answer

The FPS matches the performance of an Intel HD Graphics (Ivy Bridge), so I suspect that the Java process isn't properly utilizing the NVIDIA GPU. This is also a common issue because NVIDIA driver doesn't by default run Java processes on discrete GPUs (for systems with Optimus).

Open up NVIDIA Control Panel, select "Manage 3D Settings" on the left and then "Program Settings" tab on the right. Click [Add] and locate the Java program you're using, which should have a name of javaw.exe. Select "High-performance NVIDIA processor" for it and save the settings. Close any running Minecraft (and better, other Java processes) and start Minecraft again. You should see a reasonable frame rate then.