# FAQ Tips > Hier Suchen und Finden, Links, Tutorials >  [Tutorial] Angepasstes AMD/ATI 3D Low-Latency Desktopsystem

## solarseed

-- AMD/ATI 3D Low Latency Desktop Tutorial --


Ich werde hier so ausführlich, als auch so verständlich wie möglich beschreiben,

wie man einen Linuxkernel auf ein bestimmtes System anpasst.

- In diesem Beispiel ein Desktop- und Spielesystem von AMD!


Als OS dient in diesem Beispiel ein Debian "Squeeze" 6.0.6 amd64 (x86_64)


Folgendes PC-System steht zur Anpassung bereit:

Kernelement: AMD Athlon II X4 605e CPU @ 2300Mhz 45nm (4 Kerne) [TDP-45W]

Arbeitsspeicher: 16GB (4 x 4 Riegel) DDR3 1066Mhz Kingston Value RAM CL7

Mainboard: MSI 770-C45 (Sockel AM3)

Graphikkarte: Sapphire 'Radeon HD 7850' mit 2GB GDDR5 RAM und 256-Bit Speicherinterface [TDP-130W]

Soundkarte: Club 3D 'Theatron DD'

Netzteil: Enermax Liberty ECO 500W [Modular]

Laufwerke: 2 x 640GB Western Digital 5200UPM "Green" HDD, 2 x 1,5TB Western Digital 5200UPM "Green" HDD, LG Blu-Ray Dual Layer Brenner, TEAC BD-XL Brenner

- Wir wollen also einen auf dieses System optimierten Linuxkernel bauen.

-- Als auch die entsprechenden ATI/AMD 3D Treiber installieren... (Proprietäre Software)

~

Der erste Schritt besteht darin, auf der AMD Homepage die richtigen Treiber für unsere Hardware und unser Betriebssystem auszuwählen...

AMD Support and Drivers

Wir wählen nun in unserem Internetbrowser unter einem GNOME/KDE-Desktop auf 'http://www.amd.com' den Hauptmenüpunkt 'Support & Drivers'. Und switchen unter dem 'Download Drivers' - Menüpunkt - 'Component Category' auf -> "Desktop Graphics". Im nächsten Schritt, dem Menüpunkt 'Poduct Line' wählen wir -> "Radeon HD Series". Im darauf folgenden Schritt wählen wir unter 'Product Model' -> "Radeon HD 7xxx Series PCIe" und schliesslich im Menüpunkt 'Operating System' -> "Linux x86_64".

- Wir bestätigen unsere Auswahl mit 'View Results'!

Auf der Seite die dann lädt, wird uns der passende Catalyst Treiber (zum 22.10.2012 ist dies die Version 12.10) zu unserem Produkt - inklusive Release Notes - zum Download angeboten.

Wir laden beides herunter - Treiber und Release Notes!


~

Nun öffnen wir die Release Notes (PDF-Datei) und auch schonmal ein (xterm-)Terminal mit Superuser-Rechten. (ALT+F2 -> 'xterm'-aufrufen -> 'su -l' gefolgt von ENTER in xterm eingeben -> Root Password eingeben -> nun ist das root Terminal offen...)


Wenn wir in den Release Notes ein bisschen runterscrollen, sehen wir zwei für die Installation des Treibers relevante Punkte:

- Nämlich unter 'Minimum System Requirements' eine Auflistung von Linux Programmpaketen die mindestens für die Installation des ATI 3D Treibers erforderlich sind..

-- Als auch unter 'System Recommendations' eine Auflistung zusätzlich (zum optimalen Betrieb) empfohlener Linux Programmpakete..

Da wir ja ein Root-Terminal parallel zur Dokumentation geöffnet haben, können wir direkt mit 'aptitude' die erforderlichen Pakete installieren.

('aptitude install "Durch Leerzeichen getrennte Paketnamen"')

Allerdings kann es sein, dass die vom ATI 3D Treiber gewünschten Pakete in den unterschiedlichen Linux-Distributionen auch unterschiedliche Paketnamen haben...

- Wir verwenden ein Debian "Squeeze" und installieren folgende Pakete mit Aptitude:

xorg-dev, glibc-2.11-1, libstdc++-dev, libgcc1, fontconfig, libfreetype6-dev, zlib1g-dev, gcc, make, kernel-package, libncurses5-dev (Die letzten zwei Pakete [kernel-package und libncurses5-dev] installieren wir schonmal für die folgende Kompilierung des Linuxkernels.

Und wo wir gerade schon bei der Vorbereitung zum selbstgebauten Linuxkernel sind, können wir auch gleich noch das Paket 'linux-headers-2.6-amd64' installieren...)

---> Unser Konsolenkommando zur Vorbereitung des gesamten Systems; - als Superuser - auf die Catalyst-Treiber mit angepasstem Linuxkernel sieht also zusammengefasst so aus:

'aptitude install xorg-dev glibc-2.11-1 libstdc++-dev libgcc1 fontconfig libfreetype6-dev zlib1g-dev gcc make kernel-package libncurses5-dev linux-headers-2.6-amd64'

--> Damit haben wir schon alles an Paketen installiert, was wir brauchen!!

~

Nun laden wir einen aktuellen 'Stable'-Linuxkernel von http://kernel.org

- Am besten wählen wir einen Nicht-Entwickler-Kernel mit gerader Versionsnummer (3.4, 3.6...)

Nach dem Download des ATI Catalyst und des Kernels, befinden sich diese Standardmäßig im Verzeichnis /home/'benutzername'/Downloads.

-- Wir wechseln mit dem Befehl 'cd /home/'benutzername'/Downloads' in das Verzeichnis mit dem frisch heruntergeladenen Linuxkernel als auch den AMD Catalyst Treibern... (nach wie vor sollten wir in dem Superuser-Terminal sein..)

- Nun kopieren wir mit dem Befehl 'cp "amd-driver-installer-catalyst-versionsnummer.zip" "linuxkernelarchiv-versionsnummer.tar.bz2" /usr/src' die beiden Dateien in unser statisches Systemverzeichnis.

Wenn wir nach dem Kopiervorgang mit 'cd /usr/src/' in das Verzeichnis wechseln und 'ls -l' aufrufen, sehen wir auch gleich schon, dass der Dateibesitzer der beiden Dateien durch den 'cp'-Befehl automatisch in 'root' verändert wurde...

- Dateibesitzer des Catalyst Treiberarchivs, als auch des Linux-Kernelarchivs in /usr/src/ ist jetzt also "root" der Superuser -


~

Jetzt wechseln wir mit 'cd /usr/src' in unser Buildverzeichnis und geht es an das Entpacken des Linux-Kernelarchivs.

Mit folgendem Kommando ist das schnell erledigt:

Befehl: 'tar xvfj linux-3.4.17.tar.bz2'

- Das Entpacken dauert je nach Systemleistung einige Sekunden bis Minuten -

Nach dem Entpacken des Kerneltarballs finden wir in '/usr/src/' das Verzeichnis "./linux-3.4.17".

- Auf dieses wird jetzt mit dem Befehl 'ln -s linux-3.4.17 linux-3.4.17build' ein symbolischer Link erstellt...

Nun wechseln wir mit dem Befehl 'cd ./linux-3.4.17build' aus dem Verzeichnis '/usr/src' in das symbolisch verlinkte Verzeichnis.

- Dann geben wir dort den Befehl 'make menuconfig' ein...

-- Und wir sind nach ein paar Sekunden im Kernelkonfigurationsmenü --

Nun geben wir in der Rubrik 'General Setup' unter "Local Version - append to kernel release" etwas einzigartiges (z.B. unseren Benutzernamen gefolgt von einer Zahl, in meinem Fall "solarseed1") ein.

Dann setzen wir das Sternchen bei 'Automatically append version information to the version String'.

So erkennen wir unseren Kernel immer wieder.

(Benutzername gefolgt von Zahl / Version des jeweiligen Konfigurationsvorgangs des Kernels...)

Nun kommen wir nach einem 'Exit', - zurück im Hauptmenü der Kernelkonfiguration - zu der für die Systemoptimierung wirklich sehr relevanten Passage:

'Processor Type and Features' (Der 4. Menüpunkt von oben...)

Dort nehmen wir folgende Einstellungen vor:

1. Da wir einen AMD 605e Processor haben, wählen wir im Menüpunkt 'Processor Family' -> "Opteron/Athlon64/Hammer/K8"

2. Wir wollen ein schnelles Desktopsystem, also wählen wir im ebenfalls vorhandenen Menüpunkt 'Preemption Model' -> "Preemptible Kernel (Low-Latency Desktop)"

3. Nun schliesslich wählen wir im Menüpunkt 'Timer Frequency' -> "1000HZ"

- Damit sind die wichtigsten Performancetweaks auch schon erledigt!

(4. [Optional]) Zur Härtung des Kernels, können wir unter 'kexec system call' noch das Sternchen entfernen... (Siehe Technical Review 10/2008 "Security" - Linux Magazin)

(5. [Optional]) Hyperthreading Sheduler deaktivieren (Der AMD 605e unterstützt kein Hyperthreading)...

[Da ich oft Probleme mit der Soundwiedergabe hatte, wenn neben meiner Soundkarte auch noch der HDMI-Sound meiner Grafikkarte aktiv war, kann man unter dem Kernelkonfigurationshauptmenüpunkt 'Device Drivers'-> "Soundcard Support" -> "Advanced Linux Soundarchitecture" auch noch das Intel-HD HDMI Soundsystem deaktivieren; oder gleich alle Treibermodule die nicht der verbauten Soundkarte entsprechen aus dem Kernel werfen... Ich bevorzuge letzteres!]

[[Wenn man ungefähr weiß, wie der auf der Soundkarte verbaute Soundchip heisst, kann man (wie in meinem Fall) mit dem Befehl 'lspci -vvv | grep C-Media' schnell herausfinden, welches Kernelmodul für den Betrieb der jeweiligen Soundkarte nötig ist. (Alternativ bei einer PCI-Soundkarte geht auch 'lspci -vvv | grep PCI') - Und dieses dann in der Kernelkonfiguration zur Installation auswählen, während man alle anderen Module deaktiviert.]]

Wenn wir nun wieder in das Hauptmenü der Kernelkonfiguration wechseln und diese mit 'Exit' verlassen, fragt uns menuconfig, ob wir die Kernelkonfiguration speichern wollen.

- Dies bestätigen wir durch einen Druck auf "Yes" (Enter-Taste).

Nun können wir (wir befinden uns nach wie vor im absoluten Pfad (oder: symbolisch verlinktem Verzeichnis) -> '/usr/src/linux-3.4.17build/') die Kompilierung des Kernels und das Erstellen der Kernelquellenpakete mit dem Befehl:

'make-kpkg kernel_image kernel_source --initrd' 
starten...

Das Kompilieren der Kernelpakete (Kernel Image und Kernel Source) kann je nach System mehrere Minuten bis Stunden dauern.

~

Wenn das Kompilieren des Kernels beendet ist, ist es an der Zeit das Kernel-Image als auch die Kernel-Sources mit 'dpkg' zu Installieren.

Wir wechseln nun aus dem symbolisch verlinkten Verzeichnis '/usr/src/linux-3.4.17build' mit dem Befehl 'cd ../' in das darüber gelegene Verzeichnis '/usr/src/'.

- Rufen wir nun mit dem Kommando 'ls -l' den Verzeichnisinhalt von '/usr/src' auf, sollten wir dort zwei neue Dateien finden, nämlich:

1. linux-image-3.4.17solarseed1_3.4.17solarseed1-10.00.Custom_amd64.deb 
(Debian Programmpaket mit unserem neuen Kernel-Image)

2. linux-source-3.4.17solarseed1_3.4.17solarseed1-10.00.Custom_all.deb 
(Debian Programmpaket mit unseren Kernel-Quellen)

Diese Dateien installieren wir nun mit dem Befehl 'dpkg -i "Paket-Dateiname".deb', also folgendermaßen:...


1. Neuen Kernel installieren:

Befehl: 'dpkg -i linux-image-3.4.17solarseed1_3.4.17solarseed1-10.00.Custom_amd64.deb'
[--> Ist dpkg durchgelaufen aktualisieren wir mit dem Befehl 'ldconfig -v' den Linker-Cache.]


2. Kernel-Quellen installieren:

Befehl: 'dpkg -i linux-source-3.4.17solarseed1_3.4.17solarseed1-10.00.Custom_all.deb'
[--> Ist dpkg durchglaufen aktualisieren wir erneut den Linker-Cache mit dem Aufruf von 'ldconfig -v'.]


Nun sind alle wichtigen Pakete unseres selbstgebauten Linuxkernels installiert (als auch das Kernel-Image im GRUB-Bootloader eingetragen) und wir können mit dem Befehl 'reboot' unser System neu Starten...

Wenn unser System jetzt bootet, wählen wir im GRUB-Bootloader den "Recovery Mode" unseres selbst gebauten, neuen Kernels (Beispielsweise: "linux-image-3.4.17solarseed1 (Recovery Mode)") und sorgen so dafür, dass X (als auch das Netzwerk und der Mehrbenutzerbetrieb) nicht startet.

Wir loggen uns also als Superuser (root) ein und wechseln mit dem Befehl 'cd '/usr/src/' wieder in unser Build-Verzeichnis.

- Optional können wir jetzt mit dem Befehl 'ps -A | grep X' noch einmal sicherstellen, dass X nicht läuft.

Nun entpacken wir mit dem Befehl 'unzip amd-driver-installer-catalyst-12.10-x86.x86_64.zip' das Catalyst Treiberpaket.

- Sollte dann eine Fehlermeldung ausgegeben werden, installieren wir mit dem Befehl 'aptitude install unzip' das zum entpacken von ZIP-Files benötigte Programmpaket nach.

Nun da der Treiber entpackt ist, können wir die AMD Catalyst 12.10 Installation starten...

- Dies geschieht regulär mit dem Befehl 'sh' auf das RUN-File, also folgendermaßen:

Befehl: 'sh amd-driver-installer-catalyst-12.10-x86.x86_64.run'

Wir wählen nun aus dem Installationsmenü den ersten Punkt "Install Driver 9.002 on X.Org 6.9 or later 64-Bit"
(Nicht den zweiten Menüpunkt: "Build Distribution Specific Driver Package"!!) und drücken die "Enter-Taste".
- Nun akzeptieren wir die Bedingungen des Lizenzvertrages und bestätigen wiederum mit "Enter"...

Im folgenden Menü installieren wir die Treiber dann mit dem ersten Menüpunkt "Recommended Installation"!

- Das Treiberinstallationsscript sollte sauber durchlaufen -

Nun konfigurieren wir die Treiber für die erste Verwendung mit dem Befehl: 'aticonfig --initial'...

Dann starten wir unser System mit dem Befehl 'reboot' wieder neu...

Wählen dann im GRUB-Bootloader unseren selbst gebauten Kernel (leicht zu erkennen an unserem Kernelappend mit Benutzernamen und Nummer) zum normalen Start.

- Unser System bootet jetzt in den X-Mehrbenutzerbetrieb mit Netzwerk Unterstützung -

~

-> Nun können wir in unserem Desktop die ATI-Catalyst Treiber über das CCC (Catalyst Control Center) konfigurieren. ((Im GNOME Desktop finden wir das CCC unter "System" -> "Einstellungen" -> "AMD Catalyst Control Center"...))

Es ist empfehlenswert im CCC die 'Catalyst A.I.' auf "Erweitert" zu setzen.

-> Dadurch habe ich im "Unigine"-Benchmark ein paar Punkte mehr rausgekitzelt.

~

Jetzt sind wir fertig und können unser Niedriglatenz-Desktop-System verwenden!

LG

solarseed


P.S.: Hier http://hoerbuchwelle.net/tutorial-3d...topsystem.html gibt's das bebilderte Tutorial.


P.P.S.: Außerdem empfehle ich für das System einen älteren Kernel zu verwenden, der schon länger als "Stable" klassifiziert ist und möglichst erst vor kurzem gepatcht wurde...

Auf den folgenden zwei Links könnt ihr euch den Performancezuwachs angucken, der (merkwürdiger Weise) mit Verwendung eines älteren Linuxkernels einhergeht:

http://hoerbuchwelle.net/benchmarks/....51_heaven.jpg

http://hoerbuchwelle.net/benchmarks/....18_heaven.jpg

(Habe den 3.0.51er Kernel (zuletzt gepatcht am 05.11.2012) gerade eben erst von http://kernel.org geladen und kompiliert...)

----------


## solarseed

Hier gibt's eine bebilderte Anleitung zum Härten eines Low Latency 3D Desktopkernels.

Und Hier gibt's die Anleitung ohne Bilder...

((Bin aber noch am dran Schreiben... Ist noch nicht so gelungen... Und das erste Tutorial will ich auch nochmal abändern...))

EDIT EDIT EDIT:

Ganz ganz wichtig für die Performance eines AMD CPU betriebenen Rechensystems ist es auch, in der selben Menuconfig Kernelrubrik wo auch Processor Type and Features etc. zu finden sind. Die Kernelfunktion SMT zu deaktivieren / herraus zu nehmen!!

Durch dass entfernen des Linux Kernel SMT Supports vermeidet man den bei aktiviertem SMT (Single Multi Threading) entstehenden CPU Overhead.
((AMD Prozessoren haben kein Hyperthreading, und nur zur Nutzung dieses Intel CPU Features, quasi Rechenleistungsrecycling ist diese Funktion gut, also auf AMD System deaktivieren, bei Intel CPUs aktivieren..))

Schönen Ostersonntag!!

----------

