Cosa fare contro il calo delle prestazioni del gioco in 12.04 quando si utilizza unity (3D)?


9

Provo un enorme calo delle prestazioni di gioco dalla mia nuova installazione di Ubuntu 12.04

Il mio PC è composto da una Nvidia Geforce GTX 460, una CPU AMD Phenom II X4 965 e 4 GB di RAM e utilizzo un driver proprietario nvidias.

Gioco principalmente a Heroes of Newerth usando il loro client Linux. Lo faccio da Ubuntu 9.10 e non ho mai avuto problemi di prestazioni durante l'utilizzo del driver nvidia proprietario. Il mio fps era sempre al massimo con il limite del frame vsync di 60.

Da quando utilizzo Ubuntu 12.04 ottengo circa 30-45 fps e l'esperienza di gioco in generale è molto lenta. So che ci sono molte persone che hanno problemi con il driver nvidias 295.40, che purtroppo è installato di default in Ubuntu 12.04. Quindi ho installato manualmente l'ultima versione stabile 295.49, l'ultima versione beta 302.07 e persino la versione precedente 295.33 utilizzata in Ubuntu 11.10 (dove non ho mai avuto problemi con le prestazioni). È stato uno spreco di tempo da quando ho riscontrato gli stessi problemi di prestazioni con tutte e 4 le versioni dei driver.

Quando uso Unity 2D il mio fps è tornato a 60 e le prestazioni complessive del gioco sono eccezionali. Quindi ho solo questi problemi quando eseguo la versione di Unity di Ubuntu 12.04.

Ho anche provato ad eliminare le mie cartelle .config e .compiz-1 nella home directory, ma le prestazioni del gioco sono ancora un disastro quando si utilizza l'unità.

Non so cosa provare dopo ... Qualcuno sa come posso eseguire ulteriormente il debug del problema? Forse come posso fornire più dati per analizzare meglio il problema? Forse prova a giocherellare con alcune impostazioni di compiz?

Questa regressione delle prestazioni è davvero frustrante e sto pensando di scaricare semplicemente il client Windows di Heroes of Newerth e tornare al doppio avvio poiché questo è semplicemente inaccettabile.

Qualsiasi aiuto apprezzato.

Risposte:


3

Non è una soluzione reale, ma almeno potrebbe essere una soluzione (si spera) utile (oltre al semplice utilizzo di Unity 2D).

Prima di iniziare una partita, apri Nautilus (il file manager) e vai a /usr/share/application. Apri un terminale, digita metacity --replacee premi Invio. Non fatevi prendere dal panico, l'interfaccia Unity scomparirà, ma questa è la mia intenzione. Avvia il gioco dal file manager (il lanciatore per il gioco dovrebbe trovarsi nella cartella che ho citato). Dopo aver finito di giocare, digita unity --replacela finestra del terminale e premi Invio. Il desktop è ora ripristinato com'era.
Questo dovrebbe funzionare poiché è probabilmente Unity in esecuzione in background a causare problemi.

Inoltre, segnalerei questo come un bug. È sicuramente qualcosa che deve essere risolto. Se invii una segnalazione di bug, assicurati di lasciare un link qui in modo che altre persone che stanno riscontrando questo problema possano contrassegnarlo come "interessato a loro", che lo risolverà prima.


Grazie per la risposta. Proverò questa soluzione alternativa e riferirò indietro. Certo non è carino ma almeno è meglio che disconnettersi e riconnettersi con l'unità 2d per tutto il tempo ... Potete aiutarmi a segnalare il bug? Un collegamento a una risorsa o qualcosa in cui viene spiegato il processo sarebbe già di grande aiuto. Grazie.
dong

Grazie RobinJ per la tua soluzione alternativa. Funziona davvero bene ed è meglio che disconnettersi e riconnettersi con unità 2d perché posso mantenere la mia sessione. Ho aperto la cartella con il launcher del gioco, ho aperto un terminale, metacity --replace &ho digitato, avviato il gioco e ho le meravigliose prestazioni che mi aspetto di ottenere. Quando ho finito, scrivo unity --replacee tutto è tornato alla normalità. Ora presenterò un bug contro l'unità e vedrò cosa porta.
dong

@dong C'è una guida per segnalare bug nella documentazione di Ubuntu: help.ubuntu.com/community/ReportingBugs
RobinJ,

Non è un bug Unity in sé, ma Compiz. I giochi non hanno mai funzionato bene con Compiz per me ...
user55822

Va bene, un po 'in ritardo, ma ecco il bug report: unity bug-998141 . Assicurati di contrassegnare il bug come se ti colpisse, se anche tu ne sei interessato. Forse attira l'attenzione.
dong

1

Puoi sempre aggiornare i driver Nvidia Beta 304.22 e vedere cosa succede. Avevo enormi problemi di prestazioni con Ubuntu 12.04 LTS e la versione Nvidia 295.59 e la versione 302.07 sembravano risolvere alcune cose minori. La maggior parte dei problemi è stata risolta aggiornando il driver 304.22 più recente. Ora le mie prestazioni GeForce sono finalmente uguali a quelle di Windows XP, ma ci sono ancora piccoli problemi da alcune applicazioni, ma la situazione è davvero migliorata in modo significativo. Dovresti usare i driver Nvidia più recenti in ogni momento, anche se si trovano in BETA perché sembra che quelli più vecchi stabili non siano testati dal team di Nvidia su aggiornamenti più recenti del kernel e Ubuntu che causano problemi e problemi imprevisti.

Puoi ottenerli http://www.geforce.com/drivers/beta-legacy

I driver 304.22 hanno tonnellate di correzioni su larga scala come:

  • Aggiunto supporto per le seguenti GPU:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Migliorata la funzionalità dell'opzione IncludeImplicitMetaModes Xconfiguration:
  • I MetaMode impliciti verranno aggiunti per il dispositivo di visualizzazione principale, anche se vengono utilizzati più dispositivi di visualizzazione quando X viene inizializzato.
  • I MetaMode impliciti verranno aggiunti per risoluzioni comuni, anche se non esiste una modalità con quella risoluzione nel pool di modalità del dispositivo di visualizzazione.
  • Estesa la sintassi dell'opzione di configurazione IncludeImplicitMetaModes, ad esempio, per controllare quale dispositivo di visualizzazione viene
    utilizzato per la creazione di MetaMode impliciti.
  • Vedere la descrizione dell'opzione di configurazione IncludeImplicitMetaModes X
    nel README per i dettagli.

  • Modificato il trattamento delle richieste RandR 1.0 / 1.1 RRGetScreenInfo e RRSetScreenConfig (ad es. `Xrandr -q --q1` e` xrandr --size ... `e` xrandr --orientation ... `) in modo tale che funzionino MetaMode. Questo era il comportamento nelle versioni del driver NVIDIA X 295.xx e precedenti, ma le versioni 302.xx alteravano la gestione di queste richieste RandR 1.0 / 1.1 per operare sulle modalità di un singolo output RandR.
  • Con le modifiche di cui sopra a IncludeImplicitMetaModes e RandR 1.0 / 1.1, le applicazioni a schermo intero (ad esempio, applicazioni basate su SDL, Wine), dovrebbero avere a disposizione più risoluzioni e interagire meglio con più configurazioni di monitor.
  • Risolto un bug che poteva causare la visualizzazione di una schermata nera o corruzione delle GPU G8x, G9x e GT2xx dopo il risveglio dalla sospensione.
  • Risolti diversi bug che potevano causare il blocco di alcuni programmi OpenGL quando si chiamava fork (3).
  • Risolto un bug relativo alle impostazioni nvidia che causava una formattazione errata dei risultati delle query ProbeDisplays fatte con l'opzione --display-device-string.
  • Migliorata la reattività degli aggiornamenti al pannello di controllo delle impostazioni di nvidia quando i display sono collegati a caldo.
  • Risolto un bug che causava il danneggiamento del display durante l'impostazione di alcune trasformazioni, in particolare quando si eseguiva il pan di un display trasformato.
  • Risolto un bug che causava la generazione di ulteriori eventi RandR la prima volta che un display veniva collegato a caldo.
  • Risolto un bug che causava il rifiuto delle modelle X11 con '@' nei loro nomi.
  • Aggiunto supporto per i dispositivi derivati ​​DisplayPort 1.2, che consentono di collegare più schermi a un singolo connettore DisplayPort su una scheda grafica.
  • Risolto un bug che causava rallentamenti della maggior parte dei caricamenti di texture OpenGL quando il contesto era associato al rendering su un disegno sovrapposizione RGB.
  • Risolto un problema per il quale l'audio su HDMI non funzionava dopo aver riavviato il server X su alcune GPU MCP7x (IGP).
  • Aggiornata l'opzione di configurazione X "UseDisplayDevice" per onorare il valore "none" su qualsiasi GPU.
  • Aggiunto supporto per DKMS in nvidia-installer. L'installazione del modulo del kernel tramite DKMS consente di ricostruire automaticamente il modulo quando si passa a un altro kernel Linux. Vedere il file della guida di README e nvidia-installer o l'opzione "--dkms".
  • Aggiunte proprietà di output RandR _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID e SignalFormat. Vedere il file README per i dettagli su queste proprietà.
  • Supporto esteso per Base Mosaic a tutte le configurazioni G80 + SLI con un massimo di tre display.
  • Risolto un bug che impediva la riattivazione di alcuni monitor dalla modalità di sospensione DPMS quando più monitor DisplayPort erano collegati a una GPU.
  • Rimossi i controlli per gli attributi XVideo dalla pagina "X Server XVideo Settings" del pannello di controllo delle impostazioni di nvidia. Gli attributi XVideo possono essere configurati nelle applicazioni del lettore XVideo o tramite utility come xvattr.
  • Risolto un problema per il quale tutte le porte su un adattatore XVideo condividevano le impostazioni di correzione del colore.
  • Rimosso il supporto per le seguenti opzioni di configurazione X:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    Un controllo simile è disponibile tramite le opzioni di configurazione NVIDIA HorizSync e VertRefresh X. Per i dettagli, consultare il README del driver NVIDIA.
  • Risolto un bug che impediva a NVIDIA 3D Vision Pro di funzionare correttamente quando si passa da un server X a un altro VT.
  • Aggiunto supporto per il panning desktop quando rotazione, riflessione o trasformazione vengono applicati a un dispositivo di visualizzazione (tramite RandR o tramite la sintassi MetaMode); il panning in precedenza sarebbe stato ignorato in quel caso.

  • Seriamente dovresti provare i nuovi driver, finalmente le prestazioni sono quasi quelle di Windows ...

    Io di solito non amo utilizzare tutto ciò che è ancora in fase beta sul mio sistema di lavoro molto più. Detto questo, posso affermare che gli ultimi driver beta hanno risolto un bel po 'di problemi che stavo avendo con i driver nvidia proprietari precisi 12.04 predefiniti. È come se tutto fosse cambiato: i cosiddetti driver "stabili" erano per me un'esperienza beta, i driver aggiornati erano anche peggio (ad es. Nessuna scia dalla sospensione) e gli ultimi driver beta (304.30) funzionano perfettamente, quindi lontano. +1 da parte mia per questa risposta utile ed elaborata! Grazie mille!
    FuzzyQ

    I driver 304.30 hanno finalmente messo il mio sistema quasi alla pari con i livelli di prestazioni di Windows XP e Windows 7 Nvidia. Con Nvidia sia in Windows che in Linux devi essere sempre all'avanguardia e ottenere sempre i driver direttamente da loro per la migliore esperienza ... felice di averlo risolto per te ...

    1

    EDIT: X ora è bloccabile tramite xscreensaver

    Ciao! prova questo, sto usando grandi risultati, soprattutto per i giochi! Dato che non sarà gestito da Unity, potresti avere anche grandi risultati!

    Ho creato questo script che crea una nuova sessione X ed esegue un comando o apre un terminale in modo da poterlo eseguire 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 [[ "$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"&
    

    inoltre, aggiungilo a: compiz config settings manager -> regole finestra -> finestre non chiudibili:

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

    Questo ti impedirà di chiudere quel terminale (usa ctrl + c per chiudere l'altra sessione X e anche il terminale), perché se chiudi "la finestra" si bloccherà la tua sessione X corrente!

    Ha il vantaggio di non avere alt + inserire problemi a schermo intero, anche senza Alt + TAB problemi a schermo intero; puoi correre con maggiore stabilità in qualsiasi gioco 3D, da Urban Terror (nativo di Linux) ai giochi eseguiti con Wine! Anche alcuni browser che eseguono giochi 3D come Firefox con Quake!

    Nota: potresti voler installare il pacchetto jwm, non necessario, ma farà la differenza se devi fare una gestione delle finestre lì.

    PS .: ovviamente può essere migliorato, il mio piano è quello di aggiungere la configurazione della tastiera a un'opzione, ma lo faccio molto lentamente;), se qualcuno lo migliora / pulisce, pubblica così posso aggiornare il mio script :)


    0

    Quando usi Unity 3D, hai molti effetti 3D e simili abilitati? (cubo, animazioni desktop, effetti di menu, ecc.) Questi possono ridurre le prestazioni, anche su una buona macchina.

    Potrebbe valere la pena controllare le impostazioni di nvidia, basta cercare 'nvidia' nel trattino e lo troverai. So che ho dovuto modificare un po 'le impostazioni di NVIDIA prima di non avere alcun ritardo.

    Controlla le tue impostazioni di gioco, modificale un po 'e vedi quanto cambia il tuo fps.

    Assicurati di prendere gli ultimi aggiornamenti per Ubuntu, questo a volte può risolvere i problemi, anche se nel tuo caso, non mi aspetto che possa aiutare.


    Grazie per la risposta. Non ho modificato alcuna impostazione di compiz su questa installazione (non ho nemmeno installato ccsm) quindi tutto ciò che riguarda la mia configurazione è stock Unity 3D che ottieni dopo una nuova installazione. Niente cubi, niente finestre in fiamme, niente. Informazioni sulle mie impostazioni di gioco: so che tutto funzionava senza intoppi in Ubuntu 11.10 (e precedenti) in Heroes of Newerth con esattamente le stesse impostazioni che ho ora. Il mio obiettivo è raggiungerlo di nuovo. Come hai già immaginato, ho già installato tutti gli ultimi aggiornamenti per Ubuntu (dai repository ufficiali; non sono stati aggiunti altri ppas).
    dong

    Cosa posso cambiare esattamente nelle impostazioni di nvidia? Non vedo cosa potrei cambiare per migliorare le prestazioni.
    dong

    Ci sono impostazioni per vsync, AA e AF e varie altre cose, c'è anche un dispositivo di scorrimento delle prestazioni grafiche sotto una delle aree delle impostazioni, potrebbe valere la pena di dare
    un'occhiata
    Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
    Licensed under cc by-sa 3.0 with attribution required.