Le 28/11/2012 14:16, Aurélien a écrit : > > Allez, câdo, drop in /etc/network/if-up.d et chmod +x, et ifdown/ifup > une des cartes. Y'a sûrement mieux à faire, mais ça marche bien pour > moi. Le mieux que j'ai trouvé c'est 3 cartes réseaux intel 8 files en > LAG LACP pour 24 coeurs sur mon matériel. La regex est sûrement à > tuner. > > #!/bin/bash > > # This script balances the interrupts statically. > > # It only touches the interrupts specified by this regular expressions > (grepped in /proc/interrupts) > # Only active interrupts will be grepped, so please re-run the script > on post-up. > > NETWORK_INTERRUPTS=' (gbe|bnx|eth|igb)[0-9]+(-TxRx)?-[0-7]$' > > # Balance the interrupts on all the cores, in round-robin fashion. > total_cores=$(cat /proc/cpuinfo | grep '^processor' | wc -l) > interrupts=$(cat /proc/interrupts | egrep "${NETWORK_INTERRUPTS}" | > awk -F: "{ print \$1 }" | tr '\n' ' ') > > let current_core=0; > for irq in ${interrupts}; > do > affinity="$(printf "%08x" $((1 << ($current_core % $total_cores))))" > # echo "IRQ #${irq} will have affinity to ${affinity}" > echo "${affinity}" > "/proc/irq/${irq}/smp_affinity" > let current_core=$(($current_core+1)) > done > Petit retour sur le script, déjà merci, j'avais déjà vu passer des infos à ce sujet mais je ne m'étais pas encore penché sur cette optimisation.
Pour ma part sur une Debian avec kernel 3.4.19 la regexp ne marche pas. Voilà ce que j'ai dans le interrupts pour eth0 par exemple CPU0 CPU1 307: 116542899 0 xen-pirq-msi-x eth0-rx-0 308: 98413431 0 xen-pirq-msi-x eth0-rx-1 309: 160018027 0 xen-pirq-msi-x eth0-tx-0 310: 88439060 0 xen-pirq-msi-x eth0-tx-1 J'ai modifié la regexp comme cela (gbe|bnx|eth|igb)[0-9]+-(tx|rx)-[0-7]$ Par contre avant d'appliquer la modification j'ai trouvé une valeur à 3 dans le /proc/irq/(307-310)/smp_affinity La machine est un xeon 4 core 8 en HT qui héberge du xen où j'ai spécialement réservé 2 core pour l'hyperviseur. Du coup la valeur 3 m'interpelle un peu sachant que cela devrait être 1 ou 2 comme le confirme d'ailleurs /proc/irq/307/smp_affinity_list 1-2 Par contre une fois les modifications appliquées j'ai /proc/irq/(307-310)/smp_affinity_list à 0 ou 1 /proc/irq/(307-310)/smp_affinity à 1 ou 2 Depuis que j'ai fait la modification j'ai bien le cpu1 qui bosse pour les irq donnés 307: 116646799 0 xen-pirq-msi-x eth0-rx-0 308: 98452617 46945 xen-pirq-msi-x eth0-rx-1 309: 160194164 0 xen-pirq-msi-x eth0-tx-0 310: 88450878 16109 xen-pirq-msi-x eth0-tx-1
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/