Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

糟糕的 Nvidia Linux 驱动?

汗,是不是写错了? Nvidia 的 Linux 驱动不是一直广受赞誉,印象中 ATI 的 Linux 驱动才一直是很糟糕。

但是现在状况似乎有些变化……

如果你正在 Linux 上使用一块 Nvidia 的比较新的显卡,比如 8000 和 9000 系列,也许你遇到下面这些问题:

  • Firefox 在浏览某些网站的时候,拖动起来非常卡 ( 比如: http://www.tuaw.com ) ;切换标签页的时候也很卡。
  • 调整应用程序窗口尺寸的时候,会非常卡。
  • KDE 4/ Qt 4 程序卡得基本没法用。
  • 虽然可以流畅的跑 Compiz,但是某些特效会很卡,包括缩放窗口。

嗯嗯,也许你一直抱怨 Firefox 的性能不好,KDE 4 很慢,其实都不是,罪魁祸首是 Nvidia 的 Linux 驱动……

不管是 169、173,还是最新的 177 beta 驱动,都在 8000 和 9000 系列显卡上表现出很糟糕的 2D 性能。3D 性能还是很完美的,所以你可以流畅的玩 Doom,但是却不能流畅的浏览网页。

详细的情况可以参考 Nvnews 论坛的帖子:

nVidia 8000/9000 Series Performance Issues

从上面的帖子可以看出,受难的人真不少,甚至还波及到了某些 7000 和 GT200 系列显卡。

暂时的缓解方法

当然最好的情况就是 Nvidia 能够听到 Linuxer 的心声,在新版的驱动中修正这个严重的 bug,目前只好等待。闭源驱动的弱点,充分的展现了出来……

国外的网友尝试出一些缓解上面这些问题的设置,如果你正在被上面的问题所困扰,可以尝试一下,效果在不同的显卡上差异很大,但是总体上都会有不少的改善。

首先,安装最新的 177 beta 驱动,然后尝试运行:

nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

如果你正在使用 177 的驱动并且正在运行着桌面,那么可以直接在终端窗口运行此命令,不需要重启 X。

我的显卡是 8600GTS,运行上面的命令之后,窗口缩放的性能变得可以接受了,如果对你也有效的话,可以把上面的命令添加到 ~/.xinitrc 中。

另外,还可以在 xorg.conf 中的  Section "Device" 中加入:

Option    "PixmapCacheSize" "300000"
Option    "OnDemandVBlankInterrupts" "True"

然后重启 X,在我这里,重启 X 后,Firefox 拖动网页卡的现象大大缓解了。

如果你想比较流畅的运行 KDE 4,那么可以参考一下:

http://techbase.kde.org/User:Lemma/GPU-Performance

上面也列出了一些 8000 之后显卡支持的 Option 选项,可以尝试打开后看看效果:

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

也可以定期关注一下前面的 Nvnews 帖子,上面也会不断更新一些最新的解决办法,你也可以把你的显卡型号,和上面这些措施的效果 post 到上面去分享一下。

Nvidia or ATI?

我手上没有 ATI 显卡,不知道 ATI 显卡的情况会好多少,不过如同上面 Nvnews 帖子的作者所说,他帮朋友在 Linux 上装了块 ATI 显卡,并且 “... the performance was amazing all round. 2D/3D Linux/Windows, everything”

看来,现在情况确实有些变化,虽然 Nvidia 显卡在 Linux 上的 3D 性能有一些优势,但是毕竟 2D 性能才是日常应用的关键,并且 ATI 的驱动也在不断进步,3D 性能不济的状况也比以前大大改善了。

如果你正要装机运行 Linux,并且不会在 Linux 上天天玩 3D 游戏的话,那么至少在 Nvidia 修正这个 bug 前, ATI 是比 Nvidia 更好的选择。

 

 

配置了下双显示器

当初安装服务器的时候,买了一个 14 吋的小显示器,晚上突发奇想,决定发挥一下这个显示器的余热。

本来做好要折腾一番的心理准备,结果却发现双显示器的配置异常的简单,倒是趴在地上插显示器线费了半天劲

直接在 xorg.conf 中打开 Nvidia 卡的 TwinView 功能就可以了,不知道 A 卡有没有这么简单:

  1. Option   "TwinView" "True"

其实还要在 xorg.conf 里设置第二显示器相对位置之类的,但是完全可以启动后用 nvidia-settings 来完成,如下图,拖动显示器到你想要的位置即可,然后把改动保存到 xorg.conf 就可以了,不要忘记用 root 用户运行 nvidia-settings:

用来放一些 Screenlets 最合适了,也可以放个终端监测某些任务。

最大化窗口的话,窗口只会充满当前的显示器,非常方便~