I bought a HP Stream 11 laptop with an N4120 / 4 GB Ram and 64 eMMC / sd card reader for traveling and one of the main selling points for me was the sd card reader to extend the internal storage easily.
Using Debian 12 / Kernel 6.1 I installed everything but /boot and the EFI partition on a reasonably sized (512 GB) sd card. By default I use nowadays Btrfs with transparent compression and noatime as my root filesystem, so this is what I used on the sd card, too.
I pulled an update for a git repository, around 100 MB in binary files (don't ask) to the laptop, and basically the update was received and afterwards for several minutes there was no progress. When I checked what was going on with htop I saw several Btrfs housekeeping processes working on the sd card and by that time I simply shut down the laptop. (My fault, I didn't record which processes exactly.)
RAM was okay (no swapping). The sd card also had much more than 10% free space for Btrfs. Additionally, the git pull did not update any files, so copy on write was not triggered.
After this experience I reinstalled Debian on the sd card, but his time with ext4/noatime. I pulled the exact same git repository, with 400 MB of new binary data, and git pull finished w/o trouble in less than a minute.
I am tech aware enough to set the 'C' attribute for virtual machines on Btrfs and run Btrfs on all my physical and virtual machines for several years now.
My deployment is 100% automated via Ansible, so I am sure the only change was Btrfs -> ext4.
I try to understand, why Btrfs performed so much worse than ext4 for me on exactly the same hardware and for the same workloads. Any explanations or pointers to places to find answers are very much appreciated!
Could you elaborate where and how you had better results for Btrfs? Did you refer to Btrfs on sd cards? Did you experience better results in regard to performance from Btrfs on sd cards compared to ext4 or exfat?