__GL_YIELD and performance issues

With the 310.19 drivers, I notice that CPU usage goes upto 100% even when I sync to vblank (for things as simple as glxgears). But if I set the __GL_YIELD to USLEEP, things are back to normal.

From the below naive experiments.

  1. __GL_SYNC_TO_VBLANK=1 __GL_YIELD= glxgears
  2. __GL_SYNC_TO_VBLANK=1 __GL_YIELD=USLEEP glxgears
  3. __GL_SYNC_TO_VBLANK=0 __GL_YIELD= glxgears
  4. __GL_SYNC_TO_VBLANK=0 __GL_YIELD=USLEEP glxgears

In pption 1 CPU usage is high (100%), 2 uses acceptable CPU cycles (~10 %), 3 gives me high FPS, and 4 gives me low FPS. It appears, using USLEEP, even though solve the high cpu usage problem, it affects rendering (low FPS).

Any idea what could be causing this? I am basically trying to leave the __GL_YIELD option to default and get a decent performance when sync to vblank is set.

FYI: I am running OpenSuSE 12.1 (32 bit), Quadro FX 1800.

Narrowed it down to monitor rotation. I have two monitors, one rotated left (using xrandr).
So when it is rotated glxgears consumes 100% CPU even when vblank is set (and regardless of which monitor it runs on).

Any idea what could be causing this?

I am on Quadro FX 1800, 32 bit kernel (OpenSuSE 12.1) and 310.32 driver.

Here is xrandr -q

Screen 0: minimum 8 x 8, current 2304 x 1280, maximum 8192 x 8192
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 connected 1024x1280+1280+0 left (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0
1152x864 75.0
1024x768 75.0 60.0
800x600 75.0 60.3
640x480 75.0 59.9
DP-2 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0
1152x864 75.0
1024x768 75.0 60.0
800x600 75.0 60.3
640x480 75.0 59.9
DP-3 disconnected (normal left inverted right x axis y axis)

Nobody from NVidia is around here? I am getting tired of this, is there any other place where someone from Nvidia would care to look at issues and at least try to answer?

The issue with rotation causing glxgears to consume more CPU time is being investigated.

Good to know. Please let me know if you need any more information.

nvidia internal bug to track this issue 1224943

I don’t know if the issue has been investigated at all, the thread is 4 years old.
But i just found that “borderlands 2” performance is badly affected by __GL_YIELD=USLEEP
On driver 384.90, the menu screen reaches 30fps, unsetting __GL_YIELD makes it jump to about 96fps, with greater cpu and gpu use.
This is on GTX1050ti.