web-dev-qa-db-fra.com

Que faire contre la chute des performances du jeu dans 12.04 avec l’unité (3D)?

Je constate une baisse considérable des performances de jeu depuis ma nouvelle installation d'ubuntu 12.04

Mon PC est constitué d’un processeur Nvidia Geforce GTX 460, d’un processeur AMD Phenom II X4 965 et de 4 Go de RAM et j’utilise un pilote propriétaire nvidias.

Je joue principalement à Heroes of Newerth en utilisant leur client Linux. Je le fais depuis Ubuntu 9.10 et je n’avais jamais rencontré de problèmes de performances lors de l’utilisation du pilote propriétaire nvidia. Mes fps étaient toujours au maximum du plafond de cadre vsync de 60.

Depuis que je lance Ubuntu 12.04, le temps de jeu est de 30 à 45 i/s et mon expérience de jeu est généralement très lente. Je sais que beaucoup de gens ont des problèmes avec le pilote nvidias 295.40, qui est malheureusement installé par défaut dans Ubuntu 12.04. J'ai donc installé manuellement la dernière version stable 295.49, la dernière version bêta 302.07 et même l'ancienne version 295.33 utilisée dans Ubuntu 11.10 (où je n'ai jamais eu de problèmes de performances). Ce fut une perte de temps puisque je rencontrais les mêmes problèmes de performances avec les 4 versions de pilotes.

Lorsque j'utilise Unity 2D, mon fps est revenu à 60 et les performances de jeu sont excellentes. Je n'ai donc que ces problèmes lors de l'exécution de la version d'Unity d'ubuntu 12.04.

J'ai également essayé de supprimer mes dossiers .config et .compiz-1 dans le répertoire personnel, mais les performances des jeux sont toujours désastreuses lorsque vous utilisez l'unité.

Je ne sais pas quoi essayer ensuite ... Est-ce que quelqu'un sait comment je peux résoudre le problème plus avant? Peut-être comment puis-je fournir plus de données pour mieux analyser le problème? Peut-être essayer de jouer avec certains paramètres de compiz?

Cette régression des performances est vraiment frustrante et je songe simplement à télécharger le client Windows de Heroes of Newerth et à revenir au double démarrage car cela est tout simplement inacceptable.

Toute aide appréciée.

9
dong

Ce n'est pas une vraie solution, mais au moins, il pourrait s'agir d'une solution de contournement (espérons-le) utile (hormis l'utilisation simplement de Unity 2D).

Avant de commencer une partie, ouvrez Nautilus (le gestionnaire de fichiers) et accédez à /usr/share/application. Ouvrez un terminal, tapez metacity --replace et appuyez sur entrée. Ne paniquez pas, l'interface Unity va disparaître, mais telle est mon intention. Lancez le jeu à partir du gestionnaire de fichiers (le programme de lancement du jeu devrait se trouver dans le dossier que j'ai mentionné). Une fois que vous avez fini de jouer, tapez unity --replace dans la fenêtre du terminal, puis appuyez sur entrée. Votre bureau est maintenant restauré à son état actuel.
Cela devrait fonctionner, car c'est probablement Unity qui tourne en arrière-plan qui pose problème.

Aussi, je signalerais cela comme un bug. C'est définitivement quelque chose qui doit être corrigé. Si vous soumettez un rapport de bogue, veillez à laisser un lien ici pour que les autres personnes rencontrant ce problème puissent le marquer comme "les affectant", ce qui permettra de le résoudre plus tôt.

3
RobinJ

Vous pouvez toujours mettre à jour les pilotes 304.22 Nvidia Beta et voir ce qui se passe. J'avais de gros problèmes de performances avec Ubuntu 12.04 LTS et la version 295.59 de Nvidia. La version 302.07 semblait résoudre certains problèmes mineurs. La plupart des problèmes ont été résolus en mettant à jour le dernier pilote 304.22. Maintenant, mes performances GeForce sont finalement égales à celles de Windows XP, mais quelques problèmes mineurs de quelques applications subsistent, mais la situation s’est considérablement améliorée. Vous devez utiliser les derniers pilotes Nvidia à tout moment, même s'ils sont au format BETA, car il semble que les anciens pilotes stables ne sont pas testés par l'équipe de Nvidia sur les nouvelles mises à jour roulantes du noyau et d'Ubuntu, ce qui provoque des problèmes inattendus. Le problème est que Nvidia doit ouvrir ses pilotes Open Source pour que les responsables Ubuntu et les développeurs Linux puissent tout synchroniser, mais c'est une discussion en cours qui ne sera pas résolue de si tôt :

Vous pouvez les obtenir --- (http://www.geforce.com/drivers/beta-legacy

Les pilotes 304.22 ont des tonnes de corrections à grande échelle comme:

  • Ajout du support pour les GPU suivants:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Amélioration de la fonctionnalité de l'option IncludeImplicitMetaModes Xconfiguration:
  • Des méta-modes implicites seront ajoutés pour le périphérique d'affichage principal, même si plusieurs périphériques d'affichage sont utilisés lors de l'initialisation de X.
  • Des méta-modes implicites seront ajoutés pour les résolutions courantes, même s'il n'y a pas de mode avec cette résolution dans le pool de modes du périphérique d'affichage.
  • Extension de la syntaxe de l'option de configuration IncludeImplicitMetaModes, par exemple pour contrôler le périphérique d'affichage sélectionné
    utilisé pour la création de MetaModes implicites.
  • Voir la description de la configuration IncludeImplicitMetaModes X
    Option dans le README pour plus de détails.

  • Modification du traitement des requêtes RandR 1.0/1.1 RRGetScreenInfo et RRSetScreenConfig (par exemple, `xrandr -q --q1` et` xrandr --size ... `et` xrandr --orientation ... `) telles qu'elles fonctionnent MetaModes. C'était le comportement dans les versions de pilote NVIDIA X 295.xx et antérieures, mais les versions 302.xx ont modifié la gestion de ces requêtes RandR 1.0/1.1 pour qu'elles fonctionnent sur les modes d'une seule sortie RandR.
  • Avec les modifications ci-dessus apportées à la gestion de IncludeImplicitMetaModes et de RandR 1.0/1.1, les applications plein écran (par exemple, les applications SDL, Wine) devraient disposer de davantage de résolutions et mieux interagir avec plusieurs configurations de moniteur.
  • Correction d'un bug qui pouvait amener les GPU G8x, G9x et GT2xx à afficher un écran noir ou une corruption après une sortie de veille.
  • Correction de plusieurs bugs pouvant entraîner le blocage de certains programmes OpenGL lors de l'appel de fork (3).
  • Correction d'un bogue nvidia-settings qui entraînait la mise en forme incorrecte des résultats des requêtes ProbeDisplays effectuées avec l'option --display-device-string.
  • Amélioration de la réactivité des mises à jour du panneau de configuration de nvidia-settings lorsque les écrans sont branchés à chaud.
  • Correction d'un bug qui entraînait une corruption de l'affichage lors de la définition de certaines transformations, notamment lors du panoramique d'un affichage transformé.
  • Correction d'un bug en raison duquel des événements RandR supplémentaires étaient générés la première fois qu'un affichage était hotplugged.
  • Correction d'un bug qui entraînait le rejet des modèles X11 avec '@' dans leurs noms.
  • Ajout de la prise en charge des périphériques de branche DisplayPort 1.2, qui permettent de connecter plusieurs écrans à un seul connecteur DisplayPort sur une carte graphique.
  • Correction d'un bug qui ralentissait la plupart des téléchargements de texture OpenGL lorsque le contexte était lié à un rendu superposable RVB.
  • Correction d'un bug qui empêchait l'audio via HDMI de redémarrer le serveur X sur certains GPU MCP7x (IGP).
  • Mise à jour de l'option de configuration X "UseDisplayDevice" pour tenir compte de la valeur "none" sur tous les GPU.
  • Ajout du support pour DKMS dans nvidia-installer. L'installation du module de noyau via DKMS permet de reconstruire automatiquement le module lors de la conversion vers un autre noyau Linux. Voir le README et le texte d'aide de nvidia-installer ou l'option "--dkms".
  • Ajout des propriétés de sortie RandR _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID et SignalFormat. Voir README pour plus de détails sur ces propriétés.
  • Prise en charge étendue de Base Mosaic à toutes les configurations G80 + SLI avec un maximum de trois écrans.
  • Correction d'un bug qui empêchait certains moniteurs de s'éveiller du mode suspension DPMS lorsque plusieurs moniteurs DisplayPort étaient connectés à un GPU.
  • Suppression des commandes pour les attributs XVideo de la page "Paramètres X Server XVideo" du panneau de configuration de nvidia-settings. Les attributs XVideo peuvent être configurés dans des applications de lecteur XVideo ou via des utilitaires tels que xvattr.
  • Correction d'un bug qui faisait que tous les ports d'un adaptateur XVideo partageaient les paramètres de correction des couleurs.
  • Suppression de la prise en charge des options de configuration X suivantes:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh

  • Correction d'un bug qui empêchait NVIDIA 3D Vision Pro de fonctionner correctement lors de la commutation entre des serveurs X sur différents VT.
  • Ajout de la prise en charge du panoramique du bureau lorsque la rotation, la réflexion ou la transformation est appliquée à un périphérique d'affichage (via RandR ou via la syntaxe MetaMode); le panoramique serait précédemment ignoré dans ce cas.
  • 1
    user79034

    EDIT: X est maintenant verrouillable via xscreensaver

    salut! essayez ceci, j'obtiens d'excellents résultats en l'utilisant, surtout pour les jeux! Comme il ne sera pas géré par Unity, vous obtiendrez peut-être d'excellents résultats!

    J'ai créé ce script qui crée une nouvelle session X et exécute une commande ou ouvre un terminal afin que vous puissiez l'exécuter ici.

    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"&
    

    ajoutez aussi ceci à: compiz config settings gestionnaire -> règles de la fenêtre -> fenêtres non fermables:

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

    Cela vous empêchera de fermer ce terminal (utilisez ctrl + c pour fermer l'autre session X ainsi que le terminal), car si vous fermez "la fenêtre", votre session X sera gelée!

    Il a l'avantage que vous n'avez pas alt + entrer les problèmes plein écran, pas plus de problèmes de plein écran Alt + TAB; vous pouvez exécuter avec plus de stabilité n'importe quel jeu en 3D, de Urban Terror (natif de Linux) aux jeux fonctionnant avec Wine! Même certains navigateurs utilisant des jeux 3D comme Firefox avec Quake!

    Obs .: vous voudrez peut-être installer le paquet jwm, ce qui n’est pas nécessaire mais qui fera la différence si vous devez gérer n’importe quelle fenêtre ici.

    PS: cela peut être amélioré bien sûr, mon plan est d’ajouter la configuration du clavier à une option, mais je le fais très lentement;), si quelqu'un l’améliore/le nettoie, postez-le afin que je puisse mettre à jour le script mien :)

    1
    Aquarius Power

    Lorsque vous utilisez Unity 3D, avez-vous activé de nombreux effets 3D et autres? (cube, animations de bureau, effets de menu, etc.) Cela peut réduire les performances, même sur une bonne machine.

    Il peut être intéressant de vérifier vos paramètres nvidia, il suffit de rechercher "nvidia" dans le tableau de bord et vous le trouverez. Je sais que je devais modifier un peu les paramètres de nvidia avant que je ne reçois aucun décalage.

    Vérifiez vos paramètres de jeu, modifiez-les un peu et voyez à quel point votre image par seconde change.

    Assurez-vous de récupérer les dernières mises à jour pour Ubuntu, cela peut parfois résoudre des problèmes, bien que dans votre cas, je ne pense pas que cela aiderait.

    0
    nisshh