Can a System Handle Brown/Blackouts on only the GPU?
I am planning to build a multipurpose home server. It will be a NAS, virtualization host, and have the typical selfhosted services. I want all of these services to have high uptime and be protected from power surges/balckouts, so I will put my server on a UPS.
I also want to run an LLM server on this machine, so I plan to add one or more GPUs and pass them through to a VM. I do not care about high uptime on the LLM server. However, this of course means that I will need a more powerful UPS, which I do not have the space for.
My plan is to get a second power supply to power only the GPUs. I do not want to put this PSU on the UPS. I will turn on the second PSU via an Add2PSU.
In the event of a blackout, this means that the base system will get full power and the GPUs will get power via the PCIe slot, but they will lose the power from the dedicated power plug.
Obviously this will slow down or kill the LLM server, but will this have an effect on the rest of the system?
The amount of absolutely wrong answers in here is astounding.
NO. PCIE is not plug and play. Moreover, having a dead PCIE device that was previously accepting information, and then suddenly stops, is almost guaranteed to cause a kernel panic on any OS because of an overflowing bus of tons of data that can't just sit there waiting. It's a house of cards at that point. It's also going to possibly harm the physical machine when the power comes back on due to a sudden influx of power from an outside PSU powering up a device not meant for such things.
Why wouldn't instead think of maybe NOT running an insane workload on such a machine with insanely power hungry GPUs, and maybe go for an AMD APU instead? Then you'll get all the things you want.
PCIe is absolutely plug and play. Cards have been PnP since the ISA era. You probably meant hot-plug, but it's hot-pluggable too: https://lwn.net/Articles/767885/
Any buffered data will sit in the buffer, and eventually be dropped. Any data sent to the buffer while the buffer is full will be dropped. I'm not intimately familiar with communicating with GPUs, but I imagine the only buffers are in the GPU driver (which would either handle the removal or crash) or in the application (which would probably not handle the removal and just crash). Buffering is not really where I would expect to see a problem.
That said, a GPU disappearing unexpectedly will probably crash your program, if not your whole OS. Physical damage is unlikely, though I definitely wouldn't recommend connecting two PSUs to one system due to the potential for unexpected... well, potential. Inrush current wouldn't really be my concern, since it would be pulling from the external PSU which should have plenty of capacity (and over-current protection too, I would hope). And it's mostly a concern for AC systems, rarely for DC.
You are mistaking "plug and play" with "hot swap/plug CAPABLE". The spec allows for specifically designed hardware to come and go, like Express card, Thunderbolt, or USB4 lane-assigned devices, for example. That's a feature built for a specific type of hardware to tolerate things like accepting current, or having a carrier chip at least communicating with the PCIE bridge that designates it's current status. Almost all of these types of devices are not only designed for this, they are powered by the hardware they are plugged into, allowing that power to be negotiated and controlled by the bridge.
NOT like a giant GPU that requires it's own power supply current and ground.
But hey, you read it on the Internet and seem to think it's possible. Go ahead and try it out with your hardware and see what happens.
I do something similar to op, however, running llms is what finally convinced me to switch over to kubernetes for these exact reasons, I needed the ability to have gpus running on separate nodes that then I could toggle on or off. Power concerns here are real, the only real solution is to separate your storage and your compute nodes.
What OP is suggesting is not only not going to work, and cause damage probably to the motherboard and gpus, but I would assume is also a pretty large fire hazard. One GPU takes in an insane amount of power, two gpus is not something to sneeze at. It's worth the investment of getting a very good power supply and not cheaping out on any components.
You're forgetting that the card would still be receiving it's 75W of power from the PCIe bus. This is what powers cards that don't have extra power connectors.
Any system that shares power and grounds (i.e. on the same bus), keep on the same power supply/domain.
Even, if!!!!, it doesn't fry your computer when one power system goes off but the other stays on - the system will absolutely not be stable, and will behave in unexpected ways.
I think the safe option would be to use a smart UPS and Network UPS Tools to shutdown the LLM virtual machine when it's running on battery. I do something similar with my NAS as it's running on an older dell R510 so when the UPS goes onto battery it'll safely shut down that whole machine to extend how long my networking gear will stay powered.
I've wanted to implement something like that with my 1920R UPS for my rack but haven't found the time to commit to antiquated hardware.
Was enough of a hassle dealing with the expired SSL certs on the management card yet getting software running on one of my machines to communicate with the UPS.
All things considered my two servers chilling chew around 60w on average, not taking into account my POE cameras or other devices. The UPS should run for over a day without getting close to draining its batteries (have a half populated ebm too).
wanted to implement something like that with my 1920R UPS for my rack but haven't found the time to commit to antiquated hardware.
Was enough of a hassle dealing with the expired SSL certs on the management card yet getting software running on one of my machines to communicate with the UPS.
Honestly you should just bypass dells management software and use NUT. It supports your UPS's management card if you enable SNMP or you can bypass it all together and just run off of the USB/serial.
All things considered my two servers chilling chew around 60w on average, not taking into account my POE cameras or other devices. The UPS should run for over a day without getting close to draining its batteries (have a half populated ebm too).
I'm pretty surprised I can run my whole network for an hour off of my 1500va UPS with three switches and a handful of POE devices. I'm still thinking about replacing it with a rack mount unit so i can lock it inside my rack as I've been having issues with unauthorized people messing with it.
You could accomplish what you're trying by putting the GPU in a second computer. Further, most UPSes have a data interface, so that you could have the GPU computer plugged into the UPS too, but receive the signal when power is out, so it can save its work and shutdown quickly preserving power in the UPS batteries. The only concern there would be the max current output of the UPS in the event of a power outage being able to power both computers for a short time.
It looks like regular PSUs are isolated from the mains ground with a transformer. That means that two PSUs’ DC grounds will not be connected. That will likely cause problems for you, as they’ll have to back flow current in places that do NOT expect back flow current to account for the voltage differences between the two ground potentials. Hence it might damage the GPU which is going be the mediator between these two PSUs - and maybe the mobo if everything goes to shit.
Now I am not saying this will be safe, but you may avoid that issue by tying the grounds of the two PSUs together. You still have the issue where if, say, PSU1’s 12V voltage plane meets PSU2’s 12V voltage plane and they’re inevitably not the same exact voltage, you’ll have back flowing current again which is bad because again nothing is designed for that situation. Kind of like if you pair lithium batteries in parallel that aren’t matched, the higher voltage one will back charge the other and they’ll explode.
The proper way of doing this is to have two separate systems in a cluster such as proxmox. The system with GPUs runs certain workloads and the non GPU system runs other workloads.
Each system can be connected (or not) to a ups and shut down with a power outage and then boot back up when power is back.
Don't try hot-plugging a gpu, it will never be reliable.
Run a proxmox cluster or kubernetes cluster, it is designed for this type of application but will add a fair amount of complexity.
I imagine this would be up to the application. What you’re describing would been seen by the OS as the device becoming unavailable. That won’t really affect the OS. But, it could cause problems with the drivers and/or applications that are expecting the device to be available. The effect could range from “hm, the GPU isn’t responding, oh well” to a kernel panic.
Nope. I actually did that unintentionally on a PC I built. I only used one power wire when the GPU needed 2 so it couldn't use all the power it needed when running 100%. My understanding was PCI doesn't support disconnecting devices so the system expects all components it starts up with to be available all the time. Lose one and the system goes down.
PCIe absolutely does support disconnecting devices. It is a hot swap bus, that's how ExpressCard works. But it doesn't mean that the board/uefi implements it correctly.
in other words: OP either needs to get a thunderbolt dock or straight up have 2 computers. The latter should not even consume that much more power if the PC gets shut down in the evening and woken up using wakeonlan in the morning.
Most UPS systems of quality will come with software capabilities. You can leverage this and just use a daemon to check the charge status every minute or so. If it's ever off AC or reporting charge levels lowering, you can toss the system into a low power profile. This might accomplish what you're trying to do.