Hallo
Also ich habemir vor kurzem einen Kernel gebastelt nach einen HowTo von Pur3gaming, falls das euch was sagt. Dieses Forum ist nun leider dicht und habe mir die Anleitung über archiv.org rausgesucht, hier gibts nämlich einen sehr guten HighPerformance Kernel Anleitung mit einer guten Optimierung, somit nicht ganz so ressourcen hungrig.
Wenn es interessiert, die Anleitung gibts es unter http://web.archive.org/web/20080110102659/www.pur3gaming.com/showthread.php?t=5
Also die Standart Anleitung dafür (also ohne "Optimierung") sieht so aus
So eingestellt gibt es keine Probleme, es gibt aber zur Anleitung ein "extra" hier werden Einstellungen am Netzwerk bzw. an der Datenverarbeitung getätigt. Dies sieht wiefolgt aus
Mit diesen Einstellungen gibt es Probleme, manchmal ist er für 50% der Leute nicht erreichbar (praktisch wie ein Netsplit im IRC) oder der Server crasht komplett (der Server läuft noch, aber via Netzwerk nicht erreichbar).
Ich hab genau nach dieser Anleitung gearbeitet, es gabs nur 1 wo ich eine änderung gemacht habe. Dies ist der Schritt wo man die Bandbreite also bei mir 100Mbit Network auswählt dann die Netzwerkkarte (bei mir eine RealTek RTL-8139 C+) zu der Netzwerkkarte "Use older RX-reset method" aktiviert habe, in der Hoffnung das es dieses NAPI ist. Beim nächsten versuch habe ich dieses "Use older Rx-reset method" weggelassen und ein Menüpunkt darüber, also unter
Habe ich dann mal mich mit "Use large TX/RX rings (experimental)" versucht in der Hoffnung das dieses klappt, was aber auch nun nicht ging.
Ich weiß nun langsam nicht weiter, kann es sein das das "NAPI" nicht von der Netzwerkkarte unterstützt wird, immerhin findet man unter den direkten Netzwerkartentreiber dafür kein NAPI, so wie bei einigen anderen Karten dort bis auf das "User older rx-reset...", was ich denke mal kein NAPI ist.
Ich habe via ifconfig folgendes gefunden
Also scheint mit den RX packeten irgendwas nicht zustimmen, bei TX packets gab es keine errors, dropps oder ähnliches.
Kann mir jemand helfen?
Also ich habemir vor kurzem einen Kernel gebastelt nach einen HowTo von Pur3gaming, falls das euch was sagt. Dieses Forum ist nun leider dicht und habe mir die Anleitung über archiv.org rausgesucht, hier gibts nämlich einen sehr guten HighPerformance Kernel Anleitung mit einer guten Optimierung, somit nicht ganz so ressourcen hungrig.
Wenn es interessiert, die Anleitung gibts es unter http://web.archive.org/web/20080110102659/www.pur3gaming.com/showthread.php?t=5
Also die Standart Anleitung dafür (also ohne "Optimierung") sieht so aus
Code:
RT Kernel Bestimmt für CS:S und CS1.6 Server
Dieser Kernel bietet eine sehr gute Performance für beide Dedicated Server
Vorteile:
-Load und CPU Last steigen nicht so stark an wie bei dem 1500HZ Kernel
-CS:S erreicht einen guten Wert um die 980FPS
Nachteile:
-pingboost 3 in Verbindung mit einer +sys_ticrate 10000 kann nur genutzt werden wenn der Kernel mit 1000/100 HZ läuft (CS 1.6)
Code:
su
apt-get update
apt-get install libc6-dev gcc binutils modutils kernel-package libncurses5-dev debianutils make bzip2
cd /..
cd /usr/src/
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.9.tar.bz2
tar xfvj linux-2.6.23.9.tar.bz2
wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.23.9-rt13.bz2
mv linux-2.6.23.9 linux-2.6.23.9-rt13
cd linux-2.6.23.9-rt13
bzcat /usr/src/patch-2.6.23.9-rt13.bz2 | patch -p1
cd /..
cd /usr/src/
ln -s linux-2.6.23.9-rt13 linux
So nun übernehmen wir die alte Kernelcfg. Durch den Befehl "ls /boot" siehst du die cfg oder cfgs der vorherigen Kernel. Die musst du natürlich
bei "cp /boot/config-2.6.21" auf deine vorherige cfg abändern.
Code:
ls /boot/
cp /boot/config-2.6.21 linux/.config
cd linux
So nun gibt es zwei Möglichkeiten etwa man optimiert den Kernel für CS:S oder für CS 1.6
CS:S
Bevor wir zum Menü übergehen müssen wir ein paar Einstellungen in der param.h manuell machen damit der CS:S Server
auch die FPS stabil im Bereich 980 - 990 hält
Code:
vi include/asm-i386/param.h
Code:
#ifndef _ASMi386_PARAM_H
#define _ASMi386_PARAM_H
#ifdef __KERNEL__
# define HZ 1000 /* Internal kernel timer frequency */
# define USER_HZ 1000 /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif
#ifndef HZ
#define HZ 100
#endif
#define EXEC_PAGESIZE 4096
#ifndef NOGROUP
#define NOGROUP (-1)
#endif
#define MAXHOSTNAMELEN 64 /* max length of hostname */
#endif
Nun zum Menü
Code:
make menuconfig
Mit dem letzen Befehl wird nun ein Menü angezeigt dort solltest du folgende Einstellungen vornehmen
General Setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
[*] Kernel .config support
[*] Enable acess to .config through /proc/config.gz
Processor type and features --->
[ ] Tickless System (Dynamic Ticks)
[*] High Resolution Timer Support
[*]Symmetric multi-processing support --->(Für 2/4 Kern CPUs oder Dual oder Quad Boards)
Processor family (Core 2/neuer Xeon) (Hier könnt ihr selber entscheiden welchen CPU euer Server hat)
[ ] Generic x86 support
[ ] SMT (Hyperthreading) scheduler support (Falls ihr z.B einen P4 mit HT habt)
[*] Multi-core scheduler support
Preemption Mode (Complete Preemption (Real-Time))
[*] enable irq balancing
Timer frequency (1000HZ) --->
---Enable the Block Layer --->
I0 Schedulers --->
<*> Anticipatory I/O scheduler
<*> Deadline I/O scheduler
Power management options (ACPI, APM) --->
[*]Power Management support
ACPI (Advanced Configuration and Power Interface) Support --->
[*]ACPI Support
Kernel hacking --->
[*] Wakeup latency timing
[*] Latency tracing
[*] wakeup latency histogram
Device Drivers --->
<*> Real Time Clock --->
--- Real Time Clock
[*] Set system time from RTC on startup and resume (NEW)
(rtc0) RTC used to set the system time (NEW)
[*] RTC debug support (NEW)
--- RTC interfaces
[*] /sys/class/rtc/rtcN (sysfs)
[*] /proc/driver/rtc (procfs for rtc0)
[*] /dev/rtcN (character devices)
[*] RTC UIE emulation on dev interface
<M> Test driver/device
Device Drivers --->
Character devices --->
<*> Enhanced Real Time Clock Support
[*] Real Time Clock Histogram Support
[*] HPET - High Precision Event Timer
[*] Allow mmap of HPET (NEW)
Von einem anderen User wurden noch zusätzliche Erweiterungen angegeben die ihr hier nachlesen könnt bzw ausprobieren
so nun zum abchluss
Code:
make-kpkg clean
make-kpkg --initrd --revision=Kernel.01 kernel_image
ls /usr/src/
cd /..
cd /usr/src/
Seit einiger Zeit ist der Namen des erstellten .deb Paket nicht mehr "kernel-image-2.6.23.9-rt13_Kernel.01_i386.deb" sondern "linux-image-2.6.23.9-rt13_Kernel.01_i386.deb" Da viele von euch noch alte Versionen haben solltet ihr vorher noch "ls/boot/" eingeben um zu schauen wie euer Paket heisst
Code:
dpkg -i linux-image-2.6.23.9-rt13_Kernel.01_i386.deb
So eingestellt gibt es keine Probleme, es gibt aber zur Anleitung ein "extra" hier werden Einstellungen am Netzwerk bzw. an der Datenverarbeitung getätigt. Dies sieht wiefolgt aus
Code:
Networking --->
Networking options --->
[*] TCP: advanced congestion control --->
<*> Binary Increase Congestion (BIC) control
<*> CUBIC TCP
<*> TCP Westwood+
<*> H-TCP
<*> High Speed TCP
<*> TCP-Hybla congestion control algorithm
---TCP Vegas
<*> Scalable TCP
<*> TCP Low Priority
<*> TCP Veno
<*> YeAH TCP
<*> TCP Illinois
Default TCP congestion control (Htcp) ---> (verbesserte TCP Variante)
Networking --->
Networking options --->
QoS and/or fair queueing --->
[ ] QoS and/or fair queueing
Deaktiviert weil dadurch unnötige Warteschlangen auftreten,
wer seinen Rootserver allerdings auch als Webserver missbraucht,
sollte sich ins Thema QoS and/or fair queueing einlesen, und kann
damit dann sicher was gutes anfangen
Device Drivers --->
[*] Network device support --->
[?] Ethernet (10 or 100Mbit) --->
[?] Ethernet (1000 Mbit) --->
[?] Ethernet (10000 Mbit) --->
? Deshalb, weil es darum geht, dass IHR hier EURE Netzwerkkarte findet und in
ihrer Nähe einen Punkt aktiviert der "Use Rx and Tx Polling (NAPI)" oder "RX Polling"
oder ähnlich heisst. Dadurch wird bei Netzwerkverkehr ueber 10KB/s
[bei Cs-Servern normal] die CPU entlastet und ermöglicht leicht höhere IN / OUT Werte.
Device Drivers --->
DMA Engine support --->
[*] Support for DMA engines
--- DMA Clients[*] Network: TCP receive copy offload
--- DMA Devices
<M> Intel I/OAT DMA support
Verbessert auch das CPU- und Interruptverhalten bei hoher
Netzwerklast
Mit diesen Einstellungen gibt es Probleme, manchmal ist er für 50% der Leute nicht erreichbar (praktisch wie ein Netsplit im IRC) oder der Server crasht komplett (der Server läuft noch, aber via Netzwerk nicht erreichbar).
Ich hab genau nach dieser Anleitung gearbeitet, es gabs nur 1 wo ich eine änderung gemacht habe. Dies ist der Schritt wo man die Bandbreite also bei mir 100Mbit Network auswählt dann die Netzwerkkarte (bei mir eine RealTek RTL-8139 C+) zu der Netzwerkkarte "Use older RX-reset method" aktiviert habe, in der Hoffnung das es dieses NAPI ist. Beim nächsten versuch habe ich dieses "Use older Rx-reset method" weggelassen und ein Menüpunkt darüber, also unter
Code:
Device Drivers ---> [*] Network device support --->
Ich weiß nun langsam nicht weiter, kann es sein das das "NAPI" nicht von der Netzwerkkarte unterstützt wird, immerhin findet man unter den direkten Netzwerkartentreiber dafür kein NAPI, so wie bei einigen anderen Karten dort bis auf das "User older rx-reset...", was ich denke mal kein NAPI ist.
Ich habe via ifconfig folgendes gefunden
Code:
RX packets:27602512 errors:22 dropped:39616 overruns:1 frame:0
Kann mir jemand helfen?