Linux: Kernel Performance Tuning für ETQW
Verfasst: Di 25. Mär 2008, 16:38
Hallo zusammen,
bei dem Versuch ETQW unter Linux mit ausreichend FPS zocken zu wollen, hatte ich fast aufgegeben, obwohl ich mir es nicht erklären konnte, wo die FPS denn verloren gehen. In einem anderen Thread hier ist schonmal aufgefallen, dass bei mir vermutlich die CPU begrenzt. Erstmal das System:
ASUS A8N-SLI Delux NForce4 Board
2x1GB Corsair RAM
AUSU EN 7950 GT mit 512 MB RAM
AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
24" Monitor 1920x1200 native Auflösung
Damit kann ich unter Windows recht gut mit 1920x1200 ETQW spielen, ich hatte immer 30 FPS auch mit hohen Grafik Einstellungen, und egal, was passiert (hab unter Windows nie unlock_FPS getestet). Unter Linux hatte ich immer extreme Einbrüche bis auf 15 FPS runter, wenns online richtig zur Sache ging - und da hat auch den zweiten Monitor ausstellen (hab Twinview und Xinerama getestet, beides kostet viel FPS) nichts gebracht, die FPS waren nie über 40 (da hab ich mit unlock_FPS usw getestet) und üble Einbrüche, die das ganze unspielbar gemacht haben.
Dabei hab ich öfter top, oder andere CPU Überwachungen laufen lassen und festgestellt es ist definitiv die CPU, die mir diese üblen Einbrüche bei den FPS verschafft.
Beim ETQW Config tunen (dazu später mehr) ist mir das README.txt im etqw Ordner aufgefallen, ich darf mal zitieren:
Denke keine Distribution wird im Standard so einen Kernel ausliefern - debian auf jeden Fall nicht, bei lenny siehts im momentanen Kernel 2.6.22 auf jeden Fall so aus:
Also mal eben schnell einen neuen Kernel bauen, dazu build-essential, kernel-package und kernel-sourcen installieren, die sourcen entpacken unter /usr/src in das neue Verzeichnis wechseln und:
Da geht auch xconfig, wenn ihr euch vorher mit sux in eine xshell eingeloggt habt (kernel kompilieren mache ich immer von anfang an, also auch das configure als root).
Naja, wer das zum ersten mal sieht ist evtl etwas schockiert von der Fülle, am besten als Grundlage die alte config aus dem /boot Verzeichnis holen und nur folgende Einstellungen ändern:
General setup -->
Local version - append to kernel release - add something in here to identify the kernel and give it a different name to the previous kernel.
[ ] Optimize for size - Disable this
Processor type and features --->
Processor family - select -> choose your processor type
Preemption Model - select -> (Low Latency Desktop)
[*] Preempt The Big Kernel Lock ) - enable this (if availible)
Timer frequency - select -> (1000 HZ)
Nach dem folgendem Befehl sollte man nen kleinen Spaziergang machen (bei mir ca 30 min.)
Dann hat man zwei deb Pakete im sourcen Ordner liegen, die man entweder mit dpkg -i installiert, oder eben ein lokales Archiv baut, bei mir ist das /var/cache/localpackages. Also deb Pakete dahin kopieren, in das Verzeichnis wechseln und:
In die /etc/apt/sources.list dann folgendes Eintragen:
Nach nem apt-get update kann man das Paket dann über apt, oder aptitude installieren, und hat nen sauberen Paketmanager.
Jetzt zum ETQW config tunen. Obwohl der neue Kernel einiges bringt ist bei mir immernoch die CPU eine kleine Bremse, was ich durch ausgeglichen habe.
Die vollen Einstellungen in meiner autoexec.cfg zum tuning:
Damit klebe ich beim ein Monitor Betrieb in der xorg.conf gesetzt und einer Auflösung von 1920x1200 in etqw an den 60 FPS fest...ob auch 90 drinsitzen teste ich mal heute abend. V-Sync, Antialiasing, und ansitropische Filterung ist komplett ausgestellt, und der rest auf niedrig gestellt, aber da geht bestimmt auch noch mehr. Ohne den neuen Kernel hat alles runterstellen gar nichts gebracht!
Mit Twinview, oder Xinerama und der zweite Monitor an mit dem neuen Kernel komm ich grade mal auf konstante 30 FPS, ohne die üblen FPS Einbrüche von vorher, ohne Kernel tuning.
Zusammengefasst:
Wenns deutlich an der CPU liegt, dass ETQW zu wenig FPS hat, erstmal Kernel mit den o.g. Einstellungen neu kompilieren, danach in der autoexec.cfg die Einstellungen vornehmen und dann mal den zweiten Monitor ausmachen.
Ja mich nervt der X Neustart auch, aber von Xinerama, oder Twinview auf ein Monitor Betrieb geht nur mit X Neustart. Ich nutze dann auch direkt die Gelegenheit und logge mich in eine icewm Session ein, die zieht fast keine System Ressourcen, und mein schöner enlightenment Desktop wird nicht vom Start in den ein Monitor Betrieb versaut...der ist schön konfiguriert und kommt gar nicht damit klar nur noch einen Monitor zu haben.
Hier die Quellen:
http://www.suseforums.net/index.php?showtopic=40440
http://wiki.debianforum.de/DebianizedLinuxKernel
http://debiananwenderhandbuch.de/kernelbauen.html
http://www.lug-kr.de/wiki/DebianKernelKompilieren
http://community.enemyterritory.com/for ... php?t=2042
Viel Spass beim kompilieren, und bei Fragen immer her damit.....bei suse, oder ubuntu gibts aber nur links auf howtos, oder wikis
mfg tyler
p.s.: wie wärs mit nem city-wiki?
bei dem Versuch ETQW unter Linux mit ausreichend FPS zocken zu wollen, hatte ich fast aufgegeben, obwohl ich mir es nicht erklären konnte, wo die FPS denn verloren gehen. In einem anderen Thread hier ist schonmal aufgefallen, dass bei mir vermutlich die CPU begrenzt. Erstmal das System:
ASUS A8N-SLI Delux NForce4 Board
2x1GB Corsair RAM
AUSU EN 7950 GT mit 512 MB RAM
AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
24" Monitor 1920x1200 native Auflösung
Damit kann ich unter Windows recht gut mit 1920x1200 ETQW spielen, ich hatte immer 30 FPS auch mit hohen Grafik Einstellungen, und egal, was passiert (hab unter Windows nie unlock_FPS getestet). Unter Linux hatte ich immer extreme Einbrüche bis auf 15 FPS runter, wenns online richtig zur Sache ging - und da hat auch den zweiten Monitor ausstellen (hab Twinview und Xinerama getestet, beides kostet viel FPS) nichts gebracht, die FPS waren nie über 40 (da hab ich mit unlock_FPS usw getestet) und üble Einbrüche, die das ganze unspielbar gemacht haben.
Dabei hab ich öfter top, oder andere CPU Überwachungen laufen lassen und festgestellt es ist definitiv die CPU, die mir diese üblen Einbrüche bei den FPS verschafft.
Beim ETQW Config tunen (dazu später mehr) ist mir das README.txt im etqw Ordner aufgefallen, ich darf mal zitieren:
Hmmm - warum wird sowas nicht deutlicher bei den System Voraussetzungen für Linux Client und Server gesagt??ETQW Dedicated Server and Client for GNU/Linux x86
==================================================
Important system requirements:
------------------------------
You need a low latency kernel for optimal performance (this applies to both client and server installatio
ns). Make sure your kernel
is configured with CONFIG_HZ_1000=y. You should also enable other low latency settings, such as the vario
us preemption settings.
Denke keine Distribution wird im Standard so einen Kernel ausliefern - debian auf jeden Fall nicht, bei lenny siehts im momentanen Kernel 2.6.22 auf jeden Fall so aus:
Code: Alles auswählen
schlachtfeld:~# cat /boot/config-2.6.22-3-k7 | grep CONFIG_HZ
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
schlachtfeld:~#
Code: Alles auswählen
make-kpkg --append-to-version=.performance --revision 0.1 --config=menuconfig configure
Naja, wer das zum ersten mal sieht ist evtl etwas schockiert von der Fülle, am besten als Grundlage die alte config aus dem /boot Verzeichnis holen und nur folgende Einstellungen ändern:
General setup -->
Local version - append to kernel release - add something in here to identify the kernel and give it a different name to the previous kernel.
[ ] Optimize for size - Disable this
Processor type and features --->
Processor family - select -> choose your processor type
Preemption Model - select -> (Low Latency Desktop)
[*] Preempt The Big Kernel Lock ) - enable this (if availible)
Timer frequency - select -> (1000 HZ)
Nach dem folgendem Befehl sollte man nen kleinen Spaziergang machen (bei mir ca 30 min.)
Code: Alles auswählen
make-kpkg clean && make-kpkg --initrd --append-to-version=.performance --revision 0.1 kernel_image kernel_headers
Code: Alles auswählen
dpkg-scanpackages ./ /dev/null | gzip > Packages.gz
Code: Alles auswählen
deb file:/var/cache/localpackages ./
Jetzt zum ETQW config tunen. Obwohl der neue Kernel einiges bringt ist bei mir immernoch die CPU eine kleine Bremse, was ich durch
Code: Alles auswählen
seta com_unlock_timingMethod "1"
Die vollen Einstellungen in meiner autoexec.cfg zum tuning:
Code: Alles auswählen
seta com_unlockFPS "1"
seta com_unlock_maxfps "60"
seta com_unlock_timingMethod "1"
seta com_showFPS "1"
seta com_videoRam "512"
Mit Twinview, oder Xinerama und der zweite Monitor an mit dem neuen Kernel komm ich grade mal auf konstante 30 FPS, ohne die üblen FPS Einbrüche von vorher, ohne Kernel tuning.
Zusammengefasst:
Wenns deutlich an der CPU liegt, dass ETQW zu wenig FPS hat, erstmal Kernel mit den o.g. Einstellungen neu kompilieren, danach in der autoexec.cfg die Einstellungen vornehmen und dann mal den zweiten Monitor ausmachen.
Ja mich nervt der X Neustart auch, aber von Xinerama, oder Twinview auf ein Monitor Betrieb geht nur mit X Neustart. Ich nutze dann auch direkt die Gelegenheit und logge mich in eine icewm Session ein, die zieht fast keine System Ressourcen, und mein schöner enlightenment Desktop wird nicht vom Start in den ein Monitor Betrieb versaut...der ist schön konfiguriert und kommt gar nicht damit klar nur noch einen Monitor zu haben.
Hier die Quellen:
http://www.suseforums.net/index.php?showtopic=40440
http://wiki.debianforum.de/DebianizedLinuxKernel
http://debiananwenderhandbuch.de/kernelbauen.html
http://www.lug-kr.de/wiki/DebianKernelKompilieren
http://community.enemyterritory.com/for ... php?t=2042
Viel Spass beim kompilieren, und bei Fragen immer her damit.....bei suse, oder ubuntu gibts aber nur links auf howtos, oder wikis

mfg tyler
p.s.: wie wärs mit nem city-wiki?