Tutorial Linux 1000 FPSIn cele ce urmeaza o sa va convingeti despre importanta kernelului si despre efectul acestuia asupra performantei unui server de CS 1.6 Acest tutorial este doar pentru cei care folosesc platforma Linux,incluzand toate distributiile derivate Debian (Ubuntu,LinuxMint etc) Sa pornim de la urmatoarele : aveti Ubuntu si serverul instalat in /usr/hlds 1.Downloadarea kernelului -aici gasiti toate tipurile de kernel : http://www.kernel.org/pub/linux/kernel/v2.6/ -aici gasiti patch-uri RT pt kernel : http://www.kernel.org/pub/linux/kernel/projects/rt/ -momentan,ultima versiune de kernel este 2.6.31 -intram in terminal si ne logam ca root scriind -dupa ce introducem parola scriem -si -dupa care -tot in terminal ne downloadam ultimul kernel si patch 2.Compilarea kernelului -instalam "uneltele" necesare | Citat: | apt-get install gcc apt-get install make (sau gmake sau gnu-make) apt-get install ncurses apt-get install ncurses-dev apt-get install chrt apt-get install zlib1g-dev apt-get install patch | -vom dezarhiva kernelul | Citat: | | tar zxf linux-2.6.31.tar.gz | -si vom aplica patch-ul RT | Citat: | zcat ../patch-2.6.31.2-rt13.gz | patch -p1 | -incepem configurarea kernelului -ne va aparea un meniu unde vom face urmatoarele modificari | Citat: | General setup:
- RCU Subsystem (ignora daca nu este prezent)
- Activeaza RCU Implementation (Preemptible RCU)
- Dezactiveaza Enable tracing for RCU
Processor type and features:
- Dezactiveaza Tickless System (Dynamic Ticks)
- Activeaza High Resolution Timer Support
- Selecteaza-ti procesorul sub Processor family
- Schimba Preemtion Mode in Complete Preemption (Real-Time)
- Activeaza Enable priority boosting of RCU read-side critical sections (ignora daca nu este prezent)
- Dezactiveaza Enable tracing for RCU - currently stats in debugfs (ignora daca nu este prezent)
- Activeaza Machine Check Exception si selecteaza Intel sau AMD in functie de ce procesor ai
- Schimba Timer frequency la 1000 HZ
Power management and ACPI options
- Activeaza Power Management support
- Dezactiveaza Power Management Debug Support
- Dezactiveaza Suspend to RAM and standby
- Dezactiveaza Hibernation (aka 'suspend to disk')
- Activeaza ACPI (Advanced Configuration and Power Interface) Support
- Dezactiveaza CPU Frequency scaling
- Dezactiveaza CPU idle PM support
Networking support
- Networking options
- Activeaza Packet socket: mmapped IO
- Dezactiveaza Network packet filtering framework (Netfilter) (Atentie!:aceasta optiune dezactiveaza firewall-ul)
- Dezactiveaza QoS and/or fair queueing
Device Drivers
- Dezactiveaza Watchdog Timer Support
- Activeaza Real Time Clock
- Activeaza PC-style 'CMOS'
Kernel hacking | -dupa ce terminam iesim din meniu (EXIT) iar cand ne intreaba daca vrem sa salvam configuratia vom raspunde cu da (YES) -pentru compilarea si instalarea kernelului vom rula urmatoarea comanda | Citat: | make && make install modules_install | Acest proces dureaza in jur de 2-3 ore,depinde de sistemul dumneavoastra ... ... ... ... ... ... Urmeaza creerea in directorul /boot a celor doua componente rezultate din compilarea kernelului folosind comanda | Citat: | mkinitramfs -o /boot/initrd.img-2.6.31.2-rt13 2.6.31.2-rt13 | -acum vom aduca kernelul in meniul de boot | Citat: | cd .. cd /boot chmod -R 777 grub | -ne ducem in /boot/grub si deschidem fisierul menu.lst (sau grub.conf) si adaugam noul kernel in lista | Citat: | title Debian 2.6.31 RT Kernel 1000 Fps kernel /boot/vmlinuz-2.6.31.2-rt13 root=/dev/sda1 initrd /boot/initrd.img-2.6.31.2-rt13 | Aceasta de mai sus (/dev/sda1) este locatia "standard",dar poate diferi,in functie de partitia instalarii linuxului. Puteti incerca in terminal Restartati PC-ul Dupa restart,la pornire,inainte de a se incarca linuxul,apasati ESC iar din meniul GRUB selectati noul kernel si apasati ENTER. Puteti verifica ce kernel ruleaza in prezent pe sistem tastand in terminal 3.Setarea serverului in mod real-time Un sistem real-time are nevoie sa stie care procese sunt critice si care nu.In mod normal,nici un proces nu este considerat ca fiind critic.Cel mai usor este sa creem un "cron job" pe care il vom seta sa ruleze din minut in minut.In folderul /usr/src vom crea un nou fisier pe care il vom numi " resched.sh ".Deschidem fisierul respectiv si punem in el urmatoarele | Citat: | #!/bin/sh PIDS=`ps ax | grep sirq-hrtimer | grep -v grep | sed -e "s/^ *//" -e "s/ .*$//"` for p in $PIDS; do chrt -f -p 99 $p done PIDS=`ps ax | grep sirq-timer | grep -v grep | sed -e "s/^ *//" -e "s/ .*$//"` for p in $PIDS; do chrt -f -p 51 $p done PIDS=`pidof srcds_i686` for p in $PIDS; do chrt -f -p 98 $p done PIDS=`pidof srcds_i486` for p in $PIDS; do chrt -f -p 98 $p done PIDS=`pidof srcds_amd` for p in $PIDS; do chrt -f -p 98 $p done PIDS=`pidof hlds_i686` for p in $PIDS; do chrt -f -p 98 $p done PIDS=`pidof hlds_i486` for p in $PIDS; do chrt -f -p 98 $p done PIDS=`pidof hlds_amd` for p in $PIDS; do chrt -f -p 98 $p done | -vom face fisierul executabil | Citat: | chmod 755 /usr/src/resched.sh | -apoi | Citat: | cd /etc chmod -R 777 crontab | -mergem in directorul /etc si deschidem fisierul crontab -adaugam urmatoarele | Citat: | # m h dom mon dow user command [...] */1 * * * * root /usr/src/resched.sh > /dev/null 2>&1 | -dupa care restartam crontab | Citat: | /etc/init.d/cron restart | 4.Eliminarea variatiilor de FPS cu "idler" -dupa urmare acestui tutorial,pe unele sisteme raman mici variatii de FPS -in acest caz ajuta creerea unui proces low-priority care sa ia 100% din procesor -ne ducem in /usr/src si creem un fisier nou pe care il denumim " idler.c " -in fisierul respectiv adaugam urmatoarele linii | Citat: | int main() { while(1); } | -compilam programul din terminal (trebuie sa fii root) | Citat: | cd /usr/src gcc idler.c -o idler nice ./idler | Nu uitati sa porniti serverul cu " -pingboost 3 " si cu un " sys_ticrate " intre 1000 si 1200 (puteti incerca sa vedeti ce vi se potriveste mai mult).Daca ati urmat corect acest tutorial veti avea la server 1000 Fps si o acuratete foarte buna.Puteti de asemenea,pentru o mai buna performanta,instalarea unui PING BOOSTER Link-uri de studiat (sursa freakz.ro)
|