Fan control service for AMD MI25 GPU
Published a fan-control service for the AMD Instinct MI25 GPU.
- amd-mi25-fan-service on Github
- amd-mi25-fan-service status on homelab
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.
- Pulled in the project skeleton
- Asked the LLM to examine the prior (script-based) service, using the defined project workflow.
- 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.
- Generated tests and source code.
- 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.