TLDR: GPU Power Management/FanControl/Frequency now much easier with LACT docker. Background: I recently put a 3090 into my Unraid box to run Ollama LLM's. Whilst everything ran as expected, the idle power draw was running between 30-35w, which if you live in the UK is a non trivial cost. So I set about figuring out how to lower it. After hunting around the internet reading various posts/guides, I managed to prove that I could undervolt the card by setting offsets, and reduced the idle consumption to 15-19w without any impact. However, the process to achieve this in unraid is not ideal and was extensively manual. Whilst looking for a better way I found that the LACT project had recently released a docker container, which has enables an automated and stable way of undervolting the GPU without needing xorg sessions/vms/ etc. I thought it might be useful for people to know how I got it all working for future reference, as I could not find any info about using LACT in Unraid. I am not going to go into what values you need to set for your GPU etc or how to use LACT in detail, I am just laying out the basics and will use my config/setup as an example for others to build on... To be clear the settings I am using are for Nvidia 3090 and will be different for other GPU's and different Vendors - do your own research first!! - I do not know what is needed for AMD & Intel GPU's but they are supported by LACT according to the documentation. Also I do not use the GPU in any VM's. Plugins Used: Nvidia User Scripts GPU Statistics (to see results of tweaks etc) My Initial Setup: - I already had installed Nvidia Unraid Plugin and proved it was working in docker by setting up Ollama. - I have the following user script scheduled to be run "At First Array Start Only" #!/bin/bash nvidia-smi --persistence-mode=ENABLED Make sure nothing is using the GPU before proceeding. LACT (https://github.com/ilya-zlobintsev/LACT) docker config: - Name: LACT - Repository: ghcr.io/ilya-zlobintsev/lact:master - Extra Parameters: --runtime=nvidia --gpus=all --pid=host - Privileged: ON - NVIDIA_VISIBLE_DEVICES: [your GPU ID from the NVIDA PLUGIN] - NVIDIA_DRIVER_CAPABILITIES: all - (path) Host:/dev/dri Container:/dev/dri - (path) Host:/mnt/user/appdata/lact Container:/etc/lact Once running go into the console of the container and enter lact cli info. If everything is configured correctly you should see a GPU ID and hardware info. If not then check your GPU docker settings, or type nvidia-smi in the LACT console - if you do not get a response then your docker is not configured/working with your GPU.. You will need the GPU ID for configuration. Exit the console & Set the Container to autostart. NOTE: You will see some startup errors in the LACT log file, as far as I can tell this is normal and expected with this configuration. Launch an Unraid terminal window and enter docker exec LACT lact cli info. This should give the same info as before and confirms you can issue commands to LACT directly if needed. Open the logs window from the LACT docker so you can see realtime updates. Now edit the config.yaml in the /mnt/user/appdata/lact directory. My config is provided below as reference (the GPU ID is the one reported from the "lact cli info" command). I have only setup the Default config as I do not need multiple profiles or any fan control settings - see the LACT config guide for more detailed info about setting for your setup. version: 5 daemon: log_level: debug admin_group: sudo disable_clocks_cleanup: false apply_settings_timer: 5 gpus: 10DE:2204-1569:F278-0000:01:00.0: fan_control_enabled: false gpu_clock_offsets: 0: 150 2: 150 3: 150 5: 150 8: 150 mem_clock_offsets: 0: 1700 2: 1700 3: 1700 5: 1700 8: 1700 auto_switch_profiles: false Once you save the YAML, LACT will auto reload and apply the settings (if you have configured it correctly). Check the log. If everything goes according to plan you should see some changes in GPU Statistics etc. That is everything to get LACT working on your system in a docker. --- I established that for 3090/4090 the cards do not go into suspend correctly which is required for the idle power to drop, so to combat this I took @SpaceInvaderOne nvida power management script and changed it so that it will check for running docker processes on the GPU and if none are found it will re-apply the LACT default config the suspend and resume the GPU, triggering the lower power values. I run this script every 15 mins. Hopefully this post proves useful for others in the future modified nvidia power management.sh