When reflexes acquired in your job are invading your daily life.

-When i was an intern in a retail, i had to fight against the urge to store the shelves during my own shopping sessions.

  • runiq@feddit.org
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    21 minutes ago

    Right, if you insist: Fedora Kinoite, Thinkpad X1 Carbon 4th Gen, some sysctl tweaks for low-latency audio.

    Yesterday I realized my password database (which I sync between computers/phones via Syncthing) was broken, because I had failed to regularly manage upgrades for my Syncthing container, and Syncthing had recently released a v2.0. My monitoring was insufficient and so I hadn’t noticed the Syncthing container on my laptop hadn’t been running since ~September. When I got Syncthing running again, I had already made changes to my password database on all three synced devices, so Syncthing generated a number of password.sync-conflict-<date>-<time>.kdbx files. Normally that’s not a big deal because my password manager has the ability to merge two password databases together, but this time around 400 entries showed issues when merging.

    So, armed with a big ol’ mug of mulled wine, I bit the bullet and started checking entries manually. After a trip to the KeePassXC bug tracker and the merger code, it turned out that the entries only differred in a few seconds in the _LAST_MODIFIED attribute, which can happen when my laptop is a) on battery, which causes the system clock to go a little off when the voltage drops and b) disconnected from the internet so the NTP client doesn’t have a change to sync time. Both happened a lot during the months the time my password database had failed to sync – we had gone to Paris (lovely place, can wholly recommend a visit) and my GF’s daughter is in the habit of watching shows on the computer without plugging in the power.

    So I shrugged, merged anyway, ignored the error messages, deleted the sync-conflict files, and called it a day. Maybe the wine played a role in that decision, maybe not.

    Thank you for coming to my TED‌ talk.

      • runiq@feddit.org
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        31 minutes ago

        Sure. The following are the bits that I’m pretty sure are universal. The rest – mostly configuring my audio interface – is IMO fairly specific to my system and can be found in my dotfiles.

        • Limits for Pipewire:
          # /etc/security/limits.d/25-pw-rlimits.conf
          @pipewire   - rtprio  95
          @pipewire   - nice    -19
          @pipewire   - memlock 4194304
          
        • Add the realtime group and grant it access to /dev/cpu_dma_latency so Ardour can prevent the system from going into idle:
          # /etc/udev/rules.d/40-realtime-privileges.rules
          KERNEL=="cpu_dma_latency", GROUP="realtime"
          
        • Add threadirqs and preempt=full to the kernel commandline
        • Disable VM swap readahead since Kinoite uses ZRAM anyways:
          # /etc/sysctl.d/50-audio.conf
          vm.page-cluster = 0
          
        • Set IO scheduler to None for SSDs and NVMe:
          # /etc/udev/rules.d/60-block-scheduler.rules
          ACTION=="add|change", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", KERNEL=="nvme?n?", ATTR{queue/scheduler}="none"
          ACTION=="add|change", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", KERNEL=="sd?", ATTR{queue/scheduler}="none"
          

        I’m not using a preempt kernel or anything like that; I’ve only gotten into audio when Pipewire had already hit the scene and I’ve found it to be good enough with these settings.