¿Qué hacer contra la caída del rendimiento del juego en 12.04 cuando se usa la unidad (3D)?

9

Experimento una gran caída en el rendimiento del juego desde mi nueva instalación de ubuntu 12.04

Mi PC consta de una CPU Nvidia Geforce GTX 460, AMD Phenom II X4 965 y 4 GB de RAM y utilizo un controlador propietario de nvidias.

Principalmente juego Heroes of Newerth usando su cliente de Linux. Hago esto desde ubuntu 9.10 y nunca había tenido problemas de rendimiento al usar el controlador propietario de nvidia. Mi fps siempre estaba maximizado al límite de fotogramas vsync de 60.

Desde que ejecuto ubuntu 12.04 obtengo alrededor de 30-45 fps y la experiencia del juego en general es muy lenta. Sé que hay muchas personas que tienen problemas con el controlador nvidias 295.40, que lamentablemente está instalado por defecto en ubuntu 12.04. Así que instalé manualmente la última versión estable 295.49, la última versión beta 302.07 e incluso la versión anterior 295.33 utilizada en ubuntu 11.10 (donde nunca tuve problemas con el rendimiento). Fue una pérdida de tiempo ya que estaba experimentando los mismos problemas de rendimiento con las 4 versiones del controlador.

Cuando uso Unity 2D, mis fps vuelven a 60 y el rendimiento general del juego es excelente. Así que solo tengo esos problemas cuando ejecuto la versión de Unity de ubuntu 12.04.

También intenté eliminar mis carpetas .config y .compiz-1 en el directorio de inicio, pero aún así el rendimiento del juego es un desastre cuando utilizo la unidad.

No sé qué probar a continuación ... ¿Alguien sabe cómo puedo depurar aún más el problema? ¿Tal vez cómo puedo proporcionar más datos para analizar mejor el problema? ¿Quizás intente jugar con algunas configuraciones de compiz?

Esta regresión de rendimiento es realmente frustrante y estoy pensando en descargar el cliente de Windows Heroes of Newerth y volver al arranque dual, ya que esto es simplemente inaceptable.

Cualquier ayuda apreciada.

polla
fuente

Respuestas:

3

No es una solución real, pero al menos podría ser una solución (con suerte) útil (aparte de simplemente usar Unity 2D).

Antes de comenzar un juego, abre Nautilus (el administrador de archivos) y ve a /usr/share/application. Abre un terminal, el tipo metacity --replace, y pulse enter. No se asuste, la interfaz de Unity desaparecerá, pero esta es mi intención. Inicie el juego desde el administrador de archivos (el iniciador del juego debe estar en la carpeta que mencioné). Después de que termine de jugar, escriba unity --replaceen la ventana de terminal y presione Entrar. Su escritorio ahora está restaurado a como estaba.
Esto debería funcionar, ya que es probable que Unity ejecutándose en segundo plano esté causando problemas.

Además, informaría esto como un error. Definitivamente es algo que necesita ser arreglado. Si envía un informe de error, asegúrese de dejar un enlace aquí para que otras personas que estén experimentando este problema puedan marcarlo como "que les afecta", lo que lo solucionará antes.

RobinJ
fuente
Gracias por su respuesta. Intentaré esta solución e informaré. Claro que no es bonito, pero al menos mejor que cerrar la sesión y volver a iniciar con unity 2d todo el tiempo ... ¿Me pueden ayudar a informar sobre el error? Un enlace a un recurso o algo donde se explica el proceso ya ayudaría mucho. Gracias.
dong
Gracias RobinJ por tu solución. Está funcionando muy bien y es mejor que cerrar sesión y volver a iniciar sesión con unity 2d porque puedo mantener mi sesión. Abrí la carpeta con el metacity --replace &iniciador del juego , abrí una terminal, escribí el inicio del juego y obtuve el rendimiento maravilloso que espero obtener. Cuando termino, escribo unity --replacey todo vuelve a la normalidad. Ahora presentaré un error contra la unidad y veré qué trae.
dong
@dong Hay una guía para informar errores en la documentación de Ubuntu: help.ubuntu.com/community/ReportingBugs
RobinJ
No es un error de Unity per se, sino uno de Compiz. Los juegos nunca me han funcionado bien con compiz ...
user55822
Muy bien, un poco tarde, pero aquí está el informe de error : unity bug-998141 . Asegúrese de marcar el error como algo que le afecta, si también se ve afectado por esto. Tal vez llama la atención.
Dong
1

Siempre puede actualizar a los controladores 304.22 Nvidia Beta y ver qué sucede. Estaba teniendo grandes problemas de rendimiento con Ubuntu 12.04 LTS y la versión Nvidia 295.59 y la versión 302.07 parecían solucionar algunas cosas menores. La mayoría de los problemas se han resuelto actualizando el último controlador 304.22. Ahora mi rendimiento GeForce finalmente es igual a Windows XP, pero todavía hay problemas menores de algunas aplicaciones, pero la situación realmente mejoró significativamente. Debería usar los últimos controladores de Nvidia en todo momento, incluso si están en BETA porque parece que los equipos estables más antiguos no son probados por el equipo de Nvidia en las actualizaciones más recientes de Kernel y Ubuntu que causan problemas y problemas inesperados.

Puede obtenerlos http://www.geforce.com/drivers/beta-legacy

Los controladores 304.22 tienen toneladas de correcciones a gran escala como:

  • Se agregó soporte para las siguientes GPU:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Se mejoró la funcionalidad de la opción Xconfiguration IncludeImplicitMetaModes:
  • Se agregarán MetaModes implícitos para el dispositivo de visualización principal, incluso si se utilizan múltiples dispositivos de visualización cuando se inicializa X.
  • Se agregarán MetaModes implícitos para resoluciones comunes, incluso si no hay un modo con esa resolución en el grupo de modos del dispositivo de visualización.
  • Se extendió la sintaxis de la opción de configuración IncludeImplicitMetaModes, por ejemplo, para controlar qué dispositivo de visualización se
    utiliza para la creación de MetaModes implícitos.
  • Consulte la descripción de la
    opción de configuración IncludeImplicitMetaModes X en README para obtener más detalles.

  • Se modificó el manejo de las solicitudes RandR 1.0 / 1.1 RRGetScreenInfo y RRSetScreenConfig (por ejemplo, `xrandr -q --q1` y` xrandr --size ... `y` xrandr --orientation ... `) para que operen MetaModes. Este era el comportamiento en las versiones 295.xx y anteriores del controlador NVIDIA X, pero las versiones 302.xx alteraron el manejo de estas solicitudes RandR 1.0 / 1.1 para operar en los modos de una única salida RandR.
  • Con los cambios anteriores en el manejo IncludeImplicitMetaModes y RandR 1.0 / 1.1, las aplicaciones de pantalla completa (por ejemplo, aplicaciones basadas en SDL, Wine), deberían tener más resoluciones disponibles y deberían interactuar mejor con múltiples configuraciones de monitor.
  • Se corrigió un error que podía hacer que las GPU G8x, G9x y GT2xx mostraran una pantalla negra o corrupción después de despertar de la suspensión.
  • Se corrigieron varios errores que podrían causar que algunos programas OpenGL se bloqueen al llamar a fork (3).
  • Se corrigió un error de configuración de nvidia que causaba que los resultados de las consultas de ProbeDisplays realizadas con la opción --display-device-string se formatearan incorrectamente.
  • Se mejoró la capacidad de respuesta de las actualizaciones al panel de control de configuración de nvidia cuando las pantallas están conectadas en caliente.
  • Se corrigió un error que causaba daños en la pantalla al configurar algunas transformaciones, especialmente al desplazar una pantalla transformada.
  • Se corrigió un error que causaba que se generaran eventos RandR adicionales la primera vez que se enchufa una pantalla.
  • Se corrigió un error que causaba que las modelinas X11 con '@' en sus nombres fueran rechazadas.
  • Se agregó soporte para dispositivos de bifurcación DisplayPort 1.2, que permiten conectar múltiples pantallas a un solo conector DisplayPort en una placa gráfica.
  • Se corrigió un error que causaba que la mayoría de las cargas de texturas OpenGL fueran lentas cuando el contexto estaba vinculado a una superposición RGB dibujable.
  • Se corrigió un error que causaba que el audio a través de HDMI no funcionara después de reiniciar el servidor X en algunas GPU MCP7x (IGP).
  • Se actualizó la opción de configuración X "UseDisplayDevice" para honrar el valor "none" en cualquier GPU.
  • Se agregó soporte para DKMS en nvidia-installer. La instalación del módulo del kernel a través de DKMS permite que el módulo se reconstruya automáticamente al cambiar a un kernel de Linux diferente. Consulte el archivo README y el texto de ayuda del instalador nvidia o la opción "--dkms".
  • Propiedades de salida RandR agregadas _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID y SignalFormat. Consulte el archivo README para obtener detalles sobre estas propiedades.
  • Soporte extendido para Base Mosaic a todas las configuraciones G80 + SLI con hasta tres pantallas.
  • Se corrigió un error que causaba que algunos monitores no se despertaran del modo de suspensión DPMS cuando se conectaban múltiples monitores DisplayPort a una GPU.
  • Se eliminaron los controles para los atributos de XVideo de la página "Configuración de Xvideo XV Server" del panel de control de configuración de nvidia. Los atributos de XVideo se pueden configurar en aplicaciones de reproductor de XVideo, o mediante utilidades como xvattr.
  • Se corrigió un error que causaba que todos los puertos en un adaptador XVideo compartieran la configuración de corrección de color.
  • Se eliminó el soporte para las siguientes opciones de configuración de X:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    Un control similar está disponible a través de las opciones de configuración NVIDIA HorizSync y VertRefresh X. Consulte el archivo README del controlador NVIDIA para obtener más detalles.
  • Se corrigió un error que impedía que NVIDIA 3D Vision Pro funcionara correctamente al cambiar entre servidores X en diferentes VT.
  • Se agregó soporte para la panorámica de escritorio cuando se aplica rotación, reflexión o transformación a un dispositivo de visualización (ya sea a través de RandR o mediante la sintaxis MetaMode); la panorámica se ignoraría previamente en ese caso.

  • fuente
    En serio, deberías probar los nuevos controladores, finalmente obtuviste el rendimiento casi como en Windows ...
    Por lo general no les gusta usar cualquier cosa que aún está en fase beta en mi sistema de trabajo muy mucho. Dicho esto, puedo afirmar que los últimos controladores beta solucionaron un montón de problemas que tenía con los controladores de nvidia patentados precisos predeterminados de 12.04. Es como si todo hubiera cambiado: los llamados controladores 'estables' fueron como una experiencia beta para mí, los controladores actualizados fueron aún peores (por ejemplo, sin despertar de la suspensión) y los últimos controladores beta (304.30) funcionan perfectamente. lejos. ¡+1 de mi parte por esta respuesta útil y elaborada! ¡Muchas gracias!
    FuzzyQ
    Los controladores 304.30 finalmente han puesto mi sistema en una paridad cercana con los niveles de rendimiento de Windows XP y Windows 7 Nvidia. Con Nvidia tanto en Windows como en Linux, debe mantenerse a la vanguardia todo el tiempo que parezca y siempre obtener los controladores directamente de ellos para obtener la mejor experiencia ... me alegro de que lo haya solucionado ...
    1

    EDITAR: X ahora se puede bloquear a través de xscreensaver

    ¡Hola! prueba esto, estoy obteniendo excelentes resultados al usarlo, principalmente para juegos. Como no será administrado por Unity, ¡también puede obtener excelentes resultados!

    He creado este script que crea una nueva sesión X y ejecuta un comando o abre un terminal para que pueda ejecutarlo allí.

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

    también, agregue esto en: compiz config settings manager -> reglas de ventana -> ventanas que no se pueden cerrar:

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

    Esto evitará que cierre esa terminal (use ctrl + c para cerrar la otra sesión X y también la terminal), porque si cierra "la ventana" ¡congelará su sesión X actual!

    Tiene la ventaja de que no tiene problemas de pantalla completa de alt + enter, tampoco problemas de pantalla completa de Alt + TAB; ¡puedes ejecutar con más estabilidad cualquier juego en 3D, desde Urban Terror (linux native) hasta juegos con Wine! ¡Incluso algunos navegadores que ejecutan juegos en 3D como Firefox con Quake!

    Obs .: es posible que desee instalar el paquete jwm, no es obligatorio, pero marcará la diferencia si necesita hacer alguna gestión de ventanas allí.

    PD .: se puede mejorar, por supuesto, mi plan es agregar la configuración del teclado a una opción, pero lo hago muy lentamente;), si alguien mejora / limpia, publique para que pueda actualizar el script mío :)

    Poder de acuario
    fuente
    0

    Cuando usa Unity 3D, ¿tiene muchos efectos 3D y similares habilitados? (cubo, animaciones de escritorio, efectos de menú, etc.) Esto puede reducir el rendimiento, incluso en una buena máquina.

    Puede valer la pena verificar su configuración de nvidia, solo busque 'nvidia' en el tablero y lo encontrará. Sé que tuve que ajustar la configuración de nvidia un poco antes de no tener ningún retraso.

    Comprueba la configuración del juego, cámbiala un poco y mira cuánto cambian tus fps.

    Asegúrese de obtener las últimas actualizaciones para Ubuntu, esto a veces puede resolver problemas, aunque en su caso, no espero que ayude.

    nisshh
    fuente
    Gracias por su respuesta. No cambié ninguna configuración de compiz en esta instalación (ni siquiera he instalado ccsm), por lo que todo lo relacionado con mi configuración es el Unity 3D de stock que obtienes después de una instalación nueva. Sin cubos, sin ventanas en llamas, nada. Acerca de mi configuración en el juego: Sé que todo funcionaba sin problemas en Ubuntu 11.10 (y versiones anteriores) en Heroes of Newerth con exactamente la misma configuración que tengo ahora. Mi objetivo es lograr esto nuevamente. Como ya imaginó, ya tengo todas las actualizaciones más recientes para ubuntu instaladas (desde los repositorios oficiales; no se agregaron otras ppas).
    dong
    ¿Qué puedo cambiar exactamente en la configuración de nvidia? No veo qué podría cambiar para mejorar el rendimiento.
    dong
    Hay configuraciones para vsync, AA y AF y varias otras cosas, también hay un control deslizante de rendimiento de gráficos en una de las áreas de configuración, puede valer la pena mirar eso @dong
    nisshh