Que faire contre la baisse des performances du jeu en 12.04 lors de l'utilisation de l'unité (3D)?

9

Je constate une énorme baisse des performances du jeu depuis ma nouvelle installation d'ubuntu 12.04

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

Je joue principalement à Heroes of Newerth en utilisant leur client Linux. Je fais cela depuis Ubuntu 9.10 et je n'avais jamais rencontré de problèmes de performances lors de l'utilisation du pilote nvidia propriétaire. Mon fps a toujours été maximisé à la limite du cadre vsync de 60.

Depuis que je lance Ubuntu 12.04, j'obtiens environ 30-45 ips et l'expérience de jeu en général est très lente. Je sais qu'il y a beaucoup de gens qui 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ème de performances). C'était une perte de temps car je rencontrais les mêmes problèmes de performances avec les 4 versions de pilote.

Lorsque j'utilise Unity 2D, mes images par seconde sont de retour à 60 et les performances globales du jeu sont excellentes. Je n'ai donc que ces problèmes lors de l'exécution de la version d'ubuntu 12.04 de Unity.

J'ai également essayé de supprimer mes dossiers .config et .compiz-1 dans le répertoire personnel, mais les performances du jeu sont toujours un gâchis lors de l'utilisation de l'unité.

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

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

Toute aide appréciée.

dong
la source

Réponses:

3

Ce n'est pas une vraie solution, mais au moins ce pourrait être une solution de contournement (espérons-le) utile (en dehors de la simple utilisation de Unity 2D).

Avant de commencer une partie, ouvrez Nautilus (le gestionnaire de fichiers) et accédez à /usr/share/application. Ouvrez un terminal, saisissez metacity --replaceet appuyez sur Entrée. Ne paniquez pas, l'interface Unity disparaîtra, mais c'est mon intention. Lancez le jeu à partir du gestionnaire de fichiers (le lanceur du jeu doit se trouver dans le dossier que j'ai mentionné). Une fois que vous avez fini de jouer à votre jeu, tapez unity --replacedans la fenêtre du terminal et appuyez sur Entrée. Votre bureau est maintenant restauré comme il était.
Cela devrait fonctionner car c'est probablement Unity qui s'exécute en arrière-plan qui cause des problèmes.

De plus, je signalerais cela comme un bug. C'est définitivement quelque chose qui doit être corrigé. Si vous soumettez un rapport de bogue, assurez-vous de laisser un lien ici afin que les autres personnes qui rencontrent ce problème puissent le marquer comme "les affectant", ce qui le corrigera plus tôt.

RobinJ
la source
Merci pour votre réponse. Je vais essayer cette solution de contournement et faire rapport. Bien sûr, ce n'est pas joli, mais au moins mieux que de se déconnecter et de se reconnecter à l'unité 2d tout le temps ... Pouvez-vous m'aider à signaler le bogue? Un lien vers une ressource ou quelque chose où le processus est expliqué aiderait déjà beaucoup. Merci.
dong
Merci RobinJ pour votre solution de contournement. Cela fonctionne vraiment bien et c'est mieux que de se déconnecter et de se reconnecter avec Unity 2D car je peux garder ma session. J'ai ouvert le dossier avec le lanceur de jeu, ouvert un terminal, tapé metacity --replace &commencé le jeu et j'ai la merveilleuse performance que j'attends. Quand j'ai fini, je tape unity --replaceet tout est revenu à la normale. Je vais maintenant déposer un bug contre l'unité et voir ce qu'il apporte.
dong
@dong Il existe un guide pour signaler les bogues dans la documentation Ubuntu: help.ubuntu.com/community/ReportingBugs
RobinJ
Ce n'est pas un bogue Unity en soi, mais un bogue Compiz. Les jeux n'ont jamais bien fonctionné avec compiz pour moi ...
user55822
D'accord, un peu en retard, mais voici le rapport de bug : bug de l'unité-998141 . Veuillez vous assurer de marquer le bogue comme vous affectant, si vous êtes également concerné par cela. Peut-être que cela attire l'attention.
dong
1

Vous pouvez toujours mettre à jour les pilotes 304.22 Nvidia Beta et voir ce qui se passe. J'avais d'énormes problèmes de performances avec Ubuntu 12.04 LTS et la version Nvidia 295.59 et la version 302.07 semblaient résoudre des 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 il y a encore des problèmes mineurs de quelques applications mais la situation est vraiment améliorée de manière significative. Vous devez utiliser les derniers pilotes Nvidia à tout moment, même s'ils sont en version BETA, car il semble que les anciens pilotes stables ne soient pas testés par l'équipe de Nvidia sur les mises à jour continues du noyau et d'Ubuntu, provoquant des problèmes et des problèmes inattendus.

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

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

  • Ajout de la prise en charge des GPU suivants:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Amélioration des fonctionnalités 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 lorsque X est initialisé.
  • 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
    utilisé pour la création de méta-modes implicites.
  • Voir la description de l'
    option de configuration IncludeImplicitMetaModes X dans le fichier README pour plus de détails.

  • Modification de la gestion des requêtes RandR 1.0 / 1.1 RRGetScreenInfo et RRSetScreenConfig (par exemple, `xrandr -q --q1` et` xrandr --size ... 'et `xrandr --orientation ...') de sorte qu'elles fonctionnent sur MetaModes. C'était le comportement des versions 295.xx et antérieures du pilote NVIDIA X, mais les versions 302.xx ont modifié la gestion de ces demandes 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 RandR 1.0 / 1.1, les applications en plein écran (par exemple, les applications basées sur SDL, Wine), devraient avoir plus de résolutions disponibles et devraient mieux interagir avec plusieurs configurations de moniteur.
  • Correction d'un bug qui pouvait faire apparaître un écran noir ou une corruption des GPU G8x, G9x et GT2xx après s'être réveillé de la suspension.
  • Correction de plusieurs bugs qui pouvaient entraîner le blocage de certains programmes OpenGL lors de l'appel à fork (3).
  • Correction d'un bogue nvidia-settings qui provoquait un formatage incorrect 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 des paramètres nvidia lorsque les écrans sont branchés à chaud.
  • Correction d'un bug qui causait une corruption d'affichage lors de la définition de certaines transformations, en particulier lors du panoramique d'un affichage transformé.
  • Correction d'un bug qui générait des événements RandR supplémentaires lors de la première connexion à chaud d'un écran.
  • Correction d'un bug qui provoquait le rejet des modelines 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é au rendu sur une superposition RVB dessinable.
  • 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 honorer la valeur "none" sur n'importe quel GPU.
  • Ajout de la prise en charge de DKMS dans nvidia-installer. L'installation du module du noyau via DKMS permet au module d'être reconstruit automatiquement lors du passage à un autre noyau Linux. Voir le fichier 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 le fichier README pour plus de détails sur ces propriétés.
  • Prise en charge étendue de Base Mosaic à toutes les configurations G80 + SLI avec jusqu'à trois écrans.
  • Correction d'un bug qui empêchait certains moniteurs de sortir du mode de suspension DPMS lorsque plusieurs moniteurs DisplayPort étaient connectés à un GPU.
  • Suppression des commandes pour les attributs XVideo de la page "X Server XVideo Settings" du panneau de configuration nvidia-settings. Les attributs XVideo peuvent être configurés dans les applications du 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
    Un contrôle similaire est disponible via les options de configuration NVIDIA HorizSync et VertRefresh X. Veuillez consulter le fichier README du pilote NVIDIA pour plus de détails.
  • Correction d'un bug qui empêchait NVIDIA 3D Vision Pro de fonctionner correctement lors du basculement entre les serveurs X sur différents VT.
  • Ajout de la prise en charge du panoramique de 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 auparavant ignoré dans ce cas.

  • la source
    Sérieusement, vous devriez essayer les nouveaux pilotes, enfin obtenir les performances presque ce qu'elles sont dans Windows ...
    Je n'aime pas en général en utilisant tout ce qui est encore en phase beta sur mon système de travail très bien. Cela étant dit, je peux affirmer que les derniers pilotes bêta ont corrigé un tas de problèmes que j'avais avec les pilotes nvidia propriétaires 12.04 précis par défaut. C'est comme si tout s'était inversé - les pilotes soi-disant «stables» étaient comme une expérience bêta pour moi, les pilotes mis à jour étaient encore pires (par exemple, aucun réveil de la suspension) et les derniers pilotes bêta (304.30) fonctionnaient parfaitement, donc loin. +1 de ma part pour cette réponse utile et élaborée! Merci beaucoup!
    FuzzyQ
    Les pilotes 304.30 ont finalement mis mon système en quasi parité avec les niveaux de performance de Windows XP et Windows 7 Nvidia. Avec Nvidia sous Windows et Linux, vous devez rester à la pointe du progrès à tout moment, et obtenir toujours les pilotes directement de leur part pour la meilleure expérience ... heureux qu'il l'ait corrigé pour vous ...
    1

    EDIT: X est désormais verrouillable via xscreensaver

    salut! essayez ceci, j'ai de bons résultats en l'utilisant, surtout pour les jeux! Comme il ne sera pas géré par Unity, vous pouvez également obtenir 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 là-bas.

    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 également ceci à: gestionnaire de paramètres de config compiz -> règles de 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 et également le terminal), car si vous fermez "la fenêtre", cela gèle votre session X actuelle!

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

    Obs .: vous voudrez peut-être installer le package jwm, non requis mais fera une différence si vous avez besoin de faire de la gestion de fenêtres là-bas ..

    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 pour que je puisse mettre à jour le script de mon :)

    Puissance du Verseau
    la source
    0

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

    Il peut être utile de vérifier vos paramètres nvidia, recherchez simplement «nvidia» dans le tableau de bord et vous le trouverez. Je sais que j'ai dû modifier les paramètres nvidia un peu avant de ne pas avoir de décalage.

    Vérifiez vos paramètres de jeu, modifiez-les un peu et voyez combien vos fps changent.

    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.

    nisshh
    la source
    Merci pour votre réponse. Je n'ai modifié aucun paramètre compiz sur cette installation (je n'ai même pas installé ccsm), donc tout ce qui concerne ma configuration est le stock Unity 3D que vous obtenez après une nouvelle installation. Pas de cubes, pas de fenêtres brûlantes, rien. À propos de mes paramètres de jeu: je sais que tout fonctionnait bien dans Ubuntu 11.10 (et plus ancien) dans Heroes of Newerth avec exactement les mêmes paramètres que j'ai maintenant. Mon objectif est d'y parvenir à nouveau. Comme vous l'avez déjà imaginé, j'ai déjà installé toutes les dernières mises à jour pour ubuntu (à partir des dépôts officiels; aucun autre ppas ajouté).
    dong
    Que puis-je changer exactement dans les paramètres nvidia? Je ne vois pas ce que je pourrais changer pour améliorer les performances.
    dong
    Il y a des paramètres pour vsync, AA et AF et diverses autres choses, il y a aussi un curseur de performance graphique sous l'une des zones de paramètres, peut-être la peine de le regarder @dong
    nisshh