使用统一(3D)时,如何应对12.04中游戏性能下降的问题?


9

自从全新安装ubuntu 12.04以来,我的游戏性能大幅下降。

我的PC由Nvidia Geforce GTX 460,AMD Phenom II X4 965 CPU和4GB RAM组成,我使用nvidias专有驱动程序。

我主要通过使用他们的Linux客户端来玩Newerth英雄。我从ubuntu 9.10开始执行此操作,使用专有的nvidia驱动程序时从未遇到任何性能问题。我的fps始终达到了vsync帧上限60。

自从我运行ubuntu 12.04以来,我获得了30-45 fps的帧率,并且总体上游戏体验非常落后。我知道有很多人在使用NVIDIA 295.40驱动程序时遇到问题,该驱动程序默认安装在ubuntu 12.04中。因此,我手动安装了最新的稳定版295.49,最新测试版302.07,甚至是ubuntu 11.10中使用的较旧版本295.33(在这里我从未遇到过任何性能问题)。因为我在所有4个驱动程序版本中都遇到相同的性能问题,所以这是浪费时间。

当我使用Unity 2D时,我的fps恢复到60,整体游戏性能也很棒。因此,在运行ubuntu 12.04版本的Unity时,我只会遇到那些问题。

我也尝试删除主目录中的.config和.compiz-1文件夹,但使用unity时游戏性能仍然一团糟。

我不知道下一步该怎么做...有人知道我如何进一步调试该问题吗?也许我如何提供更多数据以更好地分析问题?也许尝试摆弄一些compiz设置?

这种性能下降确实令人沮丧,我正在考虑仅下载Newerth英雄的Windows客户端并返回到双重引导,因为这根本无法接受。

任何帮助表示赞赏。

Answers:


3

这不是一个真正的解决方案,但至少(可能)是一个有用的解决方法(除了简单地使用Unity 2D)。

在开始游戏之前,请打开Nautilus(文件管理器)并转到/usr/share/application。打开终端,键入metacity --replace,然后按Enter。不要惊慌,Unity界面会消失,但这是我的意图。从文件管理器启动游戏(游戏的启动器应在我提到的文件夹中)。玩完游戏后,unity --replace在终端窗口中键入,然后按Enter。现在,您的桌面已还原为原来的状态。
这应该起作用,因为可能是Unity在后台运行导致麻烦。

另外,我将其报告为错误。这绝对是需要修复的问题。如果您提交错误报告,请确保在此处保留链接,以便其他遇到此问题的人可以将其标记为“影响他们”,这将尽快解决。


谢谢您的回复。我将尝试此变通办法并进行报告。当然,它不是很漂亮,但至少比始终以2d退出并重新登录要好。。。您能帮我报告错误吗?链接到资源或解释该过程的内容已经很有帮助。谢谢。
dong 2012年

感谢RobinJ的解决方法。它工作得非常好,并且比使用unity 2d注销并重新登录要好,因为我可以保持会话状态。我使用游戏启动器打开了该文件夹,打开了一个终端,输入了metacity --replace &启动游戏的权限,并获得了我期望得到的出色性能。完成后,我输入内容unity --replace,一切恢复正常。我现在将提出反对统一的错误,看看会带来什么。
2012年

@dong在Ubuntu文档中有一个报告错误的指南:help.ubuntu.com/community/ReportingBugs
RobinJ 2012年

它本身不是Unity错误,而是Compiz错误。对于我来说,compiz游戏从来都无法正常运行...
user55822 '13

好的,有点晚了,但是这里是bug报告:unity bug-998141。如果您也受此影响,请确保将错误标记为影响您。也许会引起注意。
2012年

1

您可以始终更新到304.22 Nvidia Beta驱动程序,然后看看会发生什么。我在Ubuntu 12.04 LTS和Nvidia 295.59版本中遇到了巨大的性能问题,而302.07版本似乎解决了一些小问题。通过更新最新的304.22驱动程序,已解决了大多数问题。现在,我的GeForce性能最终可以与Windows XP媲美,但是一些应用程序仍然存在一些小问题,但情况确实得到了明显改善。您应该始终使用最新的Nvidia驱动程序,即使它们处于BETA状态也是如此,因为似乎较老的稳定驱动程序没有经过Nvidia团队在较新的Kernel和Ubuntu滚动更新中进行的测试,从而导致意外的问题。

您可以http://www.geforce.com/drivers/beta-legacy获得它们

304.22驱动程序具有大量的大型修复程序,例如:

  • 添加了对以下GPU的支持:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • 增强了IncludeImplicitMetaModes Xconfiguration选项的功能:
  • 即使在初始化X时使用多个显示设备,也将为主要显示设备添加隐式元模式。
  • 即使显示设备的模式池中没有具有该分辨率的模式,也将为常规分辨率添加隐式元模式。
  • 扩展了IncludeImplicitMetaModes配置选项的语法,例如,以控制使用哪个显示设备
    创建隐式MetaMode。
  • 有关详细信息,请参见
    README 中的IncludeImplicitMetaModes X配置选项的描述。

  • 修改了对RandR 1.0 / 1.1请求RRGetScreenInfo和RRSetScreenConfig的处理(例如,xrandr -q --q1和xrandr --size ...和xrandr-orientation ...)元模式。这是NVIDIA X驱动程序版本295.xx及更早版本中的行为,但是302.xx版本更改了对这些RandR 1.0 / 1.1请求的处理,以在单个RandR输出的模式下运行。
  • 通过对IncludeImplicitMetaModes和RandR 1.0 / 1.1处理进行的上述更改,全屏应用程序(例如,基于SDL的应用程序,Wine)应具有更多可用的分辨率,并且应与多个监视器配置更好地交互。
  • 修复了可能导致G8x,G9x和GT2xx GPU从挂起状态唤醒后显示黑屏或损坏的错误。
  • 修复了一些错误,这些错误可能在调用fork(3)时导致某些OpenGL程序挂起。
  • 修复了nvidia-settings错误,该错误导致使用--display-device-string选项进行的ProbeDisplays查询结果的格式不正确。
  • 改进了热插拔显示器时对nvidia-settings控制面板更新的响应能力。
  • 修复了在设置某些转换时,尤其是在平移转换后的显示时,导致显示损坏的错误。
  • 修复了导致第一次热插拔显示器时生成额外的RandR事件的错误。
  • 修复了导致名称中带有“ @”的X11模式行被拒绝的错误。
  • 增加了对DisplayPort 1.2分支设备的支持,该设备允许将多个显示器连接到图形板上的单个DisplayPort连接器。
  • 修复了一个错误,该错误导致在将上下文绑定到RGB覆盖可绘制对象时,大多数OpenGL纹理的上传速度变慢。
  • 修复了在某些MCP7x(IGP)GPU上重新启动X服务器后导致HDMI音频无法工作的错误。
  • 更新了X配置选项“ UseDisplayDevice”以在任何GPU上使用值“ none”。
  • 在nvidia-installer中添加了对DKMS的支持。通过DKMS安装内核模块,可以在更改为其他Linux内核时自动重建该模块。请参阅自述文件和nvidia-installer帮助文本或“ --dkms”选项。
  • 添加了RandR输出属性_ConnectorLocation,ConnectorNumber,ConnectorType,EDID,_GUID和SignalFormat。有关这些属性的详细信息,请参见自述文件。
  • 扩展对Base Mosaic的支持,以支持多达三个显示屏的所有G80 + SLI配置。
  • 修复了一个错误,该错误导致在将多个DisplayPort监视器连接到一个GPU时,某些监视器无法从DPMS挂起模式唤醒。
  • 从nvidia-settings控制面板的“ X Server XVideo Settings”页面中删除了XVideo属性的控件。可以在XVideo播放器应用程序中或通过xvattr之类的实用程序配置XVideo属性。
  • 修复了导致XVideo适配器上的所有端口共享色彩校正设置的错误。
  • 删除了对以下X配置选项的支持:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    NVIDIA HorizSync和VertRefresh X配置选项可提供类似的控制。有关详细信息,请参见NVIDIA驱动程序自述文件。
  • 修复了一个错误,该错误使NVIDIA 3D Vision Pro在不同VT上的X服务器之间切换时无法正常工作。
  • 当将旋转,反射或变换应用于显示设备时(通过RandR或通过MetaMode语法)增加了对桌面平移的支持;在这种情况下,平移以前将被忽略。

  • 认真地,您应该尝试使用新的驱动程序,最终获得几乎与Windows相同的性能……

    我通常不喜欢使用任何仍然在我工作的系统上测试阶段非常多。话虽如此,我可以肯定地说,最新的Beta驱动程序修复了我使用默认精确的12.04专有nvidia驱动程序遇到的很多问题。这就像整个事情都发生了变化-所谓的“稳定”驱动程序对我来说就像是beta体验,更新的驱动程序甚至更糟(例如,从挂起状态中不醒来),而最新的beta驱动程序(304.30)可以正常工作,因此远。非常感谢您为我提供的帮助和精心的解答+1!非常感谢!
    FuzzyQ

    304.30驱动程序最终使我的系统与Windows XP和Windows 7 Nvidia的性能水平几乎处于同等水平。使用Windows和Linux上的Nvidia,您需要始终保持最新状态,并始终直接从他们那里获取驱动程序以获得最佳体验...很高兴为您解决了问题……

    1

    编辑:X现在可以通过xscreensaver锁定

    嗨!尝试一下,我使用它的效果很好,主要用于游戏!由于它不会由Unity进行管理,因此您可能也会获得很好的结果!

    我创建了此脚本,该脚本创建了一个新的X会话并运行命令或打开终端,以便您可以在此处运行它。

    openNewX.sh

    #!/bin/bash
    
    function FUNCisX1running {
      ps -A -o command |grep -v "grep" |grep -q -x "X :1"
    }
    
    useJWM=true
    useKbd=true
    while [[ ${1:0:2} == "--" ]]; do
      if [[ "$1" == "--no-wm" ]]; then #opt SKIP WINDOW MANAGER (run pure X alone)
        useJWM=false
        shift
      elif [[ "$1" == "--no-kbd" ]]; then #opt SKIP Keyboard setup
        useKbd=false
        shift
      elif [[ "$1" == "--isRunning" ]]; then #opt check if new X :1 is already running
        if FUNCisX1running; then
          exit 0
        else
          exit 1
        fi
      elif [[ "$1" == "--help" ]]; then #opt show help info
        echo "usage: options runCommand"
    
        # this sed only cleans lines that have extended options with "--" prefixed
        sedCleanHelpLine='s"\(.*\"\)\(--.*\)\".*#opt" \2"' #helpskip
        grep "#opt" $0 |grep -v "#helpskip" |sed "$sedCleanHelpLine"
    
        exit 0
      else
        #echoc -p "invalid option $1"
        echo "PROBLEM: invalid option $1"
        $0 --help
        exit 1
      fi
    done
    #echo "going to execute: $@"
    #runCmd="$1" #this command must be simple, if need complex put on a script file and call it!
    runCmd="$@" #this command must be simple, if need complex put on a script file and call it!
    
    #if ! echoc -q -t 2 "use JWM window manager@Dy"; then
    #  useJWM=false
    #fi
    
    # run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
    if ! FUNCisX1running; then
      xterm -e "\
      echo \"INFO: hit CTRL+C to exit the other X session and close this window\";\
      echo \"INFO: running in a thread (child proccess) to prevent ctrl+c from freezing this X session and the machine!\";\
      echo \"INFO: hit ctrl+alt+f7 to get back to this X session (f7, f8 etc, may vary..)\";\
      echo ;\
      echo \"Going to execute on another X session: $runCmd\";\
      sudo X :1"&
    fi
    #sudo chvt 8 # this line to force go to X :1 terminal
    
    # wait for X to start
    while ! FUNCisX1running; do
      sleep 1
    done
    
    # run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
    if $useJWM; then
      if [[ ! -f "$HOME/.jwmrc" ]]; then
        echo '<?xml version="1.0"?><JWM><Key mask="4" key="L">exec:xscreensaver-command --lock</Key></JWM>' \
          >$HOME/.jwmrc
        #if ! jwm -p; then
        #  rm $HOME/.jwmrc
        #  echo ".jwmrc is invalid"
        #else
          echo "see http://joewing.net/programs/jwm/config.shtml#keys"
          echo "with Super+L you can lock the screen now"
        #fi
      fi
    
      jwm -display :1&
    fi
    
    kbdSetup="echo \"SKIP: kbd setup\""
    if $useKbd; then
      kbdSetup="setxkbmap -layout us"
    fi
    
    sleep 2
    
    xscreensaver -display :1&
    
    # setxkbmap is good for games that have console access!; bash is to keep console open!
    
    # nothing
    #xterm -display :1&
    
    # dead keys
    #xterm -display :1 -e "setxkbmap -layout us -variant intl; bash"&
    
    # good for games!
    xterm -display :1 -e "$kbdSetup; bash -c \"$runCmd\"; bash"&
    #xterm -display :1 -e "$kbdSetup; bash -c \"$@\"; bash"&
    

    另外,在以下位置添加此内容:compiz配置设置管理器->窗口规则->不可关闭的窗口:

    (class=XTerm) & (title=sudo X :1) & (name=xterm)
    

    这将阻止您关闭该终端(使用ctrl + c关闭另一个X会话以及该终端),因为如果关闭“窗口”,它将冻结当前的X会话!

    它的优点是您没有Alt + Enter全屏问题,也没有Alt + TAB全屏问题;从Urban Terror(Linux原生)到使用Wine运行的游戏,您都可以以更高的稳定性运行任何3D游戏!甚至某些运行3D游戏的浏览器,例如带有Quake的Firefox!

    观察:您可能想要安装jwm软件包,但不是必需的,但是如果您需要在那里进行任何窗口管理,将会有所作为。

    PS .:当然可以改进,我的计划是将键盘设置添加到一个选项中,但是我做得很慢;


    0

    使用Unity 3D时,您是否启用了许多3D效果等?(多维数据集,桌面动画,菜单效果等)即使在良好的机器上,它们也会降低性能。

    可能值得检查您的nvidia设置,只需在破折号中搜索“ nvidia”即可找到它。我知道我必须调整nvidia的设置很多,然后我才不会出现任何滞后。

    检查您的游戏设置,对其进行一些更改,然后查看fps的变化量。

    确保获取Ubuntu的最新更新,这有时可以解决问题,尽管就您而言,我认为这不会有所帮助。


    谢谢您的回复。我没有更改此安装上的任何compiz设置(甚至没有安装ccsm),因此关于安装程序的所有内容都是库存Unity 3D,全新安装后即可获得。没有立方体,没有燃烧的窗户,什么也没有。关于我的游戏设置:我知道在Newerth的Ubuntu 11.10(及更早版本)中,所有设置都可以与我现在使用的设置完全一样的顺利运行。我的目标是再次实现这一目标。如您所料,我已经安装了ubuntu的所有最新更新(来自官方存储库;未添加其他ppas)。
    dong 2012年

    我在英伟达设置中到底可以更改什么?我看不到可以为提高性能而进行的更改。
    dong

    有vsync,AA和AF等各种设置,其中一个设置区域下还有一个图形性能滑块,可能值得一看@dong
    nisshh 2012年
    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.