memory-leaks

Still reachable: lots of words in many pages.
git clone https://git.kevinlegouguec.net/memory-leaks
Log | Files | Refs | README | LICENSE

killing-time.org (25856B)


      1 On November 19 2024, LDLC's off-brand SSD died on me.  RIP.
      2 Re-installed Tumbleweed on the replacement (Kingston SA400S3) on
      3 November 28.
      4 
      5 Since then, I have been getting uncannily reproducible stuttering and
      6 frame drops (60↘40±10) in Hades Ⅱ when moving toward effect- or
      7 particle-heavy sub-areas of the hub rooms (e.g. toward the Cauldron at
      8 the Crossroads, or toward the Silver Pool in the Training Grounds).
      9 No idea WTF, those areas ran fine before.
     10 
     11 - "High" graphics setting at native 1920×1080 resolution.
     12   - Tried "Low" graphics, lowered resolution, disabled vsync, switched
     13     to Windowed mode: symptoms persist.
     14 - Proton Experimental.
     15   - Tried a couple of old Proton versions: symptoms persist.
     16 - Reinstalled game & nuked everything under
     17   - =~/.cache/mesa_shader_cache*=
     18   - =~/.cache/radv_builtin_shaders*=
     19   - =~/.config/unity3d=
     20   - =~/.local/share/Steam=
     21   - =~/.local/share/vulkan/=
     22   - =~/.steam*=
     23   in case "stale shaders" were to blame or something.
     24 - Tumbleweed/Plasma/Wayland session.
     25   - Tried X11: symptoms persist.
     26 - Reducing noise with
     27   - ~balooctl6 suspend~
     28   - ~swapoff -a~ (RAM nowhere near exhausted)
     29 
     30 Well then.
     31 * CPU frequency scaling?
     32 (Hey 👋 A warning: this was the first rabbit hole I burrowed into.
     33 Spoiler alert: nothing I learned here solved the problem.  Chronicled
     34 the journey anyway since I wandered through interesting spots)
     35 
     36 The Plasma "Power Management" tray widget says "Power Profile" is "Not
     37 available".  Not sure whether that was the case with the previous
     38 installation; maybe I had something configured or installed to enable
     39 this?
     40 
     41 Internet says "install and enable power-profiles-daemon", but
     42 that is already on:
     43 
     44 #+begin_example
     45 $ systemctl status power-profiles-daemon.service
     46 ● power-profiles-daemon.service - Power Profiles daemon
     47      Loaded: loaded (/usr/lib/systemd/system/power-profiles-daemon.service; disabled; preset: disabled)
     48      Active: active (running) since Sun 2024-12-01 11:46:32 CET; 45min ago
     49  Invocation: b2545a02bc9642b7aeb5f370e8b50e7c
     50    Main PID: 2289 (power-profiles-)
     51       Tasks: 4 (limit: 18320)
     52         CPU: 52ms
     53      CGroup: /system.slice/power-profiles-daemon.service
     54              └─2289 /usr/libexec/power-profiles-daemon
     55 #+end_example
     56 
     57 But:
     58 
     59 #+begin_example
     60 $ powerprofilesctl
     61 ,* balanced:
     62     PlatformDriver:     placeholder
     63 
     64   power-saver:
     65     PlatformDriver:     placeholder
     66 #+end_example
     67 
     68 Internet says I am missing the right scaling driver, and sounds very
     69 keen on enabling =amd_pstate=, which I do not seem to have available.
     70 =/proc/config.gz= suggests the kernel configuration supports it, but
     71 =cpupower= does not know about it:
     72 
     73 #+begin_example
     74 $ zcat /proc/config.gz | grep -i pstate
     75 CONFIG_X86_INTEL_PSTATE=y
     76 CONFIG_X86_AMD_PSTATE=y
     77 CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3
     78 # CONFIG_X86_AMD_PSTATE_UT is not set
     79 
     80 $ cpupower frequency-info
     81 analyzing CPU 5:
     82   driver: acpi-cpufreq
     83   CPUs which run at the same hardware frequency: 5
     84   CPUs which need to have their frequency coordinated by software: 5
     85   maximum transition latency:  Cannot determine or is not supported.
     86   hardware limits: 1.40 GHz - 3.70 GHz
     87   available frequency steps:  3.70 GHz, 1.70 GHz, 1.40 GHz
     88   available cpufreq governors: ondemand performance schedutil
     89   current policy: frequency should be within 1.40 GHz and 3.70 GHz.
     90                   The governor "schedutil" may decide which speed to use
     91                   within this range.
     92   current CPU frequency: Unable to call hardware
     93   current CPU frequency: 3.30 GHz (asserted by call to kernel)
     94   boost state support:
     95     Supported: yes
     96     Active: no
     97 #+end_example
     98 
     99 =dmesg= offers:
    100 
    101 #+begin_example
    102 $ sudo dmesg -H
    103 […] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled
    104 #+end_example
    105 
    106 Though:
    107 
    108 #+begin_example
    109 $ lscpu | grep -i cppc
    110 Flags:                                […] cppc […]
    111 #+end_example
    112 
    113 So ACPI problem?  Lots of posts mention =amd_= parameters on the
    114 kernel command-line, but AFAIU those posts are stale with newer
    115 kernels (6.11 as of this writing) which automatically (attempt to)
    116 load the =amd_pstate= driver.
    117 
    118 Went through the UEFI menu and found nothing related to ACPI or
    119 [[https://forum.level1techs.com/t/amd-p-state-driver/197885/24][X2APIC]].  Skeptical of UEFI settings anyway, since I did not change
    120 them between the old and new installations.
    121 
    122 {{{narrator(Some time later)}}}
    123 
    124 Probably not ACPI, =dmesg= is choke full of ACPI noise.  OTOH, using
    125 some diagnosis methods from [[https://bugzilla.kernel.org/show_bug.cgi?id=218171][this kernel bug report]]:
    126 
    127 #+begin_example
    128 $ find /sys/devices -name '*cppc*'
    129 🦗
    130 #+end_example
    131 
    132 (~acpidump ; acpixtract ; iasl ; grep -i cpc *.dsl~ also yields 🦗,
    133 but =iasl= complains about "unresolved" "control methods", so 🤷)
    134 
    135 {{{narrator(Some time later)}}}
    136 
    137 [[https://wiki.archlinux.org/title/CPU_frequency_scaling#amd_pstate][ArchWiki]] does say "Change /Enable CPPC/ […] from /Auto/ to /Enabled/".
    138 My UEFI menu tucks that under /Overclocking → Advanced CPU
    139 Configuration → AMD CBS → CPPC CTRL/.  That change *does* convince
    140 Linux to enable =amd_pstate=; going over the previous tests in reverse
    141 order:
    142 
    143 #+begin_example
    144 $ [… acpidump && acpixtract && iasl … ] && grep -i cpc *.dsl
    145 ssdt1.dsl:        Name (_CPC, Package (0x17)  // _CPC: Continuous Performance Control
    146 [… repeats 12 times …]
    147 
    148 $ find /sys/devices -name '*cppc*' -o -name '*pstate*' | tr -s '[:digit:]' N | sort -u
    149 /sys/devices/system/cpu/amd_pstate
    150 /sys/devices/system/cpu/cpufreq/policyN/amd_pstate_highest_perf
    151 /sys/devices/system/cpu/cpufreq/policyN/amd_pstate_hw_prefcore
    152 /sys/devices/system/cpu/cpufreq/policyN/amd_pstate_lowest_nonlinear_freq
    153 /sys/devices/system/cpu/cpufreq/policyN/amd_pstate_max_freq
    154 /sys/devices/system/cpu/cpufreq/policyN/amd_pstate_prefcore_ranking
    155 /sys/devices/system/cpu/cpuN/acpi_cppc
    156 
    157 $ sudo dmesg -H
    158 [… ominous silence about amd_pstate …]
    159 
    160 $ cpupower frequency-info
    161 analyzing CPU 1:
    162   driver: amd-pstate-epp
    163   CPUs which run at the same hardware frequency: 1
    164   CPUs which need to have their frequency coordinated by software: 1
    165   maximum transition latency:  Cannot determine or is not supported.
    166   hardware limits: 400 MHz - 4.31 GHz
    167   available cpufreq governors: performance powersave
    168   current policy: frequency should be within 2.38 GHz and 4.31 GHz.
    169                   The governor "powersave" may decide which speed to use
    170                   within this range.
    171   current CPU frequency: Unable to call hardware
    172   current CPU frequency: 3.57 GHz (asserted by call to kernel)
    173   boost state support:
    174     Supported: yes
    175     Active: yes
    176     AMD PSTATE Highest Performance: 255. Maximum Frequency: 4.31 GHz.
    177     AMD PSTATE Nominal Performance: 219. Nominal Frequency: 3.70 GHz.
    178     AMD PSTATE Lowest Non-linear Performance: 141. Lowest Non-linear Frequency: 2.38 GHz.
    179     AMD PSTATE Lowest Performance: 24. Lowest Frequency: 400 MHz.
    180 
    181 $ powerprofilesctl
    182   performance:
    183     CpuDriver:	amd_pstate
    184     Degraded:   no
    185 
    186 ,* balanced:
    187     CpuDriver:	amd_pstate
    188     PlatformDriver:	placeholder
    189 
    190   power-saver:
    191     CpuDriver:	amd_pstate
    192     PlatformDriver:	placeholder
    193 #+end_example
    194 
    195 And lo, the 🍃↔🚀 slider appears in the Power Management tray widget.
    196 
    197 Nervous about entering the "Overclocking" UEFI zone though, and
    198 concerned about these "Maximum frequencies".
    199 
    200 /And does it even help with the game?/
    201 
    202 🥁
    203 
    204 No.  No it does not; no discernible difference in FPS nor vibes.
    205 
    206 Will assume this new baseline cannot hurt - OT1H "overclocking" is
    207 scary, OTOH Linux now has a finer handle on the CPU and hopefully will
    208 not overwork it to death?
    209 
    210 -----
    211 
    212 Chronologically, the events of the following addenda were weaved
    213 together with those of the next section; figured I would append them
    214 here to give the reader some closure on this shaggy dog subplot.
    215 ** Addendum Ⅰ — CPPC Considered Harmful, apparently
    216 [[https://www.techpowerup.com/forums/threads/what-fixed-stuttering-and-random-framerate-spikes-in-games-for-me.327264/][aska33j proclaims]] that /disabling CPPC/ "fixed stuttering and random
    217 framerate spikes in games for [them]" so… roundtrip to UEFI, disabling
    218 that.  The =amd_pstate= warning is back; the "Power Profile" slider is
    219 no longer accessible in the systray widget; no discernible effect
    220 in-game anyway.
    221 ** Addendum Ⅱ — BIOS update
    222 For the modest price of [[file:maintenance.org::*Our protagonist sets forth][a BIOS update]], the =amd_pstate= driver now
    223 initializes successfully without me having to mess with
    224 {{{glitch(Overclocking Settings)}}}.  Welcome back =amd_pstate= 🤝
    225 * Sᴇᴠᴇʀᴀʟ Wᴇᴇᴋꜱ Lᴀᴛᴇʀ
    226 - [[https://www.gamingonlinux.com/forum/topic/5475/page=1/][ridge reports]] "bad frame pacing on AMDGPU",
    227   - when vsync is turned off: a non-factor in my testing,
    228   - lots of useful information in that thread though and
    229     interesting-sounding pointers,
    230   - [[https://www.gamingonlinux.com/forum/topic/5475/page=2/#r42519][Shmerl]] says:
    231     - games can cause stutter by underloading the GPU, causing it to
    232       drop out of "high performance mode",
    233       - (=amdgpu_top= and =radeontop= do confirm that lag spikes
    234         correlate with GPU usage drop)
    235     - see [[https://gitlab.freedesktop.org/drm/amd/-/issues/1500][drm/amd#1500]]:
    236       - /lots/ of sysfs noodling there; unfortunately, none of the
    237         suggested settings for =power_dpm_force_performance_level= &
    238         =pp_power_profile_mode= change the symptoms.
    239   - Since GamingOnLinux seems full of knowledgeable folks, posted [[https://web.archive.org/web/20241220053228/https://www.gamingonlinux.com/forum/topic/6437/][a
    240     new topic]] there… but then [[https://web.archive.org/web/20250102185206/https://www.gamingonlinux.com/forum/topic/6463/][the UK OSA dropped]].
    241 
    242 - In [[https://gitlab.freedesktop.org/drm/amd/-/issues/3618#note_2689087][this drm/amd#3618 thread]], @agd5f suggests "6.11 stable kernels"
    243   include a fix for the issue at hand there and a further rework "was
    244   submitted to 6.13"; @mattipulkkinen reports happy results with
    245   6.13-rc2; symptoms persist here with 6.12.8.
    246 
    247 - Piggybacked onto [[https://gitlab.freedesktop.org/mesa/mesa/-/issues/11300][mesa/mesa#11300]]:
    248   - common: Hades Ⅱ, iGPU, recent kernel & Mesa, Proton Experimental,
    249   - differences: Fedora, GNOME, X11,
    250   - noteworthy: good performance on Windows,
    251   - suggestion by @Venemo: downgrade & bisect Mesa.
    252     - Tempting, though scared of bricking graphical sessions and/or
    253       ending up with a frankensystem (intalling binaries under a
    254       prefix: easy; keeping track of runtime config tweaks and cache
    255       artifacts: fraught).
    256     - {{{narrator(Ten false leads later)}}}
    257     - The factory@ announcements say Mesa was upgraded from 24.2.7 to
    258       24.3.0 [[https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/message/6YXCWH4C7Z2PNP5UUWCQPH5KNI2JILYV/][in snapshot 20241124]].  The Mesa docs explain how to test
    259       uninstalled builds (kudos for the clear
    260       instructions![fn:mesa-builddeps]) so gave it a shot: a freshly
    261       built 24.2.7 behaves exactly like the current distro version
    262       (24.3.4), so no smoking gun there.
    263 
    264 [fn:mesa-builddeps] Took a couple of kicks to start the build engine:
    265 ~zypper source-install --build-deps-only Mesa~ did not cut it.
    266 Probably should have looked at Tumbleweed's spec file to get a
    267 matching build configuration; instead ~zypper install~'ed my way to
    268 victory - needed ~libclc llvm llvm-devel libLLVMSPIRVLib-devel clang
    269 clang-devel python3-ply rust rust-bindgen rust-cbindgen~.
    270 
    271 
    272 - In [[https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/issues/164][upower/power-profiles-daemon#164]], @Nyan reports problematic iGPU
    273   capping; not convinced this is applicable though, given the reported
    274   symptoms (video playback is fine here).
    275 
    276 - Seen reports of Variable Refresh Rate causing problems:
    277   - searched high and low to understand why VRR appears nowhere in
    278     Plasma settings, despite the start menu turning up "Display
    279     Configuration" when searching for "VRR",
    280   - mystery solved by ~kscreen-doctor -o~: =Vrr: incapable= 🤷
    281 
    282 - Found that forum post about leaving CPPC disabled to fix
    283   stuttering—see [[*Addendum Ⅰ — CPPC Considered Harmful, apparently][addendum Ⅰ in the previous section]].
    284 
    285   No visible effect for me; left it disabled anyway from there on
    286   since enabling it never had an effect in the first place, and I am
    287   keen on experimenting one parameter at a time.
    288 
    289 - Looking at Steam forums, [[https://steamcommunity.com/app/1145350/discussions/1/596260472619121965/][some folks]] do report FPS drops /shortly
    290   after the update/:
    291   #+begin_quote
    292   it started fine after the major update, now suddenly im stuck with
    293   40~50 fps with micro sutters
    294   — December 6 2024
    295   #+end_quote
    296 
    297 - After AMD drivers & Mesa, figured I could look at vkd3d's issue
    298   tracker.  [[https://github.com/doitsujin/dxvk/issues/4436][doitsujin/dxvk#4436]] and
    299   [[https://github.com/ValveSoftware/steam-for-linux/issues/11446][ValveSoftware/steam-for-linux#11446]] looked somewhat promising:
    300   reports of lag on "KDE Tumbleweed Wayland", not long before my
    301   symptoms began (November 2024)); alas, ~LD_PRELOAD=~ does not help.
    302   - {{{narrator(clicks through duplicates\, out of GitHub & into
    303     [[https://reddit.com/r/linux_gaming/comments/1htcxfj/system_green_screens_regularly_during_more/m5da9ey/][Reddit]])}}}
    304 
    305     #+begin_quote
    306     Alternatively, remove the offending line in
    307     =/usr/share/drirc.d/00-radv-defaults.conf=
    308     #+end_quote
    309 
    310     {{{narrator(discovers [[https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/util/00-radv-defaults.conf][=/usr/share/drirc.d/=]])}}}
    311 
    312     Computers were a mistake.
    313 
    314 - Peeked at [[https://github.com/HansKristian-Work/vkd3d-proton/blob/master/.github/ISSUE_TEMPLATE/bug_report.md][vkd3d-proton's issue template]] and idly ran with
    315   ~PROTON_LOG=1~.  Over the course of 30 seconds or so, the log file
    316   gets flooded with 3MB's worth of =trace:unwind:dump_unwind_info= 🤨
    317 
    318 - VRAM usage is always close to full, even when not playing games.
    319   "At rest", the Plasma shell consumes ≈410MB over 512MB available.
    320   - [[https://forum.kde.org/viewtopic.php%3Ff=111&t=165779.html][Lissanro reported]] in 2020 that changing Plasma's rendering backend
    321     to /Software/ freed up some VRAM.
    322   - Indeed, bringing up the Plasma Renderer menu, switching to
    323     /Software/, logging out & back in frees up some VRAM.  It also
    324     yields compositing glitches 🤷
    325   - More to the point, /it has no effect on the symptoms in-game/.
    326 
    327 - Figured I would ask ValveSoftware/Proton about the logs; filed
    328   [[https://github.com/ValveSoftware/Proton/issues/8424][#8424]]; got dup'd into [[https://github.com/ValveSoftware/Proton/issues/7805][#7805]], per the "one report per game" policy.
    329   That issue is about a /crash on Alt-Tab/, with an /Nvidia dGPU/;
    330   unsure how lumping our two reports together will help.  Had to try 🤷
    331 
    332 - Found [[https://gitlab.freedesktop.org/drm/amd/-/issues/2516][drm/amd#2516]]; noticed that I have
    333   - =/sys/module/gpu_sched/parameters/sched_policy=: 1
    334   - =/sys/module/amdgpu/parameters/sched_policy=: 0
    335   Changed the kernel command-line to set the former to 0, as suggested
    336   in that issue; symptoms persist.  No idea what the latter is about,
    337   nor how it differs from the former.  I can find [[https://docs.kernel.org/gpu/amdgpu/module-parameters.html#sched-policy-int][the docs for amdgpu]]
    338   but nor for gpu_sched.
    339 
    340 - [[https://old.reddit.com/r/archlinux/comments/1gzy0xd/amdgpu_regression_on_kernel_612_choppy/m1dn05z/][Some folks]] report =amdgpu.dcdebugmask=0x10= (≡ =DC_DISABLE_PSR=)
    341   fixing "choppy performance".  No effect here.  Could try setting
    342   [[https://www.kernel.org/doc/html/v6.13/gpu/amdgpu/module-parameters.html#dcdebugmask-uint][other values]]…
    343 
    344 - I caved—not sure why, I think seeing the amount of unhappy kernel
    345   noises in journalctl got to me—and grabbed the latest BIOS from
    346   msi.com, flashed it, which restored =amd_pstate=.  See [[*Addendum Ⅱ — BIOS update][addendum Ⅱ in
    347   the previous section]].
    348 
    349   OT1H now power management interfaces (Plasma's, powerprofilesctl,
    350   cpupower) seem "fully operational"; OTOH symptoms feel worse: the
    351   game can no longer sustain 60 FPS even in sub-areas that were
    352   previously fine.  There is still a visible difference between
    353   - OK-ish sub-areas - 55 FPS with occasional lag spike,
    354   - bad sub-areas with out-of-control sawtooth FPS.
    355 * The Warsong Update
    356 Whew these new Crossroads do look great, so long as I stand still.
    357 Artemis is paying a visit?  There's a new garden corner with a Hades
    358 bust and a narrator prompt?  There's animals /all over the place/, and
    359 *[[https://store.steampowered.com/news/app/1145350/view/503942841152569404][what's this?]]*
    360 
    361 #+begin_quote
    362 - The moon now shows different phases in the Training Grounds vista scene
    363 #+end_quote
    364 
    365 /Be still my heart./
    366 
    367 No changes in framerate patterns though; still getting "sawtooth 55"
    368 FPS near the most edges, stable "linear 60" at some corners like the
    369 hot springs, and "sawtooth 40±15" everywhere else.
    370 
    371 - Spotted =amdgpu: Runtime PM not available= in dmesg; found no
    372   actionable advice about this.
    373 
    374 - Found a new crop of "choppy performance" issues—[[https://gitlab.freedesktop.org/drm/amd/-/issues/3658][drm/amd#3658]],
    375   [[https://gitlab.freedesktop.org/drm/amd/-/issues/3742][drm/amd#3742]]—no miracle cure there.
    376 
    377 - Driver developer Timur Kristóf offers [[https://old.reddit.com/r/linux_gaming/comments/y7zl45/psa_for_amdgpu_users_kernel_519_and_likely_60_is/isyryb1/][some tips]] to diagnose
    378   issues with the graphics stack.
    379 
    380 - Caved and filed [[https://gitlab.freedesktop.org/drm/amd/-/issues/3993][drm/amd#3993]].
    381   - Got a very fast shot in the dark: try =amdgpu.dcdebugmask=0x610=.
    382     Thanks!  No effect unfortunately.
    383   - Since that was as exhaustive a report as I published this far
    384     (ignoring… whatever /this/ is), figured I would also send an email
    385     to Supergiant's support address.
    386 
    387 - Tired of annotating "openSUSE Tumbleweed" with "… with Packman
    388   repository but it is mostly just codecs except well there is Mesa in
    389   there", so for intellectual honesty, purged
    390   Packman[fn:purge-packman], restarted, loaded the game.
    391   - There, same symptoms; Packman exonerated.
    392 
    393 [fn:purge-packman] As simple as:
    394 #+begin_src
    395 sudo zypper removerepo Packman
    396 sudo zypper dist-upgrade --allow-vendor-change --remove-orphaned
    397 #+end_src
    398 Then confirmed absence of strays with ~zypper packages~ (with
    399 ~--orphaned~, then with ~| tr -s ' ' | cut -d'|' -f2 | sort | uniq
    400 -c | sort -hr~ to double-check repositories in-use).
    401 
    402 
    403 - Lobsters featured [[https://store.steampowered.com/news/app/2731870/view/4666382742870026335][this story]] about game developers working around
    404   "catastrophic performance loss on AMD" with some DX11 memory usage
    405   patterns, solved by "changing the buffering implementation of GPU
    406   uploads".  Searched for actionable things to do with that anecdote,
    407   found none.
    408 
    409 - Noodled in UEFI some more.
    410   - Changed the "graphic adapter" knobs from "PEG" (PCIe Graphics) to
    411     "IGD" (Integrated); not that this changes much since there is no
    412     PCIe card anyway.
    413   - Changed "Integrated Graphics" from "Game Mode" to "Force"; bump
    414     UMA Frame Buffer Size to 4 GB.
    415   - Activated A-XMP "Profile 1" (boosts DDR4 clock speed).
    416 
    417 - Pondered [[https://docs.mesa3d.org/drivers/radv.html][RADV]] vs [[https://github.com/GPUOpen-Drivers/AMDVLK][AMDVLK]].
    418   - The latter is not easy to install on openSUSE.
    419   - Not sure AMDVLK supports my iGPU anyway.
    420 
    421 - Sent [[https://community.amd.com/t5/pc-processors/game-stutter-on-opensuse-tumbleweed-with-amd-ryzen-5-pro-4650g/m-p/750105][a message in a bottle]] on the AMD community forums.
    422 
    423 - Stumbled on more recent threads:
    424   - [[https://old.reddit.com/r/AMDHelp/comments/1isclpw/i_am_beyond_frustrated_with_the_stutter_issues_on/][another AMD castaway]] with commenters suggesting to enable
    425     C-States.
    426   - [[https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422/28][framework users]] pointing at three different drm/amd reports 😵‍💫
    427 ** What if it /was/ the new SSD though
    428 - [[https://old.reddit.com/r/diablo4/comments/1g7o5kz/kingston_ssd_firmware_update_fixed_stuttering/][LockeDown815]] says bumping their Kingston NVMe SSD firmware fixed
    429   stuttering in Diablo Ⅳ.
    430   - [[https://old.reddit.com/r/linux_gaming/comments/aodqqw/psa_dont_buy_ssds_from_the_kingston_a400_line/][jayomegal]] says the A400 SSDs (👋🥺) have "fucked firmware".
    431   - [[https://old.reddit.com/r/linux_gaming/comments/gt13h5/what_could_i_do_with_my_kingston_a400_ssd_if/][tubi_carrillo]] asks the tough questions - how is a Linux user to
    432     update their firmware when the vendor does not partake in LVFS and
    433     only offers a Windows utility?
    434   - [[https://bbs.archlinux.org/viewtopic.php?id=243614][xhpohanka]] reports "strange system lags" after cloning their system
    435     on a SA400.
    436 - Welp, time to [[file:../hirondell/maintenance.org::*2025-03][resurrect hirondell's Windows partition]] 🧟
    437   - Braved [[https://www.petiterepublique.com/2025/03/08/ce-samedi-8-mars-2025-des-rafales-de-vent-a-plus-de-120-km-en-haute-garonne/][the wind]] & fetched a 2.5″ SSD-to-USB case.
    438   - WELP, Kingston® SSD Manager fails to identify the disk 🙄
    439     #+begin_src
    440     Device scan complete. Updating views...
    441     \\.\PHYSICALDRIVE0: Detected as the primary drive, KScode2 Identify failed, BusType:11
    442     \\.\PHYSICALDRIVE1: Not supported - Identify failed, BusType:7
    443     Updating devices list...
    444     \\.\PHYSICALDRIVE0: SK hynix SC311 SATA 128GB, SCSI\DISK&VEN_SK&PROD_HYNIX_SC311_SATA\4&AAF871B&0&000000
    445     \\.\PHYSICALDRIVE1: KINGSTON  SA400S37480G SCSI Disk Device, SCSI\DISK&VEN_KINGSTON&PROD__SA400S37480G\6&1EA4F16A&0&000000
    446     #+end_src
    447     Nevermind then!  Moving on.
    448 ** Time to come clean
    449 There was one other thing I changed on this reinstallation: I used XFS
    450 instead of Btrfs for my home partition.  Not sure why; [[https://old.reddit.com/r/openSUSE/comments/3dambq/why_btrfs_for_but_xfs_for_home/][some folks say
    451 it's a good idea?]]
    452 
    453 And /of course/ there is [[https://bugzilla.kernel.org/show_bug.cgi?id=202349][a kernel bug]] showing that somehow "sustained
    454 write operations with XFS" conflict with "GPU creating memory
    455 pressure" or something.  /Of course/.
    456 
    457 tl;dr
    458 
    459 - backed everything up
    460 - wiped the main disk; re-installed with Btrfs for root & home
    461   - left XFS on the secondary disk (NVMe, Samsung 980)
    462   - [[https://forums.opensuse.org/t/boot-broken-after-fresh-install-fstab-tweak/183405][tripped over SELinux 🤦]]
    463   - no changes in framerate
    464   - so XFS exonerated?
    465 - let's exonerate the Kingston SSD while in there 🤷
    466   - unplugged the SATA SSD
    467   - wiped the NVMe disk
    468   - re-installed on the NVMe disk (full Btrfs)
    469   - no changes in framerate
    470 ** 😐
    471 - XFCE
    472   - by default: much worse
    473   - with compositing disabled: on par with plasma
    474 - =PROTON_USE_WINED3D=1=: "Renderer creation failed. Pleaes ensure
    475   your graphics card meets the minimum rqeuirement."
    476 - [[https://discord.com/channels/456889434672201729/1229836992829984830/1350397520718598154][discord, I guess]]
    477 - noticed =d3d12_device_init_workarounds: AMDGPU broken kernel detected=
    478   - =VKD3D_CONFIG=skip_driver_workarounds=: no changes
    479   - vkd3d-proton issue
    480 - proton-ge?
    481   - installation docs point to [[https://github.com/lutris/docs/blob/master/InstallingDrivers.md#amd-1][Lutris driver installation instructions]]
    482     - most packages were indeed installed automatically by the distro
    483     - except =libdrm_radeon1-32bit=: installed; no changes
    484   - installed proton-ge: no changes
    485 - 6.11.7 → 6.11.8 update had [[https://build.opensuse.org/request/show/1224199][a lot going on]]
    486 * The unsatisfying ending?
    487 On March 16 2025, installed Debian (then Bookworm) on the NVMe disk
    488 (KDE Plasma, Wayland, kernel 6.1).
    489 
    490 Installed Steam; installed Hades Ⅱ; game ran great; played like no
    491 tomorrow.  Hissed at Trixie, stubbornly kept playing on Bookworm.  All
    492 the while, kept daily-driving the Tumbleweed installation on the SATA
    493 disk; just rebooting into my "BookwormCube" for Hades Ⅱ sessions.
    494 
    495 In September–October, caught & handled =SIGSKONG= on Tumbleweed; from
    496 October 25 through November, rebooted into the BookwormCube® to play
    497 Hades Ⅱ's endgame & chase cheevos.
    498 
    499 Bottomline: ending meh, comparatively with Hades Ⅰ?  Game still rules.
    500 
    501 Tech-wise, for all my efforts debugging this stutter, I learned
    502 nothing, beside a truckload of ineffective system knobs.  Last checked
    503 Tumbleweed's performance [[https://gitlab.freedesktop.org/mesa/mesa/-/issues/11300#note_3003120][in August]] (kernel 6.15.6;
    504 kernel-firmware-amdgpu 20250708; Mesa 25.1.5 & 25.3.0-devel with
    505 =nogttspill=); no improvements.
    506 
    507 /Fin/ 🎬
    508 * Dramatis parametra
    509 There is not a single parameter I can rule out, months into this
    510 farce.  Condensed summary of the whole affair:
    511 
    512 - In-game settings
    513   - *Fullscreen* /windowed
    514   - V-Sync *on* /off
    515   - Graphics *low* /mid/high
    516   - Resolution *1920×1080* (native) /lower
    517 - Steam
    518   - Launch options
    519     - ~LD_PRELOAD=''~
    520   - Proton
    521     - versions: *hotfix* (Steam default) /older/GE
    522     - vkd3d-proton
    523       - ~VKD3D_CONFIG=skip_driver_workarounds~
    524 - Desktop environment: *Plasma* /Xfce
    525   - *Wayland* /X11
    526   - Rendering Backend: *Automatic* /Software
    527   - Variable Refresh Rate: "incapable"
    528 - Filesystem: *Btrfs* /XFS
    529 - Kernel & drivers
    530   - *RADV* (/AMDVLK)
    531   - Mesa
    532     - version
    533     - =RADV_PERFTEST=
    534   - amdgpu
    535     - sysfs
    536     - dcdebugmask
    537   - amd_pstate
    538 - Firmware
    539   - motherboard
    540   - SATA SSD
    541 - UEFI
    542   - UMA Frame Buffer Size (≡ VRAM?)
    543   - A-XMP Profile
    544 - Hardware
    545   - Iiyama PL2710HD
    546   - [[https://www.lindy.eu/2-Port-DisplayPort-1-2-USB-Type-C-USB-2-0-Audio-Cable-KVM-Switch.htm?websale8=ld0101.ld021102&pi=42346&ci=30][Lindy No. 42346]] KVM
    547 
    548 Caption:
    549 - "*A* / B": *A* is nominal choice
    550 - "A (/B)": have not actually tried B