O que fazer contra o desempenho do jogo cair em 12.04 ao usar unidade (3D)?

9

Eu experimento uma queda enorme no desempenho do jogo desde a minha nova instalação do Ubuntu 12.04

Meu PC consiste em uma Nvidia Geforce GTX 460, uma CPU AMD Phenom II X4 965 e 4 GB de RAM, e eu uso o driver proprietário da nvidia.

Eu principalmente jogo Heroes of Newerth usando seu cliente linux. Eu faço isso desde o ubuntu 9.10 e nunca tinha experimentado nenhum problema de desempenho ao usar o driver nvidia proprietário. Meus fps sempre foram maximizados para o limite do quadro vsync de 60.

Como eu executo o Ubuntu 12.04, fico com cerca de 30-45 fps e a experiência com jogos em geral é muito lenta. Eu sei que há um monte de pessoas tendo problemas com o driver nvidias 295.40, que infelizmente é instalado por padrão no Ubuntu 12.04. Então eu instalei manualmente o mais recente 295.49 estável, mais recente beta 302.07 e até mesmo a versão mais antiga 295.33 usada no Ubuntu 11.10 (onde eu nunca tive problemas com o desempenho). Foi uma perda de tempo desde que eu estava enfrentando os mesmos problemas de desempenho com todas as 4 versões do driver.

Quando uso o Unity 2D, meu fps está de volta a 60 e o desempenho geral do jogo é ótimo. Então, eu só tenho esses problemas ao executar a versão do Unity do Ubuntu 12.04.

Eu também tentei apagar minhas pastas .config e .compiz-1 no diretório inicial, mas ainda assim o desempenho do jogo é uma bagunça quando se usa a unidade.

Eu não sei o que tentar em seguida ... Alguém sabe como posso depurar ainda mais o problema? Talvez como posso fornecer mais dados para melhor analisar o problema? Talvez tente mexer com algumas configurações de compiz?

Essa regressão de desempenho é realmente frustrante e estou pensando em baixar o cliente do Windows do Heroes of Newerth e voltar ao boot duplo, já que isso é simplesmente inaceitável.

Qualquer ajuda apreciada.

    
por dong 11.05.2012 / 16:47

4 respostas

3

Não é uma solução real, mas pelo menos pode ser uma solução útil (esperançosamente) útil (além de simplesmente usar o Unity 2D).

Antes de iniciar um jogo, abra o Nautilus (o gerenciador de arquivos) e vá para /usr/share/application . Abra um terminal, digite metacity --replace e pressione enter. Não entre em pânico, a interface do Unity irá desaparecer, mas esta é a minha intenção. Inicie o jogo a partir do gerenciador de arquivos (o lançador do jogo deve estar na pasta que mencionei). Depois de terminar o jogo, digite unity --replace na janela do terminal e pressione Enter. Sua área de trabalho agora está restaurada como era.
Isso deve funcionar, pois provavelmente o Unity está sendo executado em segundo plano e está causando problemas.

Além disso, eu denunciaria isso como um bug. É definitivamente algo que precisa ser consertado. Se você enviar um relatório de bug, não se esqueça de deixar um link aqui para que outras pessoas que estejam com esse problema possam marcá-lo como "afetando-as", o que corrigirá o problema mais cedo.

    
por RobinJ 11.05.2012 / 17:13
1

Você sempre pode atualizar para os drivers da Nvidia Beta 304.22 e ver o que acontece. Eu estava tendo enormes problemas de desempenho com o Ubuntu 12.04 LTS e com a versão Nvidia 295.59 & amp; a versão 302.07 parecia consertar algumas pequenas coisas. A maioria dos problemas foi resolvida com a atualização do driver 304.22 mais recente. Agora, meu desempenho em GeForce é finalmente igual ao Windows XP, mas ainda há problemas menores em alguns aplicativos, mas a situação é realmente melhorada significativamente. Você deve usar os drivers mais recentes da Nvidia em todos os momentos, mesmo se eles estiverem em BETA, porque parece que os mais antigos e estáveis não são testados pela equipe da Nvidia no Kernel mais recente e atualizações rolantes do Ubuntu causando problemas e problemas inesperados. O problema é que a Nvidia precisa abrir seus drivers para que os mantenedores do Ubuntu e desenvolvedores Linux possam manter tudo em sincronia, mas essa é uma discussão em andamento que não será resolvida tão cedo: - (

Você pode obter o link

Os drivers 304.22 têm toneladas de correções em grande escala como:

  • Adicionado suporte para as seguintes GPUs:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Aprimorada a funcionalidade da opção de configuração IncludeImplicitMetaModes X:
  • MetaModes implícitos serão adicionados para o dispositivo de exibição principal, mesmo se vários dispositivos de exibição estiverem em uso quando o X for inicializado.
  • Os MetaModes implícitos serão adicionados para resoluções comuns, mesmo que não haja um modo com essa resolução no conjunto de modos do dispositivo de exibição.
  • Estendido a sintaxe da opção de configuração IncludeImplicitMetaModes, por exemplo, para controlar quais O dispositivo de exibição é utilizado para a criação de MetaModes implícitos.
  • Veja a descrição da opção IncludeImplicitMetaModes X configuration
    no README para obter detalhes.

  • Modificado o tratamento das solicitações RandR 1.0 / 1.1 RRGetScreenInfo e RRSetScreenConfig (por exemplo, 'xrandr -q --q1' e 'xrandr --size ...' e 'xrandr --orientation ...') tais que eles operam no MetaModes. Esse foi o comportamento nas versões 295.xx e anteriores do driver NVIDIA X, mas as versões 302.xx alteraram o tratamento dessas solicitações RandR 1.0 / 1.1 para operar em um único modo de saída RandR.
  • Com as alterações acima Para incluir o Gerenciamento Implícito de MetaMode e RandR 1.0 / 1.1, aplicativos em tela cheia (por exemplo, aplicativos baseados em SDL, Wine) devem ter mais resoluções disponíveis e devem interagir melhor com várias configurações de monitor.
  • Corrigido um erro que poderia causar GPUs G8x, G9x e GT2xx para exibir uma tela preta ou corrupção depois de acordar de suspensão.
  • Corrigido vários bugs que poderia causar alguns programas OpenGL para travar ao chamar fork (3).
  • Corrigido um bug nvidia-settings que fazia com que os resultados das consultas do ProbeDisplays feitas com a opção --display-device-string fossem formatados incorretamente.
  • Melhorou a capacidade de resposta das atualizações às configurações da nvidia painel de controle quando as telas são hotplugged.
  • Corrigido um erro que causava a exibição de cor rompimento ao configurar algumas transformações, especialmente ao efetuar o pan de um display transformado.
  • Corrigido um erro que fazia com que eventos RandR extras fossem gerados na primeira vez que um display é hotplug.
  • Corrigido um erro fez com que as modelines X11 com '@' em seus nomes fossem rejeitadas.
  • Adicionado suporte para dispositivos de filiais DisplayPort 1.2, que permitem que vários monitores sejam conectados a um único conector DisplayPort em uma placa gráfica.
  • Corrigido um bug que fazia com que a maioria dos uploads de textura do OpenGL ficasse lenta quando o contexto era renderizado em uma drawable de sobreposição RGB.
  • Corrigido um erro que fazia com que o áudio por HDMI não funcionasse após reiniciar o servidor X em algumas GPUs MCP7x (IGP).
  • Atualizada a opção de configuração X "UseDisplayDevice" para homenagear o valor "none" em qualquer GPU.
  • Adicionado suporte para DKMS no nvidia-installer. A instalação do módulo do kernel por meio do DKMS permite que o módulo seja recriado automaticamente ao mudar para um kernel Linux diferente. Consulte o README e o texto de ajuda nvidia-installer ou a opção "--dkms".
  • Adicionadas as propriedades de saída RandR _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID e SignalFormat. Consulte o README para obter detalhes sobre essas propriedades.
  • Suporte estendido para o Mosaico Base a todas as configurações do G80 + SLI com até três monitores.
  • Corrigido um erro que fazia alguns monitores falharem do modo de suspensão do DPMS quando vários monitores DisplayPort foram anexados a uma GPU.
  • Removidos controles para os atributos do XVideo da página "Configurações do X Server do X Server" do painel de controle nvidia-settings. Os atributos do XVideo podem ser configurados em aplicativos XVideo player ou por meio de utilitários como o xvattr.
  • Corrigido um bug que fazia com que todas as portas em um adaptador XVideo compartilhassem as configurações de correção de cores.
  • Removido o suporte para as seguintes opções de configuração do X:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    Controle semelhante está disponível através das opções de configuração NVIDIA HorizSync e VertRefresh X. Consulte o LEIA-ME do driver da NVIDIA para obter detalhes.
  • Corrigido um bug que impedia que o NVIDIA 3D Vision Pro funcionasse corretamente ao alternar entre os servidores X em VTs diferentes.
  • Adicionado suporte ao deslocamento da área de trabalho quando a rotação , reflexão ou transformação é aplicada a um dispositivo de exibição (através de RandR ou através da sintaxe MetaMode); o panning anteriormente seria ignorado nesse caso.
  •     
    por user79034 27.07.2012 / 22:35
    1

    EDIT: X agora pode ser bloqueado através do xscreensaver

    oi! tente isso, estou tendo ótimos resultados usando, principalmente para jogos! Como não será gerenciado pela Unity, você pode ter ótimos resultados também!

    Eu criei esse script que cria uma nova sessão X e executa um comando ou abre um terminal para que você possa executá-lo lá.

    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 [[ "" == "--no-wm" ]]; then #opt SKIP WINDOW MANAGER (run pure X alone)
        useJWM=false
        shift
      elif [[ "" == "--no-kbd" ]]; then #opt SKIP Keyboard setup
        useKbd=false
        shift
      elif [[ "" == "--isRunning" ]]; then #opt check if new X :1 is already running
        if FUNCisX1running; then
          exit 0
        else
          exit 1
        fi
      elif [[ "" == "--help" ]]; then #opt show help info
        echo "usage: options runCommand"
    
        # this sed only cleans lines that have extended options with "--" prefixed
        sedCleanHelpLine='s"\(.*\"\)\(--.*\)\".*#opt" "' #helpskip
        grep "#opt" 
    (class=XTerm) & (title=sudo X :1) & (name=xterm)
    
    |grep -v "#helpskip" |sed "$sedCleanHelpLine" exit 0 else #echoc -p "invalid option " echo "PROBLEM: invalid option " %pre% --help exit 1 fi done #echo "going to execute: $@" #runCmd="" #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"&

    também, adicione isto em: compiz config settings manager - & gt; regras de janela - & gt; não fechavel janelas:

    %pre%

    Isso impedirá que você feche esse terminal (use ctrl + c para fechar a outra sessão X e também o terminal), porque se você fechar "a janela" ele irá congelar sua sessão X atual!

    Tem a vantagem de você não ter alt + inserir problemas de tela cheia, também sem problemas de tela cheia Alt + TAB; você pode rodar com mais estabilidade em qualquer jogo 3D, do Urban Terror (linux nativo) a jogos com o Wine! Até mesmo alguns navegadores que executam jogos 3D como o Firefox com o Quake!

    Obs .: você pode querer instalar o pacote jwm, não é necessário, mas fará a diferença se você precisar fazer algum gerenciamento de janelas lá ..

    PS .: pode ser melhorado é claro, meu plano é adicionar a configuração do teclado a uma opção, mas eu faço isso bem devagar;), se alguém melhorar / limpar, poste para que eu possa atualizar o meu script: )

        
    por Aquarius Power 10.09.2012 / 22:01
    0

    Ao usar o Unity 3D, você tem muitos efeitos 3D e similares ativados? (cubo, animações da área de trabalho, efeitos de menu, etc.) Isso pode reduzir o desempenho, mesmo em uma boa máquina.

    Pode valer a pena verificar as configurações da nvidia, basta procurar por 'nvidia' no painel e você a encontrará. Eu sei que tive que ajustar um pouco as configurações da nvidia antes que eu não conseguisse nenhum atraso.

    Verifique suas configurações no jogo, altere-as um pouco e veja o quanto seus fps mudam.

    Certifique-se de pegar as atualizações mais recentes para o Ubuntu, isso às vezes pode resolver problemas, embora no seu caso, eu não espere que isso ajude.

        
    por nisshh 11.05.2012 / 16:56