[550.40.07] Nvidia driver has noticeable resource overhead, even with the GPU suspended

After doing some system profiling, I’ve noticed that the nvidia driver seems to have a pretty big cpu time overhead, even when the system is idling and the GPU is D3 and not being used.

IRQ/interrupt handling alone is responsible for 10,67% of CPU time while idling on desktop.

nv_queue is responsible for an additional 3,68% of CPU time while idling on desktop.

nvidia-powerd also has a 6,23% overhead during idling, even though there’s no need for it to do anything while the GPU is suspended (stopping the daemon removes this usage, and it can easily be brought back up again when the GPU resumes).

In total, the nvidia driver is responsible for 14,35% (20,58% with nvidia-powerd) of CPU usage while the system is simply idling and the GPU is suspended.

Especially with the case of the powerd daemon, where stopping it during gpu suspend has no visible consequences, this seems like an unnecessary use of resources, especially when the GPU is suspended and not even being used by userspace. This ultimately reduces the time the cpu can idle for, decreasing battery life on mobile.


(Sorry for the awkward image, forum only lets me embed a single image per post)

powertop regularly points to nvidia-powerd as one of the largest power consumers, with 4 interrupts per second.

For comparison, thermald, another performance daemon, generates less than an interrupt per second.

Update: nv_queue and nvidia_isr are still responsible for a significant percentage of CPU time during system idle as of version 550.50.14, but nvidia-powerd is no longer as taxing. However, it still generates 4 interrupts per second, according to powertop.
.