Linux suspend problem

When i wake my pc feom suspend the performance is very poor, moving windows is laggy etc. game performance si not affected, i also checked if it happens on xfce - it does. The same happens - using system (moving windows and navigating etc.) is a pain, i dont know how to describe it better

Ok, that’s an info to begin with.
First, some background why you can’t use Gnome to debug this:
Mutter (Gnome WM) has a longstanding bug with the exact same symptoms connected to vsync. This bug is most often hidden by a second bug. Suspend/resume or simply switching to VT and back works around the second bug, making the first bug surface. The workaround for the first bug is now freezing the display due to a third bug that was introduced with mutter-3.24 and that is still there.
So please switch to xfce for testing, suspend/resume and generate a new nvidia-bug-report. Then test if restarting the X server alone makes the problem go away after resume to have more infos.

Videos i found woth the silillar problem (both with nvidia card)

It seems like nvidia is a problem here. My friend also has this problem, he tested (also on gnome and xfce) if amd gpu would produce the same issue - it didi not on both amdgpu and amdgpu-pro. Its clearly nvidia`s fault.

I’m having the same issue and have for months.

After suspend, performance is considerably worse and I need to reboot to fix it. I am using KDE on Arch with a 980ti so I don’t believe it’s a gnome issue.

Here’s a practical test:

Fresh boot:

__GL_SYNC_TO_VBLANK=0 glxgears
104085 frames in 5.0 seconds = 20816.875 FPS
105471 frames in 5.0 seconds = 21094.119 FPS
105602 frames in 5.0 seconds = 21120.379 FPS

After suspend/resume:

__GL_SYNC_TO_VBLANK=0 glxgears
67730 frames in 5.0 seconds = 13545.928 FPS
68753 frames in 5.0 seconds = 13750.495 FPS
70471 frames in 5.0 seconds = 14094.160 FPS

I’ve lost ~30% 3d performance just by suspending/resuming the PC.

I don’t think it’s a KDE issue because if I restart the display manager (sudo systemctl restart sddm)

I still get poor performance:

__GL_SYNC_TO_VBLANK=0 glxgears
76633 frames in 5.0 seconds = 15326.591 FPS
80297 frames in 5.0 seconds = 16059.361 FPS
78971 frames in 5.0 seconds = 15793.507 FPS
76905 frames in 5.0 seconds = 15380.963 FPS

edit: I’ve also tried reloading the driver:

systemctl stop sddm
rmmod nvidia_modeset
rmmod nvidia_drm
rmmod nvidia
modprobe nvidia
modprobe nvidia_drm
modprobe nvidia_modeset
systemctl start sddm

The performance is still poor compared to a fresh boot. Suspending seems to cause an issue on the hardware that’s only fixed with a reboot.

I’m well aware this is an old topic, but according to my research it’s still the same issue. Here I’m running KDE and until I restart Plasma it’s hardly useable.

Here’s the bugreport dump: nvidia-bug-report.log.gz - Google Drive

uname -a
Linux kachna.kachna- 4.19.12-1-default #1 SMP PREEMPT Sat Dec 22 08:59:36 UTC 2018 (c634493) x86_64 x86_64 x86_64 GNU/Linux
Operating System: openSUSE Tumbleweed 20190115
KDE Plasma Version: 5.14.5
Qt Version: 5.12.0
KDE Frameworks Version: 5.53.0
Kernel Version: 4.19.12-1-default
OS Type: 64-bit
Processors: 8 × Intel® Core™ i7-3610QM CPU @ 2.30GHz
Memory: 7.7 GiB of RAM

I tried to add some options to modprobe as suggested on the Arch wiki but had no improvement

cat /etc/modprobe.d/50-nvidia-default.conf 
options nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=483 NVreg_DeviceFileMode=0660 NVreg_RegisterForACPIEvents=1 NVreg_EnableMSI=1
install nvidia PATH=$PATH:/bin:/usr/bin; if /sbin/modprobe --ignore-install nvidia; then   if /sbin/modprobe nvidia_uvm; then     if [ ! -c /dev/nvidia-uvm ]; then       mknod -m 660 /dev/nvidia-uvm c $(cat /proc/devices | while read major device; do if [ "$device" == "nvidia-uvm" ]; then echo $major; break; fi ; done) 0;        chown :video /dev/nvidia-uvm;     fi;   fi;   if [ ! -c /dev/nvidiactl ]; then     mknod -m 660 /dev/nvidiactl c 195 255;     chown :video /dev/nvidiactl;   fi;   devid=-1;   for dev in $(ls -d /sys/bus/pci/devices/*); do      vendorid=$(cat $dev/vendor);     if [ "$vendorid" == "0x10de" ]; then       class=$(cat $dev/class);       classid=${class%%00};       if [ "$classid" == "0x0300" -o "$classid" == "0x0302" ]; then          devid=$((devid+1));         if [ ! -c /dev/nvidia${devid} ]; then            mknod -m 660 /dev/nvidia${devid} c 195 ${devid};            chown :video /dev/nvidia${devid};         fi;       fi;     fi;   done;   /sbin/modprobe nvidia_drm;   if [ ! -c /dev/nvidia-modeset ]; then     mknod -m 660 /dev/nvidia-modeset c 195 254;     chown :video /dev/nvidia-modeset;   fi; fi