Newbie: NVIDIA Drivers, apps slow to load. Fedora 43 Workstation

Hello! I’m new to Fedora and Linux, first installation on a brand new MSI laptop. Saw a couple of tutorials and followed several guides.
I have two main issues:

  • The boot time and the time for opening apps is somewhat slow (takes 5-7 seconds to open “Files” for example, sometimes a bit more). My previous 8 year-old Windows laptop waaaay quicker. My current PC has an AMD Ryzen 9 8940HX, 32GB RAM and SSD memory. Is this normal?
  • The NVIDIA Drivers has been a gigantic headache. I’ve followed several guides to install it, but I don’t think it’s properly working. Everytime I turn on the PC, I get the message “NVIDIA kernel module missing. Falling back to nouveau”. I’m not even sure if the GPU being primarily used is the NVIDIA one. I think it’s the CPU integrated.

lspci -n -n -k | grep -A 2 -e VGA -e 3D

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GB205M [GeForce RTX 5070 Ti Mobile] [10de:2f18] (rev a1)
Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:14d1]
Kernel driver in use: nouveau

6a:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Raphael [1002:164e] (rev d8)
Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:14d1]
Kernel driver in use: amdgpu

I have most recently followed this guide: How to Install Nvidia Drivers on Fedora Linux so my system is up-to-date.

wrong guide.

see Making sure you're not a bot!
and especially
this guide : how to setup support nvidia drivers with secure boot enabled
Making sure you're not a bot!

you probably just need to follow the guide to import the keys with mokutil. Usually akmods has already created the keys, so you can skip this part.
The kernel modules are signed.

1 Like

Mark is right; follow the RPM Fusion guides. To summarize: Upgrade, set up secure boot, then install the NVIDIA driver last.

But one more thing: Since this is a new system, be sure to update the BIOS/firmware, before doing anything else, to reduce the likelihood of hitting weird bugs.

1 Like

To supplement the method given by Mark above and after reviewing the instructions you linked to there are additional steps that were omitted in the part you followed. Note that the guide you used was for f39, which was 2 years ago and quite some time before the 5070 GPU was available.

Nothing in that guide told you that the nvidia driver will not load when secure boot is enabled unless the modules are signed.
Additionally it did not tell you that the first time the driver is installed by following those steps that the driver is not signed and cannot be loaded by secure boot. The akmods package is what creates the signing key and that does not happen unless you reboot after it is installed or you create the key manually by following step 1 below. In any case the very first time the driver module is built it will not be signed. (an exception would be if the user installed the akmods package first and rebooted before installing the akmod-nvidia package). Nothing I know of tells a user to install akmods and reboot before installing the nvidia drivers so for almost all users the initial driver built is never signed.

To solve both those problems noted above

  1. Follow the guide linked by Mark to enroll the signing key into bios. The same steps are clearly shown in the file /usr/share/doc/akmods/README.secureboot.
  2. After rebooting at the end of enrolling the key into bios you need to ensure the driver module is properly rebuilt (and this time it will be signed automatically). The command sudo akmods --rebuild --force does that for you.
  3. A final reboot should now load the nvidia driver. This can be confirmed by the command lsmod | grep -E 'nvidia|nouveau'. If this returns several lines showing nvidia it will indicate success.
4 Likes

Thank you all very much for your help, I appreciate it! I tried to follow every single thing you recommended and I think it’s working now.

I believe this was what finally did the trick:

nvidia_uvm 4206592 0
nvidia_drm 159744 7
nvidia_modeset 2265088 5 nvidia_drm
nvidia 15896576 77 nvidia_uvm,nvidia_modeset
drm_ttm_helper 16384 2 amdgpu,nvidia_drm
video 81920 3 amdgpu,msi_wmi,nvidia_modeset

This means the NVIDIA drivers are perfectly fine and, whenever I run some game, the GPU used is the NVIDIA one, correct?
Additionally, the “NVIDIA kernel module missing. Falling back to nouveau” message did NOT appear during boot.

That shows the nvidia drivers loaded, so the gpu should b e working properly.

If the system is working as I understand it, the dGPU (nvidia) should automatically be used when there is a heavy graphics load and the iGPU (intel) would handle everything else.

It is also quite easy to use switcherooctl to specify which gpu to use.

Did installing the nvidia driver correctly and getting the driver to load at boot solve the slow load of apps for you?

1 Like

Thanks for the tips!

I do notice an improvement, yes! “Files” for instance is much quicker to open. However, I find the initial boot time long.

I have timed with a chronometer: my old Windows 10 laptop takes 19 seconds to get to the Desktop (including inserting the PIN code).
This current laptop takes ~59 seconds to get to the Desktop (at 20 seconds I get the screen to insert password from disk-based encryption / at 53 seconds I get the screen to insert my “profile” password).
The only Startup Application I have is ProtonVPN. When I disable it, I don’t notice any speed difference.
I’m considering reinstalling Fedora, this time without the disk-based encryption. Will this improve boot time speed? Because I’d be willing to sacrifice the encryption if that means a significant faster boot speed.

May be (I don’t really know), but before doing that, check first what spend too much time, just after a reboot with:

systemd-analyze
systemd-analyze blame | head -20

Paste its output here please (and with the </> button)

1 Like
Startup finished in 11.789s (firmware) + 3.339s (loader) + 1.362s (kernel) + 24.892s (initrd) + 11.660s (userspace) = 53.044s 
graphical.target reached after 11.660s in userspace.
25.916s sys-module-fuse.device
25.688s sys-devices-platform-serial8250-serial8250:0-serial8250:0.2-tty-ttyS2.device
25.688s dev-ttyS2.device
25.687s sys-devices-platform-serial8250-serial8250:0-serial8250:0.1-tty-ttyS1.device
25.687s dev-ttyS1.device
25.684s sys-devices-platform-serial8250-serial8250:0-serial8250:0.0-tty-ttyS0.device
25.684s dev-ttyS0.device
25.684s dev-tpmrm0.device
25.684s sys-devices-LNXSYSTM:00-LNXSYBUS:00-MSFT0101:00-tpmrm-tpmrm0.device
25.674s sys-module-configfs.device
25.637s dev-ttyS3.device
25.637s sys-devices-platform-serial8250-serial8250:0-serial8250:0.3-tty-ttyS3.device
25.632s dev-tpm0.device
25.632s sys-devices-LNXSYSTM:00-LNXSYBUS:00-MSFT0101:00-tpm-tpm0.device
25.510s dev-disk-by\x2ddesignator-esp.device
25.510s dev-disk-by\x2dpartuuid-d23718b6\x2dcc26\x2d4267\x2d8ad7\x2da6c1f062b621.device
25.510s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2duuid-85FC\x2d156D.device
25.510s dev-disk-by\x2duuid-85FC\x2d156D.device
25.510s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2dpartuuid-d23718b6\x2dcc26\x2d4267\x2d8ad7\x2da6c1f062b621.device
25.510s dev-disk-by\x2dpartlabel-EFI\x5cx20System\x5cx20Partition.device

initrd is slow from your systemd-analyze output. You tin takes 24.8 seconds, mine is 1.4 seconds and this isn’t some powerhouse machine I’m using.

There’s not quite enough output in head -20 - post all of it and you might find it useful to run systemd-analyze plot | fpaste and paste the url it gives you here.

That will produce an svg showing the entire boot process starting in parallel - w’ell be able to see why initrd takes so long to complete execution. If we can lop 20 seconds from your initrd time you’ll be booting in about 30 seconds, and 11 of that is waiting for the BIOS to POST.

2 Likes

I tried it again and retrieved the exact same…

You will if you issue the same command again - it used head to filter the output to the top 20 lines… remove the head like so

systemd-analyze blame

The plot shows that NetworkManager-wait-online.service is enabled and takes 5.988s.
IMO this should be disabled on a laptop.

I’m pretty sure that the long delay to have the prompt for the disk encryption is due to
plymouth waiting for the amdgpu card to be (partly may be) initialized.

@anothermindbomb, should we suggest to reboot without rhgb and to redo
systemd-analyze and the plot ?

1 Like
1min 30.996s sys-module-fuse.device
1min 30.769s sys-devices-platform-serial8250-serial8250:0-serial8250:0.1-tty-tt>
1min 30.769s dev-ttyS1.device
1min 30.766s dev-ttyS3.device
1min 30.766s sys-devices-platform-serial8250-serial8250:0-serial8250:0.3-tty-tt>
1min 30.766s dev-ttyS0.device
1min 30.766s sys-devices-platform-serial8250-serial8250:0-serial8250:0.0-tty-tt>
1min 30.762s sys-devices-platform-serial8250-serial8250:0-serial8250:0.2-tty-tt>
1min 30.762s dev-ttyS2.device
1min 30.761s sys-devices-LNXSYSTM:00-LNXSYBUS:00-MSFT0101:00-tpm-tpm0.device
1min 30.761s dev-tpm0.device
1min 30.758s sys-devices-LNXSYSTM:00-LNXSYBUS:00-MSFT0101:00-tpmrm-tpmrm0.device
1min 30.758s dev-tpmrm0.device
1min 30.750s sys-module-configfs.device
1min 30.602s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.602s sys-devices-pci0000:00-0000:00:02.2-0000:03:00.0-nvme-nvme0-nvme0n>
1min 30.602s dev-disk-by\x2ddesignator-esp.device
1min 30.602s dev-disk-by\x2duuid-85FC\x2d156D.device
1min 30.602s dev-disk-by\x2ddiskseq-1\x2dpart1.device
1min 30.602s dev-disk-by\x2dpartuuid-d23718b6\x2dcc26\x2d4267\x2d8ad7\x2da6c1f0>
1min 30.602s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.602s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart1.devi>
1min 30.602s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00\x>
1min 30.602s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.602s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00_1>
1min 30.602s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.602s dev-disk-by\x2did-nvme\x2deui.000000000000000100a0752552306f00\x2d>
1min 30.602s dev-nvme0n1p1.device
1min 30.602s dev-disk-by\x2dpartlabel-EFI\x5cx20System\x5cx20Partition.device
1min 30.598s dev-disk-by\x2duuid-09da86b7\x2dcfa1\x2d40d3\x2d9741\x2d64b66a0876>
1min 30.598s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00_1>
1min 30.598s dev-disk-by\x2did-nvme\x2deui.000000000000000100a0752552306f00\x2d>
1min 30.598s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00\x>
1min 30.598s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.598s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart3.devi>
1min 30.598s dev-nvme0n1p3.device
1min 30.598s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.598s sys-devices-pci0000:00-0000:00:02.2-0000:03:00.0-nvme-nvme0-nvme0n>
1min 30.598s dev-disk-by\x2dpartuuid-c38c5bde\x2d05e0\x2d406b\x2d8265\x2ded7d1e>
1min 30.598s dev-disk-by\x2ddiskseq-1\x2dpart3.device
1min 30.598s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.582s dev-nvme0n1p2.device
1min 30.582s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00\x>
1min 30.582s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart2.devi>
1min 30.582s sys-devices-pci0000:00-0000:00:02.2-0000:03:00.0-nvme-nvme0-nvme0n>
1min 30.582s dev-disk-by\x2ddesignator-xbootldr.device
1min 30.582s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00_1>
1min 30.582s dev-disk-by\x2dpartuuid-27f8aed6\x2d8d08\x2d4439\x2db2cd\x2d07f5f3>
1min 30.582s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.582s dev-disk-by\x2ddiskseq-1\x2dpart2.device
1min 30.582s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.582s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1\x2dpart-by\x2>
1min 30.582s dev-disk-by\x2duuid-8c0d5b72\x2dba24\x2d411b\x2dbbd9\x2dc74ad3986a>
1min 30.582s dev-disk-by\x2did-nvme\x2deui.000000000000000100a0752552306f00\x2d>
1min 30.572s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00_1>
1min 30.572s dev-disk-by\x2ddiskseq-1.device
1min 30.572s dev-nvme0n1.device
1min 30.572s sys-devices-pci0000:00-0000:00:02.2-0000:03:00.0-nvme-nvme0-nvme0n>
1min 30.572s dev-disk-by\x2dpath-pci\x2d0000:03:00.0\x2dnvme\x2d1.device
1min 30.572s dev-disk-by\x2did-nvme\x2dMicron_2500_MTFDKBA1T0QGN_253352306F00.d>
1min 30.572s dev-disk-by\x2did-nvme\x2deui.000000000000000100a0752552306f00.dev>
1min 29.226s dracut-initqueue.service
1min 28.849s sys-devices-pci0000:00-0000:00:08.1-0000:6a:00.0-drm-card1-card1\x>
1min 28.483s systemd-cryptsetup@luks\x2d09da86b7\x2dcfa1\x2d40d3\x2d9741\x2d64b>
      5.989s NetworkManager-wait-online.service
      2.442s plymouth-quit-wait.service
       997ms initrd-switch-root.service
       678ms fwupd.service
       500ms firewalld.service
       366ms systemd-udev-trigger.service
       284ms upower.service
       237ms NetworkManager.service
       237ms packagekit.service
       206ms me.proton.vpn.split_tunneling.service
       174ms abrtd.service
       173ms akmods.service
       149ms user@1000.service
       122ms tuned.service
       117ms dkms.service
       116ms systemd-journal-flush.service
       100ms udisks2.service
        94ms systemd-tmpfiles-setup.service
        92ms systemd-tmpfiles-setup-dev-early.service
        86ms var-lib-nfs-rpc_pipefs.mount
        84ms systemd-battery-check.service
        82ms tuned-ppd.service
        77ms polkit.service
        77ms chronyd.service
        76ms accounts-daemon.service
        71ms lvm2-monitor.service
        69ms systemd-journald.service
        68ms bluetooth.service
        64ms systemd-udevd.service
        58ms systemd-backlight@backlight:amdgpu_bl1.service
        55ms systemd-hostnamed.service
        53ms systemd-logind.service
        53ms systemd-fsck@dev-disk-by\x2duuid-85FC\x2d156D.service
        52ms systemd-fsck@dev-disk-by\x2duuid-8c0d5b72\x2dba24\x2d411b\x2dbbd9\>
        52ms sssd-kcm.service
        51ms dracut-cmdline.service
        48ms ModemManager.service
        44ms switcheroo-control.service
        41ms dev-hugepages.mount
        41ms systemd-tmpfiles-setup-dev.service
        40ms boot-efi.mount
        40ms dev-mqueue.mount
        39ms rtkit-daemon.service
        39ms sys-kernel-debug.mount
        39ms sys-kernel-tracing.mount
        38ms systemd-resolved.service
        37ms avahi-daemon.service
        36ms systemd-sysctl.service
        36ms plymouth-start.service
        34ms authselect-apply-changes.service
        34ms dbus-broker.service
        33ms systemd-random-seed.service
        32ms systemd-userdbd.service
        32ms systemd-zram-setup@zram0.service
        31ms systemd-fsck-root.service
        31ms gssproxy.service
        30ms boot.mount
        29ms home.mount
        27ms dev-zram0.swap
        26ms uresourced.service
        25ms bolt.service
        24ms user-runtime-dir@1000.service
        24ms auditd.service
        24ms plymouth-read-write.service
        24ms colord.service
        24ms cups.service
        23ms tmp.mount
        22ms systemd-rfkill.service
        21ms rsyslog.service
        20ms smartd.service
        20ms plymouth-switch-root.service
        20ms virtqemud.service
        20ms wpa_supplicant.service
        19ms dracut-shutdown.service
        18ms rpc-statd-notify.service
        18ms foomaticrip-upgrade.service
        15ms dracut-pre-udev.service
        15ms audit-rules.service
        14ms systemd-machined.service
        14ms modprobe@loop.service
        13ms dracut-pre-pivot.service
        11ms systemd-vconsole-setup.service
        11ms kmod-static-nodes.service
        11ms systemd-network-generator.service
        10ms systemd-udev-load-credentials.service
        10ms sys-fs-fuse-connections.mount
         9ms initrd-cleanup.service
         9ms thermald.service
         8ms systemd-userdb-load-credentials.service
         8ms systemd-remount-fs.service
         7ms systemd-modules-load.service
         7ms systemd-sysusers.service
         7ms gdm.service
         7ms initrd-udevadm-cleanup-db.service
         5ms systemd-user-sessions.service
         5ms systemd-update-utmp.service
         4ms initrd-parse-etc.service
         2ms sshd-unix-local.socket
         1ms lvm2-lvmpolld.socket
         1ms systemd-coredump.socket
       803us systemd-factory-reset.socket
       798us systemd-ask-password.socket
       743us systemd-bootctl.socket
       590us systemd-creds.socket
       525us systemd-udevd-control.socket
       476us systemd-sysext.socket
       438us cups.socket
       323us dbus.socket
       287us systemd-userdbd.socket
       278us dm-event.socket
       272us systemd-importd.socket
       270us pcscd.socket
       238us systemd-resolved-monitor.socket
       219us virtqemud.socket
       204us avahi-daemon.socket
       203us virtproxyd.socket
       202us systemd-machined.socket
       194us iscsid.socket
       179us systemd-udevd-varlink.socket
       163us virtinterfaced.socket
       141us iscsiuio.socket
       131us systemd-journald-audit.socket
       130us virtlockd.socket
       127us systemd-hostnamed.socket
       118us virtnetworkd.socket
       117us sssd-kcm.socket
       114us virtnwfilterd.socket
       110us virtnodedevd.socket
       110us virtsecretd.socket
       110us virtlockd-admin.socket
       107us systemd-resolved-varlink.socket
       107us systemd-logind-varlink.socket
       100us virtstoraged.socket
        76us virtlogd.socket
        74us virtlogd-admin.socket
        72us virtproxyd-admin.socket
        64us virtproxyd-ro.socket
        62us virtstoraged-ro.socket
        62us virtnodedevd-admin.socket
        61us virtinterfaced-admin.socket
        61us virtnodedevd-ro.socket
        60us virtqemud-admin.socket
        60us virtsecretd-admin.socket
        60us virtnwfilterd-admin.socket
        59us virtinterfaced-ro.socket
        59us virtnetworkd-admin.socket
        57us virtnwfilterd-ro.socket
        57us virtstoraged-admin.socket
        57us virtnetworkd-ro.socket
        55us virtsecretd-ro.socket
        54us virtqemud-ro.socket
        47us systemd-journald-dev-log.socket
        30us systemd-journald.socket
        27us systemd-rfkill.socket
        10us systemd-udevd-kernel.socket
lines 197-219/219 (END)

$ systemctl disable NetworkManager-wait-online.service
Removed ‘/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service’.

I believe I’ve disabled it with this command, correct?

If that’s not relevant/important, I’m up for trying it!

Yes.

This is totally safe and will only apply to one boot.
Proceed as follows:

  • at the grub prompt, type e to edit the boot configuration
  • move to the linux line with the arrow keys
  • suppress the rhgb parameter
  • continue booting by typing Ctrl-x (press both Control and x keys)

When in your session:

  • re-paste systemd-analyze
  • execute systemd-analyze plot | fpaste

Apologies for my ignorance, how do I get to here?

It is related with this?

No: this will make a permanent change.

When the machine starts, repeatedly tap the escape key to bring up the grub menu.

You will have the highlighted line specifying the last kernel you installed, probably
the 6.18.10-200.fc43 one, followed by 2 older kernels.

Stay on the highlighted line, then follow what I said.

1 Like

Absolutely - great idea. I’m not a laptop user so I don’t actually know what one looks like when it’s booting. Don’t use disk encryption either so I’m ignorant in that department.

1 Like