System very slow (almost unusable) when done operation w/ large files

Hello guys! After update to Fedora 43, my system is very slow (almost unusable) when I do some operation with large files.

I tested by moving and/or deleting very large files from Steam (it’s library sized altmost 70 GB).

  • I use a healthy SSD, w/ /home formatted in btrfs.
  • When system is very freeze, gnome-shell and gvfsd-metada do some CPU usage.
  • The icons of application overview don’t load when it’s happen, what make look like SSD is very busy.

Thanks!

System Details Report


Hardware Information:

  • Hardware Model: Lenovo IdeaPad Gaming 3 15IHU6
  • Memory: 16.0 GiB
  • Processor: 11th Gen Intel® Core™ i5-11300H × 8
  • Graphics: Intel® Iris® Xe Graphics (TGL GT2)
  • Graphics 1: NVIDIA GeForce GTX 1650
  • Disk Capacity: 512.1 GB

Software Information:

  • Firmware Version: H4CN37WW(V2.06)
  • OS Name: Fedora Linux 43 (Workstation Edition)
  • OS Build: (null)
  • OS Type: 64-bit
  • GNOME Version: 49
  • Windowing System: Wayland
  • Kernel Version: Linux 6.17.7-300.fc43.x86_64

Btrfs is probably not ideal for use with Steam. The filesystem does CoW (Copy on Write) operations so a 70GB library would require extensive time and writes to move/delete.

The file system where Steam resides and functions would probably be much faster if used on an ext4 file system.

Thanks for your tip! When I format again, I will consider.

But… Before update to Fedora 43, I was possible to do this operations by not leaving all operation system very freeze.

Hm… Can you recommend me a way to get a log of this? Idk if it’s gnome thing. gnome-shell and gvfsd-metadata have some CPU usage when it’s is happening .

iotop or iostat will generate logs for you, given suitable flags.

Do you see these issues when moving many files, or only when moving large files? I’ve just copied my entire user directory containing bottles, steam and large numbers of cache files from one directory to another (on the same drive) and I can’t replicate any form of stuttering, slow-down, hang-ups, stalling or anything else that would give me any indication that the nvme drives were busy, which they certainly were.

KDE, F43, btrfs, current kernel, no tuning.

maybe related to this glib2 issue Making sure you're not a bot!

try to update your system and make sure glib2-2.86.1-2.fc43 is installed.

I copied and deleted a 60 GB game directory, and nothing happens. The operation was instantly finished.

I tried to move a game using Steam, and the operation take a relative longe time but making whole system bad to use (like a Windows PC with 100% HDD being used).

So I got:

  • Or Steam is really bad optimized to deal with btrfs;
  • Maybe I don’t realized before that it’s only happening in Steam, and not with general files operation;
  • A update that I have done before post here fixed the issue.

I was with this package updated already.

nothing was copied only reflinked. cp --reflink see man cp

No idea what steam is doing. You can try to experiment with chattr and disable COW (CopyOnWrite) for the whole Steam Library. Create a new directory and set NODATACOW. Then copy (not move) the content of your Steam Library into this new directory.

you can also check the enabled atrributes (compression?) for your steam library
lsattr -R /path/to/steam_library

Have you logged out or rebooted since the update?

I used Nautilus, but make sense, it was too fast lol.

I should add NODATACOW only to Steam Library directory, or their directory and all their files inside? (I’m not advanced, but I want to test it).

For what I’m seeing here, all files don’t have any attribute, but some have m (which means compression). But my Steam Library subvol (yes, my steam library is a separated subvol) have compression enabled on /etc/fstab:

UUID=(my uuid) /home/compartilhado/steam-library btrfs subvol=@steam-library,compress=zstd:1 0 0

Yes. And I was glib2-2.86.1-2.fc43 installed before this update I made.

it does not work for existing files. That’s the reason why you have to create a new dir and copy files from old to new. chattr +C empty_dir is applied to new files and directories created in empty_dir/.
Or you first move the files outside of olddir, then chattr +C olddir and then copy (not move) back to olddir.

unfortunately it’s not possible yet to add nodatacow to mount options for a subvolume. man 5 btrfs

What triggers the delays in Steam? Updating some games, or verifying data? Or does it happen everytime you do something in steam client?

I would expect more users to complain if this were a common problem.

Thank you! I copied my Steam library to a nodatacow directory to test, and my SSD was 100% usage and slow to use desktop entire . Idk if it’s normal.

I also tried to duplicate copied Steam library inside NOCOWDATA directory, and copy was instantly done, but I noticed compute was not that fast (it’s was usable this time, but noticeable slower than normal), but SSD was not 100% usage again. Idk if it’s normal too.

By what I noticed, just when move a game to another library (is the same SSD, but in different library. Both in /home).

what is the rationale for having more than one library on the same volume?