random memes }

Fan control service for AMD MI25 GPU

Published a fan-control service for the AMD Instinct MI25 GPU.

Aim of this service:

  • Provide correct and proper management of any and all MI25 GPUs.
  • Use native Linux kernel interfaces to detect and control the device.
  • Properly deploy as a systemd service.
  • Implemented as small executable compiled from C++ source.
  • Uses exact knowledge of the AMD GPU driver on Linux.
  • Adjusts the performance and power use for GPU compute in a homelab.

Should be very, very thoroughly done.

Prior I was using a shell script in a systemd service, which ... mostly worked. It made assumptions. Sometimes on reboot it would fail. The card would overheat, scream, and reboot the server. But mostly it worked.

I am a fair ways along the learning curve in using LLM for development.

  1. Pulled in the project skeleton
  2. Asked the LLM to examine the prior (script-based) service, using the defined project workflow.
  3. Asked the LLM to introspect and describe the behavior of the Linux driver for AMD GPUs.
    • Examined the very latest Linux kernel.
    • Examined the version of the Linux kernel in use on the target server.
    • Examined the DKMS version of the driver.
    • Turns out they are similar, so assured this service works with all.
  4. Generated tests and source code.
  5. Generated a status HTML page for the homelab project site.

Used Deepseek Harness and Deepseek V4 as recently announced. This worked very well. Took about 4 days of my time (but remember I am still learning). Burned through about 650 million tokens. Cost about $7.50 USD.

I figure that without using an LLM this project would take at least a month (or two), and likely I would not have been nearly so complete. That would have been far too much time for this simple need. Using an LLM, I can justify being extremely thorough. Just slightly absurd, as I pretty much ran out of concerns to cover.