Archive:GPU-Performance/zh-cn
前言
几种流行的显卡 - 特别是 NVIDIA 的 - 在 KDE 4 出现性能问题。这些性能问题主要涉及 Plasma - KDE 4 的桌面,和KWin- KDE 的窗口管理器。一般来说,不是因为 KDE 4 没有被优化而是因为显卡驱动程序的问题。本页包含可能出现的问题以及如何解决他们。
一般提示
显卡驱动程序
这两大显卡芯片制造商皆有不同的显卡驱动程序可以使用:
- NVIDIA显卡有自由的nv和私有的nvidia驱动程序。虽然KDE4在前者同样运作的很好,但它不提供3D加速,因此后者可能是你唯一的选择。多数的NVIDIA小节仅指私有的驱动程序(还有一个第三方的自由驱动程序叫nouveau)。由于授权限制大多数发行版预设情况下不安装私有的驱动程序。请参阅您的发行版信息有关如何安装它。
- AMD/ATI显卡你也有几个选择。有自由的「ati」和「radeonhd」驱动程序在 X.org(「ati」也称为「radeon」(没有「hd」),但我看过大多数的xorg驱动程序套件似乎把它称作「ati」)。大多数发行版似乎预设为「ati」,相容早期的 Radeons 显卡;「RadeonHD」,顾名思义,只支持 R500 和之后的显卡 - 零售型号为 X1300 和之后版本。基本上两者都可以正常运行在标准桌面,它们共享相同的 3D 程序代码在 mesa ,所以桌面效果应该是类似的(注意,R300之后的显卡3D支持被认为是不稳定,R600和之后版本是非常实验性的)。Nonetheless, if you have an X1300 or later card (i.e. one that should be supported by both drivers) and you run in to problems with one it may be worth trying out the other. You also have the option of trying the proprietary fglrx driver, though this has limited support for older cards - there's more on the AMD/ATI website about this option. Some distributions package this or have third party repos that package it and this is likely to be easier than downloading from AMD directly.
通常最好更新到已有改善措施的驱动程序。 因此,第一步改善您的 KDE 4 体验应该检查你的当前的驱动程序如果它已经过时就需要更新他。请参考您的发行版的文件,了解如何做到。
尽管可能进一步提高性能,但我不建议安装测试版质量的驱动程序,因为有可能影响您系统的稳定。
nvidia-settings
Attributes set using the nvidia-settings utility aren't permanently saved unless it is started as a root user. Login as root in the terminal and start with
nvidia-settings&
Otherwise you have to set them every time you restart your Xserver. This can be done conveniently by adding the lines to set the features to your ~/.xinitrc
nvidia - black window problem
It seems that older NVidia cards run into the problem that newly opened windows just are drawn as black windows or do not refresh properly anymore. This happens if composite is activated and openGL is used with many windows opened. Maybe the cards are running out of video memory? (The problem does occur with the compiz window manager as well.) In KDE4 you can deactivate composite/effects with Shift + Alt + F12 to continue your work with the desktop normally.
The problem is that drawing of the window decorations does become very slow if no composite is activated (tested with KDE4.3). As alternative to using openGL as composite engine it is recommended to use XRender in this case. Because moving effects become very slow with XRender you should turn animation speed to instant.
System Settings
KDE4's systemsettings allows you to tweak some kwin settings as well. You can find the settings in
. Depending on your card either OpenGL or XRender might work better. For OpenGL changing the OpenGL mode might change performance as well. Please bear in mind that changing some of the tweaks mentioned below might force you to change your settings.(Note from user): XRender mode helped A LOT on a 6800 GT (agp) with the proprietary driver, especially while looking at videos (177.80).
Examples:
- Setting InitialPixmapPlacement to 2 might improve plasma's performance but might make kwin hang sometimes.
- Setting OpenGL mode to Shared Memory might make kwin more responsive again.
- (note from a user) Not selecting "Use Vsync" helped a lot in a gforce 6800 (and also on a GeForce 8400M GT).
If for some reason your Xserver hangs after hitting the
button on the dialog and your settings get reverted because you can't confirm your changes in time, try again. Usually it will be faster on one of the subsequent tries. If it doesn't you can still change your settings in ~/.kde4/share/config/kwinrc.XGL
If after installing the NVIDIA's 177.80 versions beta drivers you're still experiencing bad performance (especially on 8xxx-9xxx series) you can install XGL xserver. Please refer to your distribution's documentation on how to do that.
Fedora 10 (and later) and xorg.conf (for some users)
Some of the tweaks mentioned in this article are targeted at a file normally found in most distros at /etc/X11/xorg.conf
Some users on Fedora 10, however, may find that this file is no longer present by default (depending on their card- anyone with more details on this please feel free to elaborate), and so it must be re-created. To do this, either:
GUI-friendlier method:
- install and run the 'system-config-display' package (hitting after you're done configuring will generate the xorg.conf file).
Less GUI-friendly method:
- open a command prompt
- switch to runlevel 1 by running the command (as root):
init 1
- run
Xorg -configure
as root (once you're done, this will generate the xorg.conf file), or you can dosudo Xorg -configure :1
without switching runlevel
Problems
This section summarizes several symptoms you might encounter and tries to explain possible causes.
Resizing certain windows is choppy
- Explanation : This might be due to your card advertising ARGB Visuals (basically translucency) without having proper support for them. Applications/windows concerned are the Plasma Desktop, the KRunner dialog (Alt + F2), Plasma's dialog or a konsole window.
- Test : If you want to make sure this issue is a problem for you, run
XLIB_SKIP_ARGB_VISUALS=1 konsole
on the command-line and try to resize the new konsole window (setting the environment variable XLIB_SKIP_ARGB_VISUALS turns off ARGB visuals). If it resizes without problems, then this is certainly one of the problems you're facing.
General
- You can set the BackingStore options in your xorg.conf:
In the Section "Device"
... Option "BackingStore" "true" ... EndSection "Device"
This works for some (eg. konsole) but unfortunately not all windows.
- As a last resort you can try setting
XLIB_SKIP_ARGB_VISUALS=1
in your ~/.xinitrc but this isn't pretty.
NVIDIA
- You can set the IntialPixmapPlacement with the nvidia-settings utility:
$ nvidia-settings -a InitialPixmapPlacement=2
This works for some (but unfortunately not all) NVIDIA cards.
NV/Intel
- You can enable EXA Acceleration
In xorg.conf Section "Device"
... Option "AccelMethod" "EXA" # optional, may improve performance but introduce visible artifacts # Option "MigrationHeuristic" "greedy" ... EndSection "Device"
Performance will be somewhat better on older X servers (<=1.4.2) and significantly better on the latest prerelease X servers (>=1.4.99.901) with this option.
- The problem with poor effects performance also can be overcome by using Intel video drivers 2.6.3.1 ( in my case deb based distro ) or higher, with kernel 2.6.30-rc1 or higher verion, with enabled UXA in xorg.conf like this :
NOTE: If you use kernel 2.6.29, there is many bugs and xorg freeze randomly with enabled UXA extension.
Section "Device" Identifier "Generic Video Card" Driver "intel" Option "AccelMethod" "UXA" EndSection
With this config, my i945G with PentiumD820, makes 350-500 FPS in Glxgears, and all effects runs perfect with Opengl render.
ATI
TODO
Plasma performance is bad
- Explanation : Unfortunately the reasons for plasma being choppy seem to be numerous so it's hard to tell where your choppiness comes from.
- Test : Usually plasma performance problems can be seen best on the Folder View plasmoid. Moving it or scrolling inside the folder might be pretty slow.
General
- Please make sure this is not (only) related to the ARGB Visuals mentioned in the above section.
NVIDIA
- You can set the IntialPixmapPlacement and the GlyphCache option with the nvidia-settings utility:
$ nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1
This works for some (but unfortunately not all) NVIDIA cards. Some cards reportedly work better usingInitialPixmapPlacement=1
or maybe evenInitialPixmapPlacement=3
- Options that are said to work well on 8xxx cards but are untested (by me)
- Option "RenderAccel" "True"
- enabled by default
- Option "TripleBuffer" "True"
- Enables triple buffering. "Decreases the time an application stalls while waiting for vblank events, but increases latency slightly" (NVIDIA Readme)
- Option "DamageEvents" "True"
- Recommended by NVIDIA if running composite+glx, increases performance, enabled by default
- Option "UseCompositeWrapper" "True"
- Enables the X server's composite wrapper instead of the builtin one.
- Option "AllowIndirectPixmaps" "True"
- Could improve hardware rendering on G80+ cards with more than 256 MB of video memory.
- Option "BackingStore" "True"
- Cache overlayed areas in case they get redisplayed later
- Option "PixmapCacheSize" "200000"
- allocate said number of pixels for pixmap caches
- Option "OnDemandVBlankInterrupts" "True"
- only fire VBlank interrupts in modes where they are needed
- Option "RenderAccel" "True"
ATI
TODO
Folder View and other plasmoids look badly rendered
- Explanation : Folder View' and some other widgets use hardware accelerated rendering. There are two methods to do this, and Plasma requires the newer EXA method.
- Test : This is best seen on the Folder View widget, which will appear as a distorted and seemingly random region on the screen.
Open Source radeon driver
The Open Source radeon driver uses the XAA acceleration method by default. So you need to change the acceleration method from XAA (X Acceleration Architecture) to the newer EXA. As this involves editing your xorg.conf file, bear in mind that if you make an error, it may result in X not starting on your system, so first save a copy of the existing xorg.cong file.
To make the switch, edit your xorg.conf file. Locate the Device section for your graphics card. Before the "EndSection" line, add
Option "AccelMethod" "EXA"
If there is already a line with AccelMethod, change it from XAA to EXA. Save the file and restart the X server.
Note that using EXA may result in some older applications, such as some KDE3 programs being rendered incorrectly.
When using EXA it is strongly recommended to use a recent X server, at least 1.6.x or even better the new 1.7 release -- perhaps best to wait for 1.7.1.
If you have an AGP-based card then you may also want to add the following line at the same location into the configuration file.
Option "AccelDFS" "true"
This should accelerate the driver even more, but may get you a hardlock when starting X. So be cautious with this option. See this article for more information on this topic.
Some things that may speed up any card's performance
The first one refers particularly to systems running KDE prior to 4.3.1 -
- Try to avoid using many widgets on your desktop, particularly if they are of the dynamic updating type.
- Turn off transparency/translucency, choosing themes that don't use it.
- Use a theme with transparency, but change the configuration. Set the fade time to zero.
- There are two ways to do this, both in the systemsettings dialog. One, on the tab, set animation speed to .
- Two, on the tab, find translucency, configure it, and set fading duration to 0 to 10 or so. (The spinner increments are 100 ms, so the 10 ms suggestion is only a tenth of that.)
These hints won't turn an old graphics card into a fast one, but they will make Desktop Effects a feasibility on many older cards.
Desktop Effects causes random freezes
This seems to affect Intel and ATi cards. AccelMethod seems to be the culprit. The default acceleration path for most drivers right now is the outdated and slower XAA (Option "AccelMethod" "XAA") which is not recommended anymore, especially with compositing. Unfortunately, the proprietary binary blobs of ATI and NVidia still only support XAA
ATi
Try enabling EXA acceleration by adding these two lines to xorg.conf
Section "Device" Option "UseAtomBIOS" "true" Option "AccelMethod" "EXA" # ... EndSection
This works with both the radeon as well as the radeonhd driver but only with cards up to an X1950. HD2xxx and above aren't supported yet.
AtomBIOS is automatically used by the radeon driver, so that line will need to be commented out. If you have the radeonhd driver, however, you will need it. EXA is expected to become the default in the near future, but having it specified here is unlikely to cause any problems even then. 3D and EXA support for HD2xxx and above is expected later this year (2009) as they are already in an experimental branch.
Intel
It's worth checking Xorg.0.log for mention of EXA. If you don't find it (or UXA) try adding the EXA line as described in the ATi section. UXA is an experimental option, but only supported by a few drivers. It's likely that the best bits will be merged into EXA soon.
Phoronix forums is a good place to read more about this.
KRunner (Alt+F2) looks strange
NVIDIA
On NVIDIA cards krunner's dialog might appear several times below each other (with only the topmost one editable). This is related to setting InitialPixmapPlacement=1 as recommended above. There's currently no known way to remedy this problem. However, it only appears on one relatively early version of KDE 4.
Most of the icons in your SysTray have disappeared
At some point you may have been told to add KDE_SKIP_ARGB_VISUALS to either ~/.bash_profile, /etc/profile or in ~/.profile. If that rings a bell for you, hunt for it and comment it out. You may find that they magically re-appear. Otherwise, check the Qt4 libraries you are using. In my case I needed Qt 4.4.3 together with KDE 4.2.