Portál AbcLinuxu, 4. května 2025 14:21
#----------------------- WIFIIF="eth1" INETIF="eth0" #----------------------- # Vytvoreni stromu pro Wifinu tc qdisc del dev $WIFIIF root tc qdisc add dev $WIFIIF root handle 1:0 htb default 999 # Vytvoreni stromu pro vystup na Internet tc qdisc del dev $INETIF root tc qdisc add dev $INETIF root handle 1:0 htb default 999 # UPLOAD: uzivatel tc class add dev $INETIF parent 1:0 classid 1:1533 htb rate 512kbit tc qdisc add dev $INETIF parent 1:1533 handle 11533:0 sfq perturb 5 iptables -t mangle -A FORWARD -o $INETIF -p ! icmp -s 192.168.10.2 -d ! 192.168.0.0/16 -j MARK --set-mark 2533 tc filter add dev $INETIF parent 1:0 protocol ip handle 2533 fw flowid 1:1533 # DOWNLOAD: uzivatel tc class add dev $WIFIIF parent 1:0 classid 1:1533 htb rate 512kbit tc qdisc add dev $WIFIIF parent 1:1533 handle 11533:0 sfq perturb 5 iptables -t mangle -A POSTROUTING -p ! icmp -d 192.168.10.2 -s ! 192.168.0.0/16 -j MARK --set-mark 1533 iptables -t mangle -A OUTPUT -p tcp -d 192.168.10.2 --sport 3128 -j MARK --set-mark 1533 tc filter add dev $WIFIIF parent 1:0 protocol ip handle 1533 fw flowid 1:1533Projevy jsou asi takove, ze pokud nastavim uzivateli rychlost napr. 512kbit, jede trebas 300-400kBytes, pokud nastavim 100kbit, uzivatel jede tak 50-80kB. Jsou to radove rozdily hrube neodpovidajici ani naznakem nastavene rychlosti. Je zde ale videt, ze sharping pracuje, ale otazkou je, proc tak divne a kde hledat chybu, kdyz to na predchozi masine pracovalo idealne. Nema jadro 2.6.x nejake jine vlastnosti co se tc a htb tyce?
debianetch:/etc/firewall# tc -s -d class show dev eth1 class htb 1:1533 root prio 0 quantum 2500 rate 200000bit ceil 200000bit burst 1699b/8 mpu 0b overhead 0b cburst 1699b/8 mpu 0b overhead 0b level 0 Sent 22724107 bytes 1895 pkt (dropped 0, overlimits 0 requeues 0) rate 1234Kbit 12pps backlog 0b 5p requeues 0 lended: 1890 borrowed: 0 giants: 3412 tokens: -82128 ctokens: -82128Vyse je uvedeny vypis tridy v prubehu prenosu pres FTP. V dany moment bylo skutecne preneseno cca 22MB dat, ovsem realna rychlost 1234kbit. Rate je vsak nastaveno na 200kbit. Ten novy stroj je quadcore, cili spis zaciname doufat, ze to mozna muze byt i tim. Tedy i kdyz je to hodne divne. Ale u mnoha testu jsem docilil zvyseni realne rychlosti 4-6x oproti puvodni nastavene hodnote.
Processor type and features -> [ ] Enable kernel irq balancing (2.6.x kernels) Kernel hacking -> [ ] Kernel debugging2.) Pokud nechcete kompilovat jadro a je jadro od dodavatele distribuce kompilovano s irq_balance povolenym, je nutne pri startu systemu nastavit kernelu parametr NOIRQBALACE. Napr. v pripade GRUB bootloaderu na Debian Etch:
title Debian GNU/Linux, kernel 2.6.18-6-686 - hd0 root (hd0,0) kernel /vmlinuz-2.6.18-6-686 root=/dev/md1 ro noirqbalance initrd /initrd.img-2.6.18-6-686 savedefault3.) Nektere distribuce pouzivaji irqbalance deamon, ktery kazdych 10 sekund meni nastaveni prideleni hw preruseni mezi jednotliva CPU dle jejich vytizeni. Je nutne ho bud odinstalovat, nebo zakazat jeho spousteni napr. u RHEL
chkconfig --level 2345 irqbalance offDalsim krokem je nastaveni smp_affinity (prideleni urciteho CPU) pro IRQ, ktera obsluhuji sitove karty. Vylistujeme si konkretni cisla IRQ pres: cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 0: 57382568 0 0 0 IO-APIC-edge timer 1: 11306 0 0 0 IO-APIC-edge i8042 9: 0 0 0 0 IO-APIC-level acpi 12: 37661 0 0 0 IO-APIC-edge i8042 169: 34020827 35662622 30391040 35111186 IO-APIC-level uhci_hcd:usb1, ehci_hcd:usb3, eth2 177: 7418529 7550686 4920178 9752439 IO-APIC-level uhci_hcd:usb2, eth3 185: 15086267 14261889 14179602 4938130 IO-APIC-level eth0 193: 25489867 18938703 15520529 10852850 IO-APIC-level libata, eth1 NMI: 0 0 0 0 LOC: 56775697 56775659 56791204 56791230 ERR: 0 MIS: 0Z tohoto vypisu zjistime, ze IRQ 169, 177, 185 a 193 obsluhuji nase ctyri sitove karty. Pak uz staci zadat na konzoli prikazy:
echo 1 > /proc/irq/169/smp_affinity echo 1 > /proc/irq/177/smp_affinity echo 1 > /proc/irq/185/smp_affinity echo 1 > /proc/irq/193/smp_affinityTimto zajistime obsluhu techto IRQ jen jednim prvnim CPU. Aby nam toto nastaveni fungovalo i po restartu systemu, je nutne si vytvorit skript s timto nastavenim smp_affinity a tento skript spoustet jako prvni systemovy skript napr. Debian Etch v /etc/rc2.d jako symlink S10set-smp_affinity File: set-smp_affinity
#!/bin/sh # by Pavel Dobry # # Setup of smp_affinity settings for StarHill server with Intel Quad CPU # # # We need also disabled kernel irqbalance services: # in GRUB at kernel statement by parametr : noirqbalance echo 1 > /proc/irq/169/smp_affinity echo 1 > /proc/irq/177/smp_affinity echo 1 > /proc/irq/185/smp_affinity echo 1 > /proc/irq/193/smp_affinity exit 0
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.