Le 25/09/2012 09:05, Laurent CARON a écrit :
On 24/09/2012 22:27, Francois Romieu wrote:
Vu ce qui a été modifié après le 3.5 pour le routage, ça pourrait valoir
le coup d'essayer un 3.6-rc.

Sinon, comme il s'agit d'un routeur, les résultats devraient être
différents si on favorise le traitement des interruptions rx et tx d'un
même paquet par le même CPU, donc en évitant d'avoir les irq rx et tx
d'une interface dans le même CPU. Je ne parierai pas sur le sens ni
sur l'ampleur du changement :o)

J'ai déjà essayé cette piste (c'était d'ailleurs mon premier essai), sans résultat génial.

J'avais mis sur le même coeur rx de eth0/1 et tx de eth2/3 (et inversement pour l'autre coeur).


Bonjour,

sinon il y a les patchs RPS, RFS et XPS de Google qui fonctionnent très bien :
http://code.google.com/p/kernel/wiki/NetScalingGuide

Il faut les activer dans le kernel (mini 2.6.35), puis eth par eth. Ca se benchmark mais j'avais fais un script vite fait pour mes besoins :

#!/bin/bash

#Mask cpu:
# f = for 4 cpus
# ff = for 8 cpus
# ffff = for 16 cpus
# ffffff = for 24 cpus
# But any cpus <= 24: if you do echo "ffffff" > /sys/class/net/$interface/queues/$rx/rps_cpus, you'll have the good mask
val="ffffff"
#Length of rps_dev_flow table(round to 2^n):
rfs="2"
optimized=0
force=0

# .....

# RPS/RFS/TPS
for interface in $IFACE
do
        if [ -d /sys/class/net/$interface/queues/rx-0 ]
        then
                optimized=1
if [ $force == 1 ] || ! grep -q $rfs /sys/class/net/$interface/queues/rx-0/rps_flow_cnt
                then
echo "[$interface] Enabling Receive Packet Steering" for rx in $(ls -1d /sys/class/net/$interface/queues/rx-*)
                        do
                                echo $val > $rx/rps_cpus
                                echo $rfs > $rx/rps_flow_cnt
                        done
                fi
        fi

        if [ -d /sys/class/net/$interface/queues/tx-0 ]
        then
                optimized=2
if [ $force == 1 ] || ! grep -q "f" /sys/class/net/$interface/queues/tx-0/xps_cpus
                then
echo "[$interface] Enabling Transmit Packet Steering" for tx in $(ls -1d /sys/class/net/$interface/queues/tx-*)
                        do
                                echo $val > $tx/xps_cpus
                        done
                fi
        fi
done

--
Greg

_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à