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!

  • wolfOP
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    I am pretty sure snapshots were not involved. I run ‘vanilla’ Debian 12 and just choose Btrfs instead of ext4 for /. AFAIK nothing is set up to create snapshots. Still, thank you very much for this idea, could have been a valid point.