Closed Neil5043 closed 9 years ago
What are the absolute FPS figures, and at what resolution?
Normally you can expect close performance if FPS is not too high.
Presently there's a bug in Xorg that reduces performance in some cases by causing primus to needlessly use MSAA rendering on Intel GPU. The next Xorg release (1.15.1) will fix that.
You can use PRIMUS_VERBOSE=2 to see what's bottlenecking (readback from nvidia or drawing on intel).
Please upgrade to xorg 1.15.1 and re-test.
Getting less than 30 frames in Kerbal Space Program and minecraft, I get 60-100 on windows. Primus Verbose gives out nothing useful [niel@localhost ~]$ PRIMUS_VERBOSE=2 optirun '/home/niel/KSP_linux/KSP.x86_64' Found path: /home/niel/KSP_linux/KSP.x86_64 Mono path[0] = '/home/niel/KSP_linux/KSP_Data/Managed' Mono path[1] = '/home/niel/KSP_linux/KSP_Data/Mono' Mono config path = '/home/niel/KSP_linux/KSP_Data/Mono/etc' Playing at 1080p same as windows X has been updated
Are you using VirtualGL or primus? Note that optirun defaults to VirtualGL if both are installed. You can use primusrun
or optirun -b primus
for primus.
PRIMUS_VERBOSE=2 does not work with KSP because it hides console output. Try with Minecraft for now.
Using primusrun helps with KSP still not close to perfect, from about 20 frames to 30 when looking down. Also do the nvidia settings matter it shows my resolution as 600x480 (Have 1080p), when I changed the setting xorg would not start and powersaving is set to Auto which I cannot figure out how to change. Minecraft (without mods) runs at 60 fps 30 with mods which windows does about 100 https://gist.github.com/Neil5043/10674736 minecraft log
KSP is playable just need to lower settings a ton and bear -30 frames at times
There's no primus output in your log. Did you actually start the game? Do you have lib32-primus installed?
What does vblank_mode=0 PRIMUS_VERBOSE=2 primusrun glxspheres
produce?
glxspheres does not seem to be a command but glxpheres64 does
[niel@localhost ~]$ primusrun glxspheres64 Polygons in scene: 62464 Visual ID of window: 0x20 Context is Direct OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2 61.908907 frames/sec - 69.090340 Mpixels/sec 59.937830 frames/sec - 66.890618 Mpixels/sec 59.941535 frames/sec - 66.894753 Mpixels/sec 59.936053 frames/sec - 66.888635 Mpixels/sec 59.930857 frames/sec - 66.882837 Mpixels/sec 59.937252 frames/sec - 66.889973 Mpixels/sec 59.937645 frames/sec - 66.890411 Mpixels/sec
Not sure if I am missing a lib but I have all of them from the wiki page.
[niel@localhost ~]$ vblank_mode=0 PRIMUS_VERBOSE=2 primusrun glxspheres64 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. Polygons in scene: 62464 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. Visual ID of window: 0x20 Context is Direct OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. primus: profiling: upload autodetection: will use PBO path (35 iters) 129.785223 frames/sec - 144.840309 Mpixels/sec 135.845218 frames/sec - 151.603263 Mpixels/sec primus: profiling: display: 1240x900, 127.0 fps, 62.3% wait, 33.5% upload, 4.2% draw+swap primus: profiling: readback: 1240x900, 127.0 fps, 0.4% app, 90.1% sleep, 9.4% map, 0.1% wait 136.483616 frames/sec - 152.315715 Mpixels/sec 137.205442 frames/sec - 153.121273 Mpixels/sec primus: profiling: display: 1240x900, 136.3 fps, 60.6% wait, 35.0% upload, 4.3% draw+swap primus: profiling: readback: 1240x900, 136.3 fps, 0.0% app, 90.2% sleep, 9.7% map, 0.1% wait 134.568187 frames/sec - 150.178097 Mpixels/sec 136.358417 frames/sec - 152.175994 Mpixels/sec 136.133838 frames/sec - 151.925363 Mpixels/sec primus: profiling: display: 1240x900, 136.3 fps, 60.5% wait, 35.2% upload, 4.3% draw+swap primus: profiling: readback: 1240x900, 136.3 fps, 0.0% app, 90.1% sleep, 9.7% map, 0.1% wait 135.741644 frames/sec - 151.487674 Mpixels/sec
Readback rate from nVidia GPU seems low. Can you run optirun -b none nvidia-settings -c :8
in parallel with the benchmark and look at GPU frequencies and PCI-Express transfer rate?
I have an issue with too much data https://www.dropbox.com/s/oopurlcr8ydk7ix/Screenshot%20from%202014-04-16%2009%3A10%3A15.png
On the first couple of screenshots nVidia driver thinks the laptop is running on battery. Is that really so? It could cause the driver to limit performance.
It is not the computer is plugged in and charging. Rebooting while plugged in shows AC but performance does not change. That seems to be the issue the GPU Utilization hits 100 then lags it must think its on battery power.
Am I using the wrong drivers, should I try the ones made for the 700 series?
What drivers do you mean? Both 334.xx and 337.xx should support your card.
Did you look at "Thermal Settings" tab?
Thermal settings show it idling at 40-50c gaming brings me up to 75-80 quite quickly.
In this bug report another user is saying the driver starts throttling at 70°C, although as I understood in his case nvidia-settings showed frequencies dropping, while in your case them seem to stay high, is that so?
Does the glxspheres64 test launched from idle bring you to 75°C as well? How soon?
vblank_mode=0 PRIMUS_VERBOSE=2 primusrun glxspheres64 could not even get the temp up so played KSP for a second and started glxspheres. I see no temperature related throttling it is slow no matter what. glxspheres64 stayed at 130 fps
Please supply /var/log/Xorg.0.log and /var/log/Xorg.8.log
https://gist.github.com/Neil5043/10904054 /var/log/Xorg.0.log https://gist.github.com/Neil5043/10904308 /var/log/Xorg.8.log
Would you mind compiling and running a readback benchmark?
cd /tmp
wget https://gist.githubusercontent.com/amonakov/daf9cccd13de49d1d774/raw/382d8486d15bb6ccb593132d7388bca77f99df2e/readback-bench.c
gcc -O2 readback-bench.c -lGL -lX11 -lcuda
optirun -b none env DISPLAY=:8 ./a.out
I'm not sure if which issue to post to, so I will start here: I have a Lenovo Y410P and I am getting horrible frame rates in both Primus and Optirun. I have the latest xorg-1.15.1-1 and nvidia 337.12-1. I have all of the associated lib32's as well. My current framerate averages (over one minute) are:
$ glxgears 301 frames in 5.0 seconds = 60.006 FPS
$ optirun glxgears 4536 frames in 5.0 seconds = 907.068 FPS
$ primusrun 292 frames in 5.0 seconds = 58.352 FPS
Although optirun has a better framerate, it is still horrible when I run anything from playonlinux / steam. Not sure if this is related, but I know that older cards that I have used bumblebee with have had way better performance.
Here is the output GL sync: 103 iters: 9.709 msec/read: 0.8543 GB/s GL pbo: 353 iters: 2.833 msec/read: 2.928 GB/s CUDA: 340 iters: 2.941 msec/read: 2.82 GB/s CUDA pinned: 785 iters: 1.274 msec/read: 6.511 GB/s Readback + loop over the buffer: GL sync: 96 iters: 10.42 msec/read: 0.7963 GB/s GL pbo: 277 iters: 3.61 msec/read: 2.298 GB/s CUDA: 269 iters: 3.717 msec/read: 2.231 GB/s CUDA pinned: 494 iters: 2.024 msec/read: 4.097 GB/s
Looks good. Can you try
export vblank_mode=0
export PRIMUS_VERBOSE=2
export PRIMUS_SLEEP=0
PRIMUS_UPLOAD=1 primusrun glxspheres64
PRIMUS_UPLOAD=2 primusrun glxspheres64
(let each test run about 10-15 seconds)
[niel@localhost ~]$ export vblank_mode=0 [niel@localhost ~]$ export PRIMUS_VERBOSE=2 [niel@localhost ~]$ export PRIMUS_SLEEP=0 [niel@localhost ~]$ PRIMUS_UPLOAD=1 primusrun glxspheres64 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. Polygons in scene: 62464 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. Visual ID of window: 0x20 Context is Direct OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. 135.663212 frames/sec - 151.400144 Mpixels/sec 139.812747 frames/sec - 156.031025 Mpixels/sec primus: profiling: display: 1240x900, 137.4 fps, 24.5% wait, 71.2% upload, 4.4% draw+swap primus: profiling: readback: 1240x900, 137.4 fps, 0.4% app, 2.4% sleep, 96.4% map, 0.8% wait 139.757757 frames/sec - 155.969657 Mpixels/sec 140.308988 frames/sec - 156.584830 Mpixels/sec primus: profiling: display: 1240x900, 133.5 fps, 20.0% wait, 74.9% upload, 5.1% draw+swap primus: profiling: readback: 1240x900, 133.7 fps, 0.0% app, 2.4% sleep, 96.1% map, 1.5% wait 123.728843 frames/sec - 138.081389 Mpixels/sec 105.724466 frames/sec - 117.988504 Mpixels/sec 125.692848 frames/sec - 140.273218 Mpixels/sec primus: profiling: display: 1240x900, 120.3 fps, 19.9% wait, 73.0% upload, 7.1% draw+swap primus: profiling: readback: 1240x900, 120.3 fps, 0.0% app, 2.4% sleep, 95.3% map, 2.3% wait 138.970743 frames/sec - 155.091350 Mpixels/sec 139.048556 frames/sec - 155.178188 Mpixels/sec primus: profiling: display: 1240x900, 139.0 fps, 23.1% wait, 73.3% upload, 3.6% draw+swap primus: profiling: readback: 1240x900, 139.1 fps, 0.0% app, 2.1% sleep, 97.1% map, 0.8% wait 138.976938 frames/sec - 155.098263 Mpixels/sec 138.349621 frames/sec - 154.398177 Mpixels/sec 121.842218 frames/sec - 135.975915 Mpixels/sec primus: profiling: display: 1240x900, 130.2 fps, 20.6% wait, 72.9% upload, 6.6% draw+swap primus: profiling: readback: 1240x900, 130.1 fps, 0.1% app, 2.2% sleep, 95.6% map, 2.2% wait 123.350691 frames/sec - 137.659371 Mpixels/sec 128.056780 frames/sec - 142.911366 Mpixels/sec [niel@localhost ~]$ PRIMUS_UPLOAD=2 primusrun glxspheres64 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. Polygons in scene: 62464 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. Visual ID of window: 0x20 Context is Direct OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2 ATTENTION: default value of option vblank_mode overridden by environment. ATTENTION: default value of option vblank_mode overridden by environment. 141.449431 frames/sec - 157.857565 Mpixels/sec 148.670567 frames/sec - 165.916352 Mpixels/sec primus: profiling: readback: 1240x900, 144.8 fps, 0.4% app, 2.1% sleep, 97.4% map, 0.1% wait primus: profiling: display: 1240x900, 144.7 fps, 71.3% wait, 26.5% upload, 2.2% draw+swap 147.890621 frames/sec - 165.045933 Mpixels/sec 146.071186 frames/sec - 163.015444 Mpixels/sec primus: profiling: readback: 1240x900, 146.4 fps, 0.0% app, 1.9% sleep, 98.1% map, 0.1% wait primus: profiling: display: 1240x900, 146.4 fps, 72.6% wait, 25.4% upload, 2.0% draw+swap 145.962224 frames/sec - 162.893843 Mpixels/sec 158.373337 frames/sec - 176.744644 Mpixels/sec 139.733263 frames/sec - 155.942322 Mpixels/sec primus: profiling: readback: 1240x900, 146.9 fps, 0.0% app, 1.8% sleep, 98.1% map, 0.1% wait primus: profiling: display: 1240x900, 146.9 fps, 68.7% wait, 29.0% upload, 2.3% draw+swap 146.156571 frames/sec - 163.110733 Mpixels/sec 153.771651 frames/sec - 171.609162 Mpixels/sec primus: profiling: readback: 1240x900, 153.0 fps, 0.0% app, 2.0% sleep, 97.9% map, 0.1% wait primus: profiling: display: 1240x900, 153.0 fps, 70.0% wait, 27.5% upload, 2.5% draw+swap 151.685296 frames/sec - 169.280790 Mpixels/sec 148.454430 frames/sec - 165.675144 Mpixels/sec 150.315649 frames/sec - 167.752264 Mpixels/sec primus: profiling: readback: 1240x900, 148.7 fps, 0.0% app, 1.9% sleep, 98.0% map, 0.1% wait primus: profiling: display: 1240x900, 148.7 fps, 70.6% wait, 27.4% upload, 2.0% draw+swap 147.441646 frames/sec - 164.544877 Mpixels/sec 152.202204 frames/sec - 169.857660 Mpixels/sec primus: profiling: readback: 1240x900, 151.3 fps, 0.0% app, 1.8% sleep, 98.1% map, 0.1% wait primus: profiling: display: 1240x900, 151.3 fps, 72.6% wait, 25.4% upload, 2.0% draw+swap 151.469448 frames/sec - 169.039904 Mpixels/sec 148.747300 frames/sec - 166.001987 Mpixels/sec May have causes frame drops for a second by moving the screen.
73% on texture upload at 130 fps looks bad. PBO upload looks not that bad though. What desktop environment are you using? Can you try disabling or suspending the compositor (desktop effects) to see if it helps (both the benchmark and the games)?
Well first integrated graphics is running the desktop and no matter which DE I use its laggy even xfce.
I know I am jumping in late, but I am trying to fix my poor performance as well. Any games I launch from PlayOnLinux have horrible performance. I haven't tried benchmark testing yet, but I did the glxspheres from above. Here are my results: http://pastebin.com/Mhkcf2F8 (PRIMUS_UPLOAD=1 primusrun glxspheres64) http://pastebin.com/ShCbdJEv (PRIMUS_UPLOAD=2 primusrun glxspheres64)
[roberts@wraith ~]$ lspci |grep VGA 00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06) 01:00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GT 755M](rev a1) (This is a Lenovo Y410P).
I think that is pretty poor performance. Thoughts?
Never mind switching to xfce4 gave 220 fps but sadly games are still laggy, just slightly better.
This may be of intrest:
[niel@localhost ~]$ sudo systemctl status bumblebeed
* bumblebeed.service - Bumblebee C Daemon
Loaded: loaded (/usr/lib/systemd/system/bumblebeed.service; enabled)
Active: active (running) since Sat 2014-04-19 05:58:33 PDT; 13min ago
Main PID: 285 (bumblebeed)
CGroup: /system.slice/bumblebeed.service
|- 285 /usr/bin/bumblebeed
`-1153 Xorg :8 -config /etc/bumblebee/xorg.conf.nvidia -configdir /etc/bumblebee/xorg.conf.d -sharevts -nolisten tcp -noreset -verbose 3 -isolateDevice PCI:01:00:0 -modul...
Apr 19 06:01:45 localhost bumblebeed[285]: [ 180.306822] [ERROR][XORG] (EE) Caught signal 11 (Segmentation fault). Server aborting
Apr 19 06:01:45 localhost bumblebeed[285]: [ 180.306824] [ERROR][XORG] (EE)
Apr 19 06:01:45 localhost bumblebeed[285]: [ 180.306828] [ERROR][XORG] (EE)
Apr 19 06:01:45 localhost bumblebeed[285]: [ 180.306830] [ERROR][XORG] (EE) Please also check the log file at "/var/log/Xorg.8.log" for additional information.
Apr 19 06:01:45 localhost bumblebeed[285]: [ 180.306833] [ERROR][XORG] (EE)
Apr 19 06:11:27 localhost bumblebeed[285]: [ 775.937003] [WARN][XORG] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
Apr 19 06:11:27 localhost bumblebeed[285]: [ 775.937072] [WARN][XORG] (WW) Unresolved symbol: fbGetGCPrivateKey
Apr 19 06:11:27 localhost bumblebeed[285]: [ 775.937094] [WARN][XORG] (WW) NVIDIA(0): Unable to get display device for DPI computation.
Apr 19 06:11:27 localhost bumblebeed[285]: [ 775.937111] [ERROR][XORG] (EE) NVIDIA(0): Failed to initiate mode change.
Apr 19 06:11:27 localhost bumblebeed[285]: [ 775.937119] [ERROR][XORG] (EE) NVIDIA(0): Failed to complete mode change
Ran while benchmark was running.
Try removing
CPUSchedulingPolicy=idle
from /usr/lib/systemd/system/bumblebeed.service and restarting the bumblebee service.
No real difference can be noticed, around 220 fps.
When you say "laggy", do you mean that fps is still 20-30 fps lower than windows, or is input latency worse? Are you still getting 30 fps in KSP in xfce?
export PRIMUS_SYNC=1
may improve things on input lag front, but there's still a bad issue somewhere.
Yes about 30-40 fps lower and about 30 fps if I turn down all the settings in ksp then when I go to do anything it drops to 20. Minecraft is sorta the same but not as bad. PRIMUS_SYNC=1 does not seem to help.
Today is a great day, I derped around for 2-3 hours broke bumblebee multiple times tried random settings and with no arguments just optirun KSP seems to be running at steady 60 frames. Just some screen tears (vsync does not fix). Sadly I am not sure what exactly fixed it. Also it does seem to get hot a lot faster that winderps. runs at about 65c - 70c windows 75-80 linux
Can you post current /var/log/Xorg.{0,8}.log and dmesg?
dmesg https://gist.github.com/Neil5043/11276668 xorg log 5-6 missing here are the rest: https://www.dropbox.com/sh/sesyyxqhws8d2pm/7Mxggq-GN-
Except Xorg.8.log, other logs are old (they are from your previous kernel, 3.14.0, rather than 3.14.1). Are you using gdm 3.12 that makes systemd eat the log?
Can you again post benchmark results?
export vblank_mode=0
export PRIMUS_VERBOSE=2
export PRIMUS_SLEEP=0
PRIMUS_UPLOAD=1 primusrun glxspheres64
PRIMUS_UPLOAD=2 primusrun glxspheres64
I am using gdm should I stop?
[niel@localhost ~]$ vblank_mode=0 PRIMUS_VERBOSE=2 PRIMUS_SLEEP=0 PRIMUS_UPLOAD=1 primusrun glxspheres64
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Polygons in scene: 62464
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Visual ID of window: 0x20
Context is Direct
OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
125.770203 frames/sec - 135.057074 Mpixels/sec
129.348318 frames/sec - 138.899398 Mpixels/sec
primus: profiling: readback: 1240x866, 127.1 fps, 0.3% app, 2.5% sleep, 91.9% map, 5.3% wait
primus: profiling: display: 1240x866, 126.9 fps, 14.9% wait, 78.1% upload, 7.0% draw+swap
129.383890 frames/sec - 138.937596 Mpixels/sec
132.945262 frames/sec - 142.761940 Mpixels/sec
primus: profiling: readback: 1240x866, 132.5 fps, 0.0% app, 1.8% sleep, 94.4% map, 3.9% wait
primus: profiling: display: 1240x866, 132.5 fps, 16.0% wait, 79.6% upload, 4.4% draw+swap
133.490770 frames/sec - 143.347729 Mpixels/sec
[niel@localhost ~]$ vblank_mode=0 PRIMUS_VERBOSE=2 PRIMUS_SLEEP=0 PRIMUS_UPLOAD=2 primusrun glxspheres64
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Polygons in scene: 62464
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Visual ID of window: 0x20
Context is Direct
OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
141.430588 frames/sec - 151.873823 Mpixels/sec
146.862305 frames/sec - 157.706617 Mpixels/sec
primus: profiling: readback: 1240x866, 143.8 fps, 0.4% app, 1.8% sleep, 97.6% map, 0.2% wait
primus: profiling: display: 1240x866, 143.7 fps, 57.6% wait, 39.8% upload, 2.6% draw+swap
145.989575 frames/sec - 156.769446 Mpixels/sec
[niel@localhost ~]$ #then removing sleep
[niel@localhost ~]$ vblank_mode=0 PRIMUS_VERBOSE=2 PRIMUS_UPLOAD=2 primusrun glxspheres64
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Polygons in scene: 62464
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Visual ID of window: 0x20
Context is Direct
OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
131.693005 frames/sec - 141.417217 Mpixels/sec
139.891170 frames/sec - 150.220734 Mpixels/sec
primus: profiling: display: 1240x866, 136.0 fps, 48.0% wait, 47.7% upload, 4.3% draw+swap
primus: profiling: readback: 1240x866, 136.2 fps, 0.5% app, 89.5% sleep, 9.8% map, 0.3% wait
[niel@localhost ~]$ vblank_mode=0 optirun glxspheres64
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Polygons in scene: 62464
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
Visual ID of window: 0x20
Context is Direct
OpenGL Renderer: GeForce GTX 765M/PCIe/SSE2
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
132.416559 frames/sec - 142.194198 Mpixels/sec
136.233902 frames/sec - 146.293413 Mpixels/sec
Instead of exporting I just added them for each line.
So now your benchmark numbers are close to what you've shown before, and yet games run better? Are they better only under plain optirun (hence via VirtualGL), is there a problem with primus?
Just plain optirun sticking to 60 fps. Primus is also running it at 60 frames.
I did not ran into the full discussion, but can we consider this resolved?
So I have switch to arch linux where bumblebee works for me and I am getting an average of 20-30 frames lower than windows. Tested in both minecraft and Kerbal Space Program. dmesg https://gist.github.com/Neil5043/10619345