Что делать с падением производительности игры в 12.04 при использовании unity (3D)?

9

Я испытываю огромное падение производительности игры после моей новой установки Ubuntu 12.04

Мой компьютер состоит из процессора Nvidia Geforce GTX 460, процессора AMD Phenom II X4 965 и 4 ГБ оперативной памяти, и я использую собственный драйвер nvidias.

В основном я играю в Heroes of Newerth, используя их Linux-клиент. Я делаю это начиная с Ubuntu 9.10, и у меня никогда не возникало проблем с производительностью при использовании проприетарного драйвера nvidia. Мой fps всегда был максимальным до 60 кадров в vsync.

Поскольку я запускаю Ubuntu 12.04, у меня 30-45 кадров в секунду, и игровой опыт в целом очень медленный. Я знаю, что есть много людей, имеющих проблемы с драйвером nvidias 295.40, который, к сожалению, установлен по умолчанию в Ubuntu 12.04. Поэтому я вручную установил последнюю стабильную версию 295.49, последнюю бета-версию 302.07 и даже более старую версию 295.33, используемую в Ubuntu 11.10 (где у меня никогда не было проблем с производительностью). Это была пустая трата времени, так как у меня были одни и те же проблемы с производительностью со всеми 4 версиями драйверов.

Когда я использую Unity 2D, мой fps вернулся к 60, и общая производительность игры отличная. Так что эти проблемы возникают только при запуске версии Unity для Ubuntu 12.04.

Я также попытался удалить мои папки .config и .compiz-1 в домашнем каталоге, но при использовании единства производительность игры все еще не работает.

Я не знаю, что делать дальше ... Кто-нибудь знает, как я могу отладить проблему? Может быть, как я могу предоставить больше данных для лучшего анализа проблемы? Может быть, попытаться возиться с некоторыми настройками compiz?

Это снижение производительности действительно расстраивает, и я думаю просто загрузить Windows-клиент Heroes of Newerth и вернуться к двойной загрузке, поскольку это просто неприемлемо.

Любая помощь приветствуется.

донг
источник

Ответы:

3

Это не реальное решение, но, по крайней мере, это может быть (надеюсь) полезный обходной путь (кроме простого использования Unity 2D).

Перед началом игры откройте Nautilus (файловый менеджер) и перейдите на /usr/share/application. Откройте терминал, введите metacity --replaceи нажмите ввод. Не паникуйте, интерфейс Unity исчезнет, ​​но это мое намерение. Запустите игру из файлового менеджера (лаунчер для игры должен быть в указанной мной папке). После того, как вы закончите играть в свою игру, введите unity --replaceв окне терминала и нажмите Enter. Ваш рабочий стол теперь восстановлен на прежнем уровне.
Это должно работать, так как, вероятно, Unity работает в фоновом режиме, что вызывает проблемы.

Кроме того, я бы сообщил об этом как об ошибке. Это определенно то, что нужно исправить. Если вы отправляете отчет об ошибке, обязательно оставьте здесь ссылку, чтобы другие люди, испытывающие эту проблему, могли пометить ее как «влияющую на них», что позволит исправить ее раньше.

RobinJ
источник
Спасибо за ваш ответ. Я попробую этот обходной путь и сообщу. Конечно, это не красиво, но, по крайней мере, лучше, чем выходить из системы и снова входить в Unity 2d ... Можете ли вы помочь мне сообщить об ошибке? Ссылка на ресурс или что-то, где объясняется процесс, уже очень поможет. Спасибо.
дон
Спасибо RobinJ за ваш обходной путь. Это работает очень хорошо, и это лучше, чем выйти из системы и вернуться с Unity 2d, потому что я могу продолжать сеанс. Я открыл папку с лаунчером игры, открыл терминал, набрал текст, metacity --replace &запустил игру и получил прекрасную производительность, которую я ожидаю получить. Когда я закончу, я печатаю, unity --replaceи все возвращается к нормальной жизни. Теперь я сообщу об ошибке против единства и посмотрю, что это принесет.
Донг
@dong Руководство по сообщению об ошибках в документации по Ubuntu: help.ubuntu.com/community/ReportingBugs
RobinJ
Это не ошибка Unity как таковая, а ошибка Compiz. Мне никогда не
нравились
Хорошо, немного поздно, но вот отчет об ошибке: единство ошибка 998141 . Пожалуйста, не забудьте отметить ошибку как влияющую на вас, если вы также затронуты этим. Может быть, это привлекает внимание.
дон
1

Вы всегда можете обновить драйверы Nvidia Beta 304.22 и посмотреть, что произойдет. У меня были огромные проблемы с производительностью Ubuntu 12.04 LTS и версии Nvidia 295.59, а версия 302.07, казалось, исправляла некоторые мелочи. Большинство проблем было решено путем обновления последней версии драйвера 304.22. Теперь моя производительность GeForce наконец-то равна Windows XP, но у некоторых приложений все еще есть небольшие проблемы, но ситуация действительно значительно улучшилась. Вы должны всегда использовать самые последние драйверы Nvidia, даже если они находятся в бета-версии, поскольку кажется, что более старые стабильные драйверы не тестировались командой Nvidia на более поздних обновлениях ядра и Ubuntu, вызывающих неожиданные проблемы и проблемы.

Вы можете получить их http://www.geforce.com/drivers/beta-legacy

Драйверы 304.22 имеют множество крупных исправлений, таких как:

  • Добавлена ​​поддержка следующих графических процессоров:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Расширенные возможности опции Xconfiguration: IncludeImplicitMetaModes:
  • Неявные метамоды будут добавлены для основного устройства отображения, даже если при инициализации X используется несколько устройств отображения.
  • Неявные метамоды будут добавлены для обычных разрешений, даже если в пуле режимов устройства отображения отсутствует режим с таким разрешением.
  • Расширенный синтаксис параметра конфигурации IncludeImplicitMetaModes, например, для управления тем, какое устройство отображения
    используется для создания неявных метамодов.
  • Подробности смотрите в описании опции конфигурации IncludeImplicitMetaModes X
    в README.

  • Изменена обработка запросов RRGetScreenInfo и RRSetScreenConfig RandR 1.0 / 1.1 (например, `xrandr -q --q1` и` xrandr --size ... `и` xrandr --orientation ... `), так что они работают с MetaModes. Это было поведение в версиях драйверов NVIDIA X 295.xx и более ранних, но выпуски 302.xx изменили обработку этих запросов RandR 1.0 / 1.1 для работы в режимах одного выхода RandR.
  • С учетом вышеуказанных изменений в обработке IncludeImplicitMetaModes и RandR 1.0 / 1.1 у полноэкранных приложений (например, приложений на основе SDL, Wine) должно быть больше доступных разрешений, и они должны лучше взаимодействовать с несколькими конфигурациями монитора.
  • Исправлена ​​ошибка, из-за которой графические процессоры G8x, G9x и GT2xx могли отображать черный экран или повреждаться после пробуждения из режима ожидания.
  • Исправлено несколько ошибок, из-за которых некоторые программы OpenGL зависали при вызове fork (3).
  • Исправлена ​​ошибка nvidia-settings, приводившая к неправильному форматированию результатов запросов ProbeDisplays, выполненных с параметром --display-device-string.
  • Улучшена скорость отклика обновлений панели управления nvidia-settings при горячем подключении дисплеев.
  • Исправлена ​​ошибка, приводившая к искажению отображения при настройке некоторых преобразований, особенно при панорамировании преобразованного отображения.
  • Исправлена ​​ошибка, из-за которой при первом горячем подключении дисплея генерировались дополнительные события RandR.
  • Исправлен баг, из-за которого модели X11 с «@» в именах были отклонены.
  • Добавлена ​​поддержка устройств ветви DisplayPort 1.2, которые позволяют подключать несколько дисплеев к одному разъему DisplayPort на графической плате.
  • Исправлен баг, из-за которого большинство загрузок текстур OpenGL были медленными, когда контекст был привязан к отрисовке с наложением RGB.
  • Исправлена ​​ошибка, из-за которой звук через HDMI не работал после перезапуска X-сервера на некоторых графических процессорах MCP7x (IGP).
  • Обновлен параметр конфигурации X «UseDisplayDevice», чтобы учитывать значение «none» на любом графическом процессоре.
  • Добавлена ​​поддержка DKMS в nvidia-installer. Установка модуля ядра через DKMS позволяет автоматически перестраивать модуль при переходе на другое ядро ​​Linux. Смотрите README и текст справки установщика nvidia или параметр --dkms.
  • Добавлены выходные свойства RandR _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID и SignalFormat. Смотрите README для деталей об этих свойствах.
  • Расширенная поддержка Base Mosaic для всех конфигураций G80 + SLI до трех дисплеев.
  • Исправлена ​​ошибка, из-за которой некоторые мониторы не могли выходить из режима приостановки DPMS, когда несколько мониторов DisplayPort были подключены к одному графическому процессору.
  • Удалены элементы управления для атрибутов XVideo со страницы «Настройки X Server XVideo» панели управления nvidia-settings. Атрибуты XVideo можно настроить в приложениях проигрывателя XVideo или с помощью таких утилит, как xvattr.
  • Исправлена ​​ошибка, из-за которой все порты адаптера XVideo совместно использовали настройки коррекции цвета.
  • Удалена поддержка следующих параметров конфигурации X:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    Аналогичное управление доступно через опции конфигурации NVIDIA HorizSync и VertRefresh X. Пожалуйста, смотрите драйвер NVIDIA README для подробностей.
  • Исправлена ​​ошибка, из-за которой NVIDIA 3D Vision Pro не работала должным образом при переключении между X-серверами на разных VT.
  • Добавлена ​​поддержка панорамирования рабочего стола, когда вращение, отражение или преобразование применяются к устройству отображения (либо через RandR, либо через синтаксис MetaMode); панорамирование ранее было бы проигнорировано в этом случае.

  • источник
    Серьезно, вы должны попробовать новые драйверы, наконец-то получить производительность почти такую ​​же, как в Windows ...
    Я обычно не любят использовать что - нибудь , что все еще находится в стадии бета - тестирования на моей рабочей системе очень много. При этом я могу утверждать, что последние бета-версии драйверов исправили довольно много проблем, которые у меня возникали при использовании точных проприетарных драйверов nvidia 12.04 по умолчанию. Как будто все изменилось: так называемые «стабильные» драйверы были для меня как бета-тестирование, обновленные драйверы были еще хуже (например, нет пробуждения от приостановки), а последние бета-драйверы (304.30) работают безупречно, поэтому далеко. +1 от меня за этот полезный и продуманный ответ! Большое спасибо!
    FuzzyQ
    Драйверы 304.30 наконец-то позволили моей системе приблизиться к уровню производительности Windows XP и Windows 7 Nvidia. С Nvidia как в Windows, так и в Linux вам нужно всегда оставаться на переднем крае и всегда получать драйверы напрямую от них для лучшего опыта ... рад, что это исправили для вас ...
    1

    РЕДАКТИРОВАТЬ: X теперь блокируется через xscreensaver

    Привет! попробуйте это, у меня есть отличные результаты, используя его, в основном для игр! Поскольку Unity им не управляет, у вас тоже могут быть отличные результаты!

    Я создал этот скрипт, который создает новый сеанс X и запускает команду или открывает терминал, чтобы вы могли запустить его там.

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

    также добавьте это в: менеджер настроек конфигурации compiz -> правила окна -> не закрываемые окна:

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

    Это не позволит вам закрыть этот терминал (используйте ctrl + c, чтобы закрыть другой сеанс X, а также терминал), потому что если вы закроете «окно», это замораживает ваш текущий сеанс X!

    Преимущество состоит в том, что у вас нет alt + ввода проблем с полноэкранным режимом, также нет проблем с полноэкранным режимом Alt + TAB; Вы можете работать с большей стабильностью в любой 3D игре, от Urban Terror (родной для Linux) до игр, запускаемых с Wine! Даже некоторые браузеры, которые запускают 3D-игры, такие как Firefox с Quake!

    Obs .: вы можете захотеть установить пакет jwm, но не обязательно, но это изменит ситуацию, если вам нужно будет там управлять окнами.

    PS: это может быть улучшено, конечно, я планирую добавить настройку клавиатуры в опцию, но я делаю это очень медленно;), если кто-то улучшит / очистит ее, напишите, чтобы я мог обновить мой скрипт :)

    Водолей Сила
    источник
    0

    При использовании Unity 3D у вас есть много 3D-эффектов и тому подобное? (куб, анимация рабочего стола, эффекты меню и т. д.) Они могут снизить производительность даже на хорошем компьютере.

    Возможно, стоит проверить ваши настройки nvidia, просто найдите «nvidia» в тире, и вы найдете его. Я знаю, что мне пришлось немного подправить настройки NVIDIA, прежде чем я не получил никакой задержки.

    Проверьте свои настройки игры, немного измените их и посмотрите, насколько сильно меняется ваш fps.

    Не забудьте взять последние обновления для Ubuntu, это иногда может решить проблемы, хотя в вашем случае я не ожидаю, что это поможет.

    nisshh
    источник
    Спасибо за ваш ответ. Я не изменил никаких настроек compiz в этой установке (я даже не установил ccsm), поэтому все, что у меня есть, это стандартная Unity 3D, которую вы получаете после новой установки. Нет кубов, нет горящих окон, ничего. О моих игровых настройках: я знаю, что все работало гладко в Ubuntu 11.10 (и старше) в Heroes of Newerth с точно такими же настройками, как сейчас. Моя цель - добиться этого снова. Как вы уже предполагали, у меня уже установлены все последние обновления для Ubuntu (из официальных репозиториев; другие ppas не добавлены).
    Донг
    Что именно я могу изменить в настройках nvidia? Я не вижу, что я мог бы изменить, чтобы улучшить производительность.
    дон
    Есть настройки для vsync, AA и AF и других вещей, также есть ползунок производительности графики под одной из областей настроек, возможно, стоит посмотреть на это @dong
    nisshh