Làm gì để chống lại hiệu suất trò chơi giảm trong 12.04 khi sử dụng unity (3D)?


9

Tôi gặp phải sự sụt giảm lớn về hiệu năng trò chơi kể từ khi cài đặt phiên bản Ubuntu 12.04 mới

PC của tôi bao gồm Nvidia Geforce GTX 460, CPU AMD Phenom II X4 965 và 4GB RAM và tôi sử dụng trình điều khiển độc quyền của nvidias.

Tôi chủ yếu chơi Heroes of Newerth bằng cách sử dụng máy khách linux của họ. Tôi làm điều này kể từ Ubuntu 9.10 và tôi chưa bao giờ gặp bất kỳ vấn đề nào về hiệu năng khi sử dụng trình điều khiển nvidia độc quyền. Số khung hình / giây của tôi luôn được tối đa đến giới hạn khung hình vsync là 60.

Kể từ khi tôi chạy Ubuntu 12.04, tôi nhận được khoảng 30-45 khung hình / giây và nói chung trải nghiệm trò chơi rất chậm. Tôi biết rằng có rất nhiều người gặp vấn đề với trình điều khiển nvidias 295.40, được cài đặt một cách đáng buồn theo mặc định trong ubfox 12.04. Vì vậy, tôi đã cài đặt thủ công ổn định mới nhất 295,49, beta 302,07 mới nhất và thậm chí phiên bản cũ hơn 295,33 được sử dụng trong Ubuntu 11.10 (nơi tôi chưa bao giờ gặp bất kỳ vấn đề nào về hiệu năng). Thật lãng phí thời gian vì tôi đã gặp phải vấn đề hiệu năng tương tự với cả 4 phiên bản trình điều khiển.

Khi tôi sử dụng Unity 2D, khung hình / giây của tôi đã trở lại 60 và hiệu suất trò chơi tổng thể rất tuyệt. Vì vậy, tôi chỉ gặp phải những vấn đề đó khi chạy phiên bản Unity của Ubuntu 12.04.

Tôi cũng đã cố gắng xóa các thư mục .config và .compiz-1 của mình trong thư mục chính nhưng hiệu năng trò chơi vẫn là một mớ hỗn độn khi sử dụng unity.

Tôi không biết phải thử gì tiếp theo ... Có ai biết làm thế nào tôi có thể gỡ lỗi thêm không? Có lẽ làm thế nào tôi có thể cung cấp nhiều dữ liệu hơn để phân tích vấn đề tốt hơn? Có thể thử fiddle với một số cài đặt compiz?

Hồi quy hiệu suất này thực sự gây khó chịu và tôi nghĩ rằng chỉ cần tải xuống ứng dụng khách windows của Heroes of Newerth và quay lại khởi động kép vì điều này đơn giản là không thể chấp nhận được.

Bất kỳ trợ giúp đánh giá cao.

Câu trả lời:


3

Đây không phải là một giải pháp thực sự, nhưng ít nhất nó có thể là một cách giải quyết hữu ích (hy vọng) (ngoài việc đơn giản là sử dụng Unity 2D).

Trước khi bạn bắt đầu trò chơi, hãy mở Nautilus (trình quản lý tệp) và đi đến /usr/share/application. Mở một thiết bị đầu cuối, gõ metacity --replacevà nhấn enter. Đừng hoảng sợ, giao diện Unity sẽ biến mất, nhưng đây là ý định của tôi. Khởi chạy trò chơi từ trình quản lý tệp (trình khởi chạy cho trò chơi phải nằm trong thư mục tôi đã đề cập). Sau khi bạn chơi xong trò chơi của mình, hãy nhập unity --replacevào cửa sổ terminal và nhấn enter. Máy tính để bàn của bạn bây giờ được khôi phục lại như cũ.
Điều này sẽ hoạt động vì có lẽ Unity đang chạy trong nền gây rắc rối.

Ngoài ra, tôi sẽ báo cáo đây là một lỗi. Đó chắc chắn là một cái gì đó cần phải được sửa chữa. Nếu bạn gửi báo cáo lỗi, hãy chắc chắn để lại một liên kết ở đây để những người khác đang gặp vấn đề này có thể đánh dấu nó là "ảnh hưởng đến họ", điều này sẽ được khắc phục sớm hơn.


Cảm ơn bạn đã trả lời của bạn. Tôi sẽ thử cách giải quyết này và báo cáo lại. Chắc chắn nó không đẹp nhưng ít nhất là tốt hơn so với đăng xuất và đăng nhập lại với sự thống nhất 2d mọi lúc ... Bạn có thể giúp tôi báo cáo lỗi không? Một liên kết đến một tài nguyên hoặc một cái gì đó trong đó quy trình được giải thích sẽ giúp ích rất nhiều. Cảm ơn.
đồng

Cảm ơn RobinJ cho cách giải quyết của bạn. Nó hoạt động rất tốt và tốt hơn là đăng xuất và đăng nhập lại với sự thống nhất 2d vì tôi có thể giữ phiên của mình. Tôi đã mở thư mục với trình khởi chạy trò chơi, mở một thiết bị đầu cuối, gõ metacity --replace &bắt đầu trò chơi và có hiệu suất tuyệt vời mà tôi mong đợi để có được. Khi tôi hoàn thành, tôi gõ unity --replacevà mọi thứ trở lại bình thường. Bây giờ tôi sẽ nộp một lỗi chống lại sự thống nhất và xem những gì nó mang lại.
đồng

@dong Có một hướng dẫn để báo cáo lỗi trong tài liệu Ubuntu: help.ubuntu.com/community/ReportingBugs
RobinJ

Đây không phải là lỗi Unity mỗi se, mà là lỗi Compiz. Các trò chơi chưa bao giờ chạy tốt với compiz cho tôi ...
user55822

Được rồi, hơi muộn một chút, nhưng đây là báo cáo lỗi : unity bug-998141 . Hãy chắc chắn để đánh dấu lỗi là ảnh hưởng đến bạn, nếu bạn cũng bị ảnh hưởng bởi điều này. Có lẽ nó được chú ý.
đồng

1

Bạn luôn có thể cập nhật lên trình điều khiển Nvidia Beta 304,22 và xem điều gì sẽ xảy ra. Tôi đã gặp vấn đề lớn về hiệu năng với Ubuntu 12.04 LTS và phiên bản Nvidia 295.59 và phiên bản 302,07 dường như khắc phục một số điều nhỏ. Hầu hết các vấn đề đã được giải quyết bằng cách cập nhật trình điều khiển 304,22 mới nhất. Bây giờ hiệu suất GeForce của tôi cuối cùng cũng bằng Windows XP nhưng vẫn còn một số vấn đề nhỏ từ một vài ứng dụng nhưng tình hình thực sự được cải thiện đáng kể. Bạn nên sử dụng trình điều khiển Nvidia mới nhất mọi lúc, ngay cả khi chúng ở BETA vì có vẻ như các trình điều khiển cũ hơn không được nhóm của Nvidia kiểm tra trên các bản cập nhật Kernel và Ubuntu mới hơn gây ra sự cố và sự cố không mong muốn.

Bạn có thể có được chúng http://www.geforce.com/drivers/beta-legacy

Các trình điều khiển 304,22 có hàng tấn sửa chữa quy mô lớn như:

  • Đã thêm hỗ trợ cho các GPU sau:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Nâng cao chức năng của tùy chọn Cấu hình bao gồmImImicitMetaModes:
  • MetaModes tiềm ẩn sẽ được thêm cho thiết bị hiển thị chính, ngay cả khi nhiều thiết bị hiển thị được sử dụng khi X được khởi tạo.
  • MetaModes tiềm ẩn sẽ được thêm vào cho các độ phân giải phổ biến, ngay cả khi không có chế độ có độ phân giải đó trong nhóm chế độ của thiết bị hiển thị.
  • Mở rộng cú pháp của tùy chọn cấu hình Bao gồm ứng dụng, ví dụ, để kiểm soát thiết bị hiển thị nào được
    sử dụng để tạo MetaModes ẩn.
  • Xem mô tả về
    tùy chọn cấu hình Bao gồm ứng dụng bao gồm ứng dụng bao gồm README để biết chi tiết.

  • Đã sửa đổi việc xử lý các yêu cầu RandR 1.0 / 1.1 RRGetScreenInfo và RRSetScreenConfig (ví dụ: `xrandr -q --q1` và` xrandr --size ... `và` xrandr --orientation ... `) sao cho chúng hoạt động trên Siêu dữ liệu. Đây là hành vi trong trình điều khiển NVIDIA X phiên bản 295.xx trở về trước, nhưng các bản phát hành 302.xx đã thay đổi việc xử lý các yêu cầu RandR 1.0 / 1.1 này để hoạt động trên các chế độ đầu ra của RandR.
  • Với các thay đổi ở trên để xử lý Bao gồm ứng dụng bao gồm ứng dụng bao gồm ứng dụng bao gồm ứng dụng toàn màn hình (ví dụ: ứng dụng dựa trên SDL, Wine), nên có nhiều độ phân giải hơn cho chúng và nên tương tác tốt hơn với nhiều cấu hình màn hình.
  • Đã sửa lỗi có thể khiến GPU G8x, G9x và GT2xx hiển thị màn hình đen hoặc hỏng sau khi thức dậy sau khi bị treo.
  • Đã sửa một số lỗi có thể khiến một số chương trình OpenGL bị treo khi gọi fork (3).
  • Đã sửa lỗi cài đặt nvidia khiến kết quả của các truy vấn thăm dò được thực hiện với tùy chọn --display-device-string được định dạng không chính xác.
  • Cải thiện khả năng phản hồi của các bản cập nhật cho bảng điều khiển cài đặt nvidia khi màn hình được cắm nóng.
  • Đã sửa lỗi gây ra lỗi hiển thị khi đặt một số biến đổi, đặc biệt là khi xoay màn hình được chuyển đổi.
  • Đã sửa lỗi khiến các sự kiện RandR thêm được tạo ra lần đầu tiên khi màn hình được cắm nóng.
  • Đã sửa lỗi khiến các mô hình X11 có tên '@' bị từ chối.
  • Đã thêm hỗ trợ cho các thiết bị nhánh DisplayPort 1.2, cho phép nhiều màn hình được kết nối với một đầu nối DisplayPort duy nhất trên bảng đồ họa.
  • Đã sửa lỗi khiến hầu hết các tải lên kết cấu OpenGL bị chậm khi bối cảnh bị ràng buộc hiển thị thành lớp phủ RGB có thể vẽ được.
  • Đã sửa lỗi khiến âm thanh qua HDMI không hoạt động sau khi khởi động lại máy chủ X trên một số GPU MCP7x (IGP).
  • Đã cập nhật tùy chọn cấu hình X "UseDisplayDevice" để tôn vinh giá trị "không" trên bất kỳ GPU nào.
  • Đã thêm hỗ trợ cho DKMS trong trình cài đặt nvidia. Cài đặt mô-đun hạt nhân thông qua DKMS cho phép mô-đun được xây dựng lại tự động khi thay đổi sang một nhân Linux khác. Xem văn bản trợ giúp README và trình cài đặt nvidia hoặc tùy chọn "--dkms".
  • Đã thêm các thuộc tính đầu ra RandR _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID và SignalFormat. Xem README để biết chi tiết về các tính chất này.
  • Hỗ trợ mở rộng cho Base khảm cho tất cả các cấu hình G80 + SLI với tối đa ba màn hình.
  • Đã sửa lỗi khiến một số màn hình không thể thoát khỏi chế độ treo DPMS khi nhiều màn hình DisplayPort được gắn vào một GPU.
  • Đã xóa các điều khiển cho các thuộc tính XVideo khỏi trang "Cài đặt XVideo X Server" của bảng điều khiển cài đặt nvidia. Các thuộc tính XVideo có thể được cấu hình trong các ứng dụng trình phát XVideo hoặc thông qua các tiện ích như xvattr.
  • Đã sửa lỗi khiến tất cả các cổng trên bộ điều hợp XVideo chia sẻ cài đặt sửa màu.
  • Đã xóa hỗ trợ cho các tùy chọn cấu hình X sau:
    • Thứ
      haiMonitorHorizSync Thứ haiMonitorVertRefresh
    Kiểm soát tương tự có sẵn thông qua các tùy chọn cấu hình NVIDIA HorizSync và VertRefresh X. Vui lòng xem trình điều khiển NVIDIA README để biết chi tiết.
  • Đã sửa lỗi khiến NVIDIA 3D Vision Pro không hoạt động bình thường khi chuyển đổi giữa các máy chủ X trên các VT khác nhau.
  • Đã thêm hỗ trợ cho panning máy tính để bàn khi xoay, phản xạ hoặc chuyển đổi được áp dụng cho thiết bị hiển thị (thông qua RandR hoặc thông qua cú pháp MetaMode); Panning trước đây sẽ được bỏ qua trong trường hợp đó.

  • Nghiêm túc, bạn nên thử các trình điều khiển mới, cuối cùng cũng có hiệu suất gần như trong Windows ...

    Tôi thường không thích sử dụng bất cứ điều gì đó là vẫn còn trong giai đoạn beta trên hệ thống làm việc của tôi rất nhiều. Điều đó đang được nói, tôi có thể khẳng định rằng các trình điều khiển beta mới nhất đã khắc phục khá nhiều vấn đề tôi gặp phải với trình điều khiển nvidia độc quyền chính xác 12.04 mặc định. Nó giống như toàn bộ sự việc đã quay vòng - các trình điều khiển được gọi là 'ổn định' giống như trải nghiệm beta đối với tôi, các trình điều khiển được cập nhật thậm chí còn tệ hơn (ví dụ như không bị đình chỉ) và các trình điều khiển beta mới nhất (304.30) đang hoạt động hoàn hảo xa. +1 từ tôi cho câu trả lời hữu ích và công phu này! Cảm ơn bạn rất nhiều!
    FuzzyQ

    Các trình điều khiển 304.30 cuối cùng đã đưa hệ thống của tôi ngang tầm với mức hiệu năng của Windows XP và Windows 7 Nvidia. Với Nvidia trong cả Windows và Linux, bạn cần phải luôn luôn tìm kiếm và luôn luôn lấy trình điều khiển trực tiếp từ họ để có trải nghiệm tốt nhất ... rất vui vì nó đã sửa nó cho bạn ...

    1

    EDIT: X hiện có thể khóa thông qua xscreenaver

    Chào! Hãy thử điều này, tôi đang có kết quả tuyệt vời khi sử dụng nó, chủ yếu là cho các trò chơi! Vì nó sẽ không được quản lý bởi Unity, bạn cũng có thể có kết quả tuyệt vời!

    Tôi đã tạo tập lệnh này để tạo một phiên X mới và chạy lệnh hoặc mở một thiết bị đầu cuối để bạn có thể chạy nó ở đó.

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

    đồng thời, thêm phần này tại: trình quản lý cài đặt cấu hình compiz -> quy tắc cửa sổ -> cửa sổ không thể đóng:

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

    Điều này sẽ ngăn bạn đóng thiết bị đầu cuối đó (sử dụng ctrl + c để đóng phiên X khác và cũng là thiết bị đầu cuối), vì nếu bạn đóng "cửa sổ", nó sẽ đóng băng phiên X hiện tại của bạn!

    Nó có lợi thế là bạn không gặp vấn đề alt + nhập toàn màn hình, cũng không có vấn đề toàn màn hình Alt + TAB; bạn có thể chạy ổn định hơn bất kỳ trò chơi 3D nào, từ Urban Terror (linux bản địa) đến các trò chơi chạy với Wine! Thậm chí một số trình duyệt chạy các trò chơi 3D như Firefox với Quake!

    Quan sát: bạn có thể muốn cài đặt gói jwm, không bắt buộc nhưng sẽ tạo sự khác biệt nếu bạn cần thực hiện bất kỳ quản lý cửa sổ nào ở đó ..

    PS.: Tất nhiên nó có thể được cải thiện, kế hoạch của tôi là thêm thiết lập bàn phím vào một tùy chọn, nhưng tôi làm rất chậm;), nếu ai đó cải thiện / dọn dẹp, hãy đăng để tôi có thể cập nhật tập lệnh của tôi :)


    0

    Khi sử dụng Unity 3D, bạn có nhiều hiệu ứng 3D và tương tự được bật không? (khối lập phương, hình động trên máy tính để bàn, hiệu ứng menu, v.v.) Những thứ này có thể làm giảm hiệu suất, ngay cả trên một máy tốt.

    Có thể đáng để kiểm tra cài đặt nvidia của bạn, chỉ cần tìm kiếm 'nvidia' trong dấu gạch ngang và bạn sẽ tìm thấy nó. Tôi biết tôi đã phải điều chỉnh các cài đặt nvidia một chút trước khi tôi không nhận được bất kỳ độ trễ nào.

    Kiểm tra cài đặt trò chơi của bạn, thay đổi chúng xung quanh một chút và xem số khung hình / giây của bạn thay đổi.

    Hãy chắc chắn lấy các bản cập nhật mới nhất cho Ubuntu, điều này đôi khi có thể giải quyết các vấn đề, mặc dù trong trường hợp của bạn, tôi không hy vọng nó sẽ giúp ích.


    Cảm ơn bạn đã trả lời của bạn. Tôi không thay đổi bất kỳ cài đặt compiz nào trong cài đặt này (tôi thậm chí chưa cài đặt ccsm) vì vậy mọi thứ về thiết lập của tôi đều là Unity 3D mà bạn nhận được sau khi cài đặt mới. Không có hình khối, không có cửa sổ đang cháy, không có gì. Về cài đặt ingame của tôi: Tôi biết rằng mọi thứ đều hoạt động trơn tru trong Ubuntu 11.10 (và cũ hơn) trong Heroes of Newerth với chính xác các cài đặt tôi có hiện tại. Mục tiêu của tôi là đạt được điều này một lần nữa. Như bạn đã tưởng tượng, tôi đã cài đặt tất cả các bản cập nhật mới nhất cho ubfox (từ kho chính thức; không có ppas nào khác được thêm vào).
    đồng

    Chính xác thì tôi có thể thay đổi gì trong cài đặt nvidia? Tôi không thấy những gì tôi có thể thay đổi để cải thiện hiệu suất.
    đồng

    Có các cài đặt cho vsync, AA và AF và nhiều thứ khác, cũng có một thanh trượt hiệu suất đồ họa trong một trong các khu vực cài đặt, có thể đáng để xem tại đó @dong
    nisshh
    Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
    Licensed under cc by-sa 3.0 with attribution required.