UT2004 optimalizáció / Nvidia AGP

 ( Nerdman | 2008. február 22., péntek - 11:26 )

Meglehetősen elvetemült dolog Linux-on komolyabb játékot futtatni, különösen gyenge konfiguráción (Celeron 1300Mhz, 384Mb SD-133 RAM, Gainward Geforce 3 Ti/450 64Mb (gyárilag tuningolt Ti 200)), de azért érdekes dolgokra derülhet fény közben.

A telepítéssel nem volt gond, az Arch Linux-os PKGBUILD-ot ugyan nem tudtam felhasználni, helyette a Loki installert használtam, gond nélkül feltelepült a megadott /usr/local/games/ut2004 könyvtárba.

Indításnál az első gond az volt, hogy nem volt hang, foglaltnak jelezte a hangeszközt, a megoldás a killall esd volt, úgy tűnik összeakadnak. (mini-update: Van 'esdctl off' a kikapcsolásra és 'esdctl on' az esd bekapcsolására - köszönet rlblaster-nek a tipphez)

A beállításoknál levettem LOW-ra mindent, a felbontást pedig 1280x1024-re (Az monitorom natív felbontása). Pálya betölt, lassú, elképesztően lassú, átlagosan 10-20 fps. Összehasonlításképpen Windows-on NORMAL beállítások mellett 40-60 fps körül teljesen játszható, még a nagyobb, összetettebb pályákon is.

Közben eszembe jutott, hogy a játékhoz adtak ki patch-et, feltettem, méghozzá a megapack-el együtt (plussz pályák, járművek, karakterek). Ugyanazokkal a beállításokkal kisebb pályákon játszhatónak bizonyult (20-40 fps), nagyobb pályákon továbbra is játszhatatlan.

Ezen a ponton elkezdtem keresni, hogy mi lehet a probléma oka.

cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 AGPGART
AGP Rate: 	 0x
Fast Writes: 	 Disabled
SBA: 		 Disabled

cat /proc/driver/nvidia/agp/card
Fast Writes: 	 Supported
SBA: 		 Supported
AGP Rates: 	 4x 2x 1x 
Registers: 	 0x1f000203:0x1f000300

cat/proc/driver/nvidia/agp/host-bridge
Host Bridge: 	 PCI device 1106:0691
Fast Writes: 	 Supported
SBA: 		 Supported
AGP Rates: 	 4x 2x 1x 
Registers: 	 0x1f000213:0x00000300

Elősször is az AGP Rate: 0x, ami nem jelent jót, benéztem BIOS-ba, az alaplap és a videókártya egyaránt támogatják a 4x AGP-t, az 4x AGP Mode BIOS-ban Enabled-re van állítva, a Fast Writes Disabled-re. De akkor miért nem működik?

Rendben, gondoltam, ez nincs rendesen beállítva. Hozzáadtam a Xorg.conf-hoz az Option "AGPMode" "4" értéket, a modeprobe.conf-hoz az alias char-major 195 nvidia és az option nvidia NVreg_EnableAGPSBA = 1 sorokat. Újraindítás után az eredmény változatlan, ugyanúgy 0x AGP, és disabled SBA, meg FW.

Sokadik próbálkozás után letiltottam a BIOS-ban a 4x AGP módot, és engedélyeztem a Fast Writes-t, Xorg.conf-hoz hozzáadtam: Option AGPMode "2". Nem találjátok ki mi történt, íme:

cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 AGPGART
AGP Rate: 	 2x
Fast Writes: 	 Disabled
SBA: 		 Enabled

cat /proc/driver/nvidia/agp/card
Fast Writes: 	 Not Supported
SBA: 		 Supported
AGP Rates: 	 2x 1x 
Registers: 	 0x1f000203:0x1f000300

cat/proc/driver/nvidia/agp/host-bridge
Host Bridge: 	 PCI device 1106:0691
Fast Writes: 	 Supported
SBA: 		 Supported
AGP Rates: 	 2x 1x 
Registers: 	 0x1f000213:0x00000300

Úgy tűnik hiába támogatja mind az alaplap, mind a videókártya a 4x AGP-t, az nem működik, tehát marad a 2x AGP, ellenben mikor engedélyeztem a Fast Writes-ot BIOS-ban, akkor meglepő módon a videókártya kezdte nem támogatni, és modprobe.conf szerkesztése után sem sikerült semmilyen módon engedélyezni, az SBA-t viszont igen.

A kérdés, hogy gyakorolt-e mindez hatást a játék teljesítményére, meglepő módon határozott igen, NORMAL beállítások mellett 40-60 fps-el játszhatónak bizonyult nagyobb pályákon is, de ami a legérdekesebb, hogy -nosound paraméterrel indítva a játékot a sebesség drasztikusan növekszik. Így adódott egy másik tweak lehetőség, hogy valamiképpen a játék System könyvtárában található libSDL.so és libOpenal.so fájlokat az optimalizált változatukkal helyettesítsem.

A végére sikerült egész játszhatóvá tenni a játékot, a kezdeti LOW melletti 10-20fps-ről eljutottunk a NORMAL melletti használható állapotig. További előny, hogy az OpenArena is sokkal fürgébb lett ULTRA HIGH (High + extra effektek) beállítások mellett. Meg a felismerés, hogy mégse lassabbak Linux-on a játékok sokkal, csak nehezebb megfelelően konfigurálni a rendszert.

UPDATE:

cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 AGPGART
AGP Rate: 	 4x
Fast Writes: 	 Disabled
SBA: 		 Enabled

BIOS-ban visszaállítottam a 4x AGP Mode-ot Enabled-re, a Xorg.conf-ban beállítottam az Option "AGPMode" "4" értéket, a modeprobe.conf-hoz pedig hozzáadtam a következőt az előzőeken felül: NVreg_EnableVia4x = 1

Egyébként az EnableVia4x leírása szerint:
We've had problems with some Via chipsets in 4x mode, we need force
* them back down to 2x mode. If you'd like to experiment with retaining
* 4x mode, you may try setting this value to 1 If that hangs the system,
* you're stuck with 2x mode; there's nothing we can do about it.

dmesg kimenet

agpgart: Detected VIA Apollo Pro 133 chipset
agpgart: AGP aperture is 64M @ 0xe0000000
NVRM: loading NVIDIA Linux x86 Kernel Module  96.43.05
agpgart: Found an AGP 2.0 compliant device at 0000:00:00.0.
agpgart: Putting AGP V2 device at 0000:00:00.0 into 4x mode

És ha minden igaz, akkor ez volt a megoldás az AGP problémára, a kérdés, hogy mennyire lesz ez így stabil, és hogy jelent-e bárminemű teljesítménynövekedést.

UPDATE2:

The (un)OFFICIAL Better Performance and Gameplay Guide for UT2004

A fenti részben hivatalos útmutató segítségével sikerült tovább növelni az UT2004 sebességét.
Az AGP 2x és az AGP 4x között pedig nincs komolyabban észlelhető teljesítménybeli változás UT2004 alatt.

A zene kikapcsolására nem találtam menüpontot a játékban, csak az elnémítására, a Music könyvtár törlése után viszont javul a teljesítmény, mivel nem kell az OGG fájlok lejátszásával foglalkoznia.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Eloszor is: az FW meg a SBA sok kulonbseget nem fog csinalni, sot (foleg az SBA) meg instabilla is teheti a dolgokat (ezt persze en meg sosem tapasztaltam, de hallottam mar ilyet, sot az nvidia is ezt mondja). FW-nek meg windows alatt meg csak-csak van hatasa, de linux alatt szinte semmi.

Masodszor, az AGP dolog mar aggasztobb, 2x->4x kozott azert van rendesen kulonbseg. Elsokorben a kernel-beli AGPGART-ot kapcsolnam ki teljesen es az NvAgp "1"-re allitasaval az nvidia driverbelit hasznalnam.

Intermezzo: most nezem az nvidia readme-t ezt talan aktualis lehet nalad:

VIA KX133 and 694X Chip sets with AGP 2x

    On Athlon motherboards with the VIA KX133 or 694X chip set, such as the
    ASUS K7V motherboard, NVIDIA drivers default to AGP 2x mode to work around
    insufficient drive strength on one of the signals.

Fast Writes: NVreg_EnableAGPFW=1 opcioval tudod engedelyezni, ugyanott ahol az SBA-t amugy.

A README-hez visszaterve, ha atolvasgatod, kulonos figyelemmel az AGP-s es SBA,FW reszekre lathatod (ha jol emlekszem :D), hogy annak ellenere is elkepzelheto, hogy nemhasznalja ezeket majd a driver, hogy te bekapcsoltad.

Az alaplap Acorp 694TA (Via Apollo Pro 133T chipset).

Teljes katasztrófa amúgy, nem csak az AGP-vel vannak gondjai, de a meghajtóknál az UDMA-val is, ha egy IDE csatornára két eszközt teszek, akkor nem lehet használni az Ultra DMA-t (nem a 80 eres szalagkábelekkel van a gond, ellenőriztem). Az elsődleges IDE csatornán legfeljebb UDMA-66 működik, és csak a másodlagoson használható az UDMA-100.

És a legjobb, hogy mind Debian (4.0r1), mind Ubuntu (7.10) alatt ismeretlen okokból az optikai meghajtó (CD/DVD író) UDMA módról folyton PIO módra vált, ami nagyságrendekkel lassabb, és értelemszerűen rendesen leterheli a processzort, egyszóval használhatatlan, hdparm segédprogrammal kell manuálisan visszaállítgatni. Más diszribúciók alatt ez a probléma nem jelentkezik.

A másik rejtély a hálózati kártyával (Realtek RTL8139D, 8139too kernel modullal) kapcsolatos, a probléma kizárólag Arch Linux alatt jelentkezik. Network daemon-al a net lassú, és párhuzamos letöltés/feltöltés közben akad (körülbelül 2 perc, meg ifconfig eth0 down/up mire helyreáll), torrent használhatatlan, szerencsére ezt a problémát sikerült kiküszöbölni úgy, hogy a dhcpd, networkmanager daemonokat használom a network helyett.

Visszatérve az alaplapra, igen ez egy ilyen jó alaplap, majd megy a kukába jól, addig is működik, az AGP 4x-et meg nem valószínű, hogy ki tudom harcolni belőle, de annyira nem is kell, gyakorlatilag csak és kizárólag az UT2004 miatt kellettek ezek a beállítások, de azt már unom, mint általában Windows-on a játékok nagy többségét, kivéve a kedvenceimet, Freelancer, Baldur's Gate 1-2, Neverwinter Nights, Starcraft, Red Alert 1-2, Age of Mythology, Rise of Nations.. meg ami még nem jut eszembe, de ezeknek nem kell AGP 4x, sőt két kivétellel AGP-s 3D-s kártya sem, de a kivételeknek is csak ilyen TNT2 szintű. Ezeket majd megpróbálom Wine alatt beindítani (az NWN-t kivéve, annak van natív kliense, a Baldur's Gate 1 a BG2 motorjával meg már Windows alatt sem megy rendesen nem támogatott felbontásokon).
_______________________________________________
Keep It Arch Linux | Simple Xfce | Stupid! Fluxbox

Nálam ez a szitu, bár gondolom ez nem segít rajtad:
cat /proc/driver/nvidia/cards/0
Model: GeForce 7900 GS
IRQ: 22
Video BIOS: 05.71.22.41.00
Card Type: PCI-E
DMA Size: 39 bits
DMA Mask: 0x7fffffffff
Bus Location: 03.00.0

cat /proc/driver/nvidia/registry
EnableVia4x: 0
EnableALiAGP: 0
NvAGP: 3
ReqAGPRate: 15
EnableAGPSBA: 0
EnableAGPFW: 0
Mobile: 4294967295
ResmanDebugLevel: 4294967295
RmLogonRC: 1
ModifyDeviceFiles: 1
DeviceFileUID: 0
DeviceFileGID: 0
DeviceFileMode: 438
RemapLimit: 0
UseCPA: 4294967295
UseVBios: 1
RMEdgeIntrCheck: 1

cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86 Kernel Module 169.09 Fri Jan 11 14:38:28 PST 2008
GCC version: gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)

KAMI
--
OxygenOffice | OpenOffice.org | Az internet svájci bicskája | A Böngésző - magyarul

Azon gondolkozok, hogy mit jelenthet az a EnableVia4x: 0. Lehet, hogy köze van a Via chipset-es alaplapok 4x AGP Rate-jéhez?

Mindenesetre ha már most úgyis fent van az UT2004, akkor megpróbálkozom még azzal, hogy AGPGART helyett az nvAGP-t állítom be, és megnézem ezt az EnableVia4x dolgot.
_______________________________________________
Keep It Arch Linux | Simple Xfce | Stupid! Fluxbox

Az nvAGP nem működött, maradt az AGPGART, ellenben:

cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 AGPGART
AGP Rate: 	 4x
Fast Writes: 	 Disabled
SBA: 		 Enabled

BIOS-ban visszaállítottam a 4x AGP Mode-ot Enabled-re, a Xorg.conf-ban beálítottam az Option "AGPMode" "4" értéket, a modeprobe.conf-hoz pedig hozzáadtam a következőt: NVreg_EnableVia4x = 1.

Egyébként az EnableVia4x leírása szerint:
We've had problems with some Via chipsets in 4x mode, we need force
* them back down to 2x mode. If you'd like to experiment with retaining
* 4x mode, you may try setting this value to 1 If that hangs the system,
* you're stuck with 2x mode; there's nothing we can do about it.

És ha minden igaz, akkor ez volt a megoldás.
_______________________________________________
Keep It Arch Linux | Simple Xfce | Stupid! Fluxbox

UT2004 alatt nem történt változás, nem lett gyorsabb, egyébként valószínűleg processzorlimites, szóval ennél nem is lesz gyorsabb, mégha egy gyorsabb, modernebb videókártyát teszek a gépbe akkor sem. Megpróbálkozhatok a processzor tuningolásával, vagy a -nosound kapcsolóval, ha azt akarom, hogy gyorsabb legyen.

Ami meglepő, az OpenArena számottevően és jól láthatóan gyorsabb lett (Ultra High + effektek beállítások mellett).

Ami még meglepőbb, a Planet Penguin Racer (Tuxracer) használhatatlanul lassú lett (3-5 fps minden felbontáson és beállítás mellett), nem tudom, hogy ez az SBA, vagy az AGP 4x miatt van, de ez elég elkeserítő, mert az 5 éves kishugom szomorú lesz, ha nem tud játszani vele. Szóval ez egy újabb megoldandó probléma.
_______________________________________________
Keep It Arch Linux | Simple Xfce | Stupid! Fluxbox

De amúgy izgalmas a téma, született már a videokártya tweak Linux alatt témában cikk mostanság?

KAMI
--
OxygenOffice | OpenOffice.org | Az internet svájci bicskája | A Böngésző - magyarul

Nemnagyon van mit szerintem. Ugye ott a coolbits, a maradek dolog meg xorg.conf-beli.

Idézet:
killall esd

Van 'esdctl off' a kikapcsolásra és 'esdctl on' az esd bekapcsolására.

Köszi ez így sokkal jobb, meg nem kell hozzá root sem, mint a killall esd-hez.
_______________________________________________
Keep It Arch Linux | Simple Xfce | Stupid! Fluxbox