Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
Admin message
The migration is almost done, at least the rest should happen in the background. There are still a few technical difference between the old cluster and the new ones, and they are summarized in this issue. Please pay attention to the TL:DR at the end of the comment.
Enabling TearFree is causing 120 or 60 interrupts per second on the GPU for as long as it is enabled and screen is on. Without TearFree, there's no periodic interrupts if nothing is updating the screen.
What is causing the unnecessary interrupts? It's presenting an unfortunate dilemma for laptop users (tearing vs. CPU energy consumption).
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
Enabling TearFree is causing 120 or 60 interrupts per second on the GPU for as long as it is enabled and screen is on. Without TearFree, there's no periodic interrupts if nothing is updating the screen.
TearFree is supposed to generate interrupts only if there have been any updates to the screen as well. Maybe some client keeps redrawing the same contents. In which case, the same thing should happen without TearFree but with a compositing manager which uses OpenGL or the Present extension directly. (Not to mention interrupts generated by the GPU drawing itself, even without either)
It's possible there's a bug in the TearFree logic which is supposed to bail out when there have been no updates though. If you suspect so, I'd start by looking at why neither of the following matches in amdgpu_scanout_do_update:
Out of curiosity, do you have any data to quantify the difference in energy consumption?
Watching battery consumption rate in PowerTop, I see that it settles at 3.11W without TearFree, and at 3.16W with TearFree. So perhaps one could say that on my laptop extra interrupts cost about 0.05 Watts worth of energy usage (or 2% of overall idle power consumption at idle with screen on).
Another interesting observation I made while watching powertop is that amdgpu interrupts cease 5 seconds after a screen update when TearFree is enabled. That is, after an X client redraws, amdgpu interrupts continue arriving for 5 more seconds, and then they go down to near-zero levels. While without TearFree, interrupts don't linger after an update. What could be causing this strange 5-second hold-off with TearFree?
To be clear, I meant that amdgpu continue firing 60 times per second for 5 seconds after an update (and 120 times per second if two monitors are plugged in and TearFree is enabled on both).
Yes, that must have been the cause. Why is this a global parameter, shouldn't this be a per-GPU configuration item that individual drm drivers can set appropriately?
[...] shouldn't this be a per-GPU configuration item that individual drm drivers can set appropriately?
Drivers can ask for vblank interrupts to be disabled immediately, but this is currently not done with amdgpu DC:
if(!amdgpu_device_has_dc_support(adev)){if(!adev->enable_virtual_display)/* Disable vblank IRQs aggressively for power-saving *//* XXX: can this be enabled for DC? */adev_to_drm(adev)->vblank_disable_immediate=true;