查看文章 |
彻底优化nvidia显卡配置,启动系统休眠支持
2009-04-03 01:54
本文适用于nvidia的老显卡,不知道对拥有新的显卡的同学是否也有帮助?系统环境为Hiweed2.0rc3,为基于ubuntu8.10的精简版。在对linux系统进行自定义配置时经常会出现一些可能没想到的问题,往往会花很多时间,还是请大家三思而行。 前言: 自己的显卡为NVIDIA GForceMX 4000,性能比较差。在Hiweed2.0rc3下用mplayer播放电影时图像都会有些变形。 以前为了使系统可以在休眠后正确启动,曾在xorg.conf中加入了一条 Option "NvAGP" "1" 然后休眠就正常了。这两天查了下官方文档,发现如果只是这样设置,就会把显卡的AGP功能给彻底关掉了! 于是狠下心仔细读了一下nvidia的官方文档,并重新编译了一下mplayer和compiz,并发现了一些以前不知道的显卡优化方式。 主要包括: a)启用nvidia显卡AGP的Fast Writes功能; b)启用nvidia显卡的官方AGP驱动; c)正确设置CPU的mtrr寄存器; d)xorg.conf的进一步优化设置,compiz的设置,和mplayer的优化设置。 具体步骤: 1.去nvidia官网下载安装最新版的官方驱动。源里面的驱动有些BUG,在hiweed2.0rc3或ubuntu8.10中开启compiz后一些程序不能正常显示。如compiz开启后wine、pcman、emacs无法正常显示等。2009年03月9日新发布的驱动96.43.11解决了这些问题。在下面网址下载驱动: http://www.nvidia.cn/object/unix_cn.html 驱动安装过程注意: 1.1. 先备份一下老的/etc/X11/xorg.conf 1.2. 如果系统自动安装过nvidia驱动,则要禁用卸载老的nvidia驱动 如执行: $ sudo apt-get remove nvidia-glx-96 1.3. 去文本终端执行 $ sudo /etc/init.d/gdm stop 1.4. 将备份的xorg.conf还原 1.5. 运行安装新驱动 $ sudo sh NVIDIA-Linux-x86-96.43.11-pkg1.run 特别注意以后每次升级xorg后都须再重新安装驱动一次! 2.重启到X11,查看当前是否启用了显卡的高级功能: $ xdpyinfo | grep -i composite $ glxinfo | grep -i direct $ cat /proc/driver/nvidia/agp/status $ cat /proc/mtrr 3.查看主板设置和先看是否支持AGP的Fast Writes功能,如果只是host-bridge不支持,则可以重启计算机查看修改BIOS里的Fast Writes设置。 $ cat /proc/driver/nvidia/agp/host-bridge Host Bridge: PCI device 1106:0204 Fast Writes: Supported SBA: Supported AGP Rates: 8x 4x Registers: 0x1f000a1b:0x00000b12 $ cat /proc/driver/nvidia/agp/card Fast Writes: Supported SBA: Supported AGP Rates: 8x 4x Registers: 0x1f000e1b:0x1f000312 4.修改内核module配置文件,启用显卡的Fast Writes功能。修改后如下: $ cat /etc/modprobe.d/options .......... # Enable AGP Fast Writes options nvidia NVreg_EnableAGPSBA=1 NVreg_EnableAGPFW=1 5.启用nvidia显卡自带的agp模块,需要禁用内核自带的agpgart模块。禁用agpgart后系统休眠功能即可正常。Supported AGP Chipsets 参见 http://cn.download.nvidia.com/XFree86/Linux-x86/96.43.11/README/appendix-f.html 修改后的配置文件如下: $ cat /etc/modprobe.d/blacklist-local blacklist nvidia #禁用AGPGART blacklist amd64_agp blacklist agpgart blacklist ipv6 $ cat /etc/X11/xorg.conf .......... Section "Device" Identifier "Configured Video Device" Driver "nvidia" Option "NvAGP" "1" EndSection .......... 6.重启计算机,查看Fast Writes和AGP驱动是否已经功成: $ cat /proc/driver/nvidia/agp/status Status: Enabled Driver: NVIDIA AGP Rate: 8x Fast Writes: Enabled SBA: Enabled 7.参考mplayer文档,设置CPU的mtrr寄存器,详见 http://www.mplayerhq.hu/DOCS/HTML/zh_CN/mtrr.html $ cat /proc/mtrr reg00: base=0x00000000 ( 0MB), size= 512MB: write-back, count=1 reg01: base=0xc0000000 (3072MB), size= 64MB: write-combining, count=1 如果有上述输出结果第二行,则说明MTRR registers已经正确设置。不然,首先用下述方法的任一种找到显卡的显存地址: 7.1. from X11 startup messages, for example: (--) PCI:*(0@1:0:0) nVidia Corporation NV18 [GeForce4 MX 4000] rev 193, Mem @ 0xfd000000/0, 0xc0000000/0, BIOS @ 0x????????/131072 7.2. from /proc/pci (use lspci -v command): 01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000] (rev c1) Flags: bus master, 66MHz, medium devsel, latency 248, IRQ 16 Memory at fd000000 (32-bit, non-prefetchable) [size=16M] Memory at c0000000 (32-bit, prefetchable) [size=128M] [virtual] Expansion ROM at feae0000 [disabled] [size=128K] Capabilities: <access denied> Kernel driver in use: nvidia Kernel modules: nvidia, nvidiafb 上述输出指示显存开始地址为0xc0000000. 如果显卡显存为64M,则这样设置mtrr: # echo "base=0xc0000000 size=0x4000000 type=write-combining" > /proc/mtrr 注意重启之后就会失效,你需要设置一下自动启动脚本: $ cat /etc/init.d/setmtrr.sh #!/bin/sh #/etc/init.d/setmtrr.sh mtrr的显存设置 case "$1" in start) echo "base=0xc0000000 size=0x4000000 type=write-combining" > /proc/mtrr ;; stop) ;; esac exit 0 $ ll /etc/rc2.d/S26setmtrr lrwxrwxrwx 1 root root 22 2009-03-31 23:31 /etc/rc2.d/S26setmtrr -> /etc/init.d/setmtrr.sh 8.最后设置一下xorg.conf,参考下面引自compiz.org网站上的资料: Option "RenderAccel" "True" Option "AddARGBGLXVisuals" "True" Option "DamageEvents" "True" Option "UseEvents" "False" #Option "TripleBuffer" "True" Option "BackingStore" "True" 各选项具体含义请参见 http://wiki.compiz-fusion.org/Hardware/NVIDIA 9. 至此我的老显卡所能提供的功能应该就全部启用了。这样glxgear的结果有一定提升。 10.依据compiz.org中的文章编译安装最新的compiz,安装后用下面命令启用compiz。这样折腾之后速度爽多了。 $ compiz --replace ccp & emerald --replace & 出现其他问题请参考:http://wiki.compiz-fusion.org/Troubleshooting 11.在启用compiz的3D桌面效果时想要使用休眠功能,注意须更改ccsm的另外一个默认设置,即要取消[常规选项]-[Display settings]的[Sync to VBLANK]。 (note that this leads to ugly tearing when watching videos). Unless this setting is set to false, the graphical interface (X11) tends to wake up with just a blank screen (possibly with a working mouse cursor). 12.自己编译安装mplayer最新svn版,然后在ccsm的[常规选项]中选中[取消重定向全屏窗口](对应的英文为unredirect_fullscreen_windows),默认没有选中。 完成后会发现在compiz开启的情况下,mplayer用xv全屏播放电影时的CPU使用率也只在18%!播放影片流畅了! |
最近读者: