Hi Don,

Thanks for your reply.

On Mon, Dec 8, 2014 at 10:04 PM, Skidmore, Donald C
<donald.c.skidm...@intel.com> wrote:
> Hey Stefan,
>
> I'm not sure why you are seeing more rx_no_dma_resource on one version of 
> Ubuntu than another.  We sadly don't validate against Ubuntu.

Actually, we haven't found a version of Ubuntu that works :).

I guess you're validating against RHEL and SLES?

[...]
> Likewise ATR stands for Application Targeted Receive.  It is on by default an 
> attempts to direct patch flows to the CPU which the SYN was sent out on.  It 
> assumes a one to one mapping between queue number and CPU number (what the 
> set_irq_affinity script does). If your script is not doing the same it would 
> defiantly undermined ATF and could lead to flows being directed and in 
> correct queue/CPU.   Could differences in your script be causing an issue?

I was talking about the "Ageing Timer Rollover" that was being
discussed in the other thread. Apparently that can't be set from the
HP BIOS. I guess you're talking about the NIC setting that identifies
identical flows. I'm not sure we need ATR, since we expect traffic
coming from 8 src IPs and we assign each src IP to its own core. I
noticed there's an AtrSampleRate setting, but that's not available in
the driver that ships with our kernel.

We don't use set_irq_affinity because we want to associate queues from
NIC 1 to cores from CPU0 (node0) and queues from NIC to cores from
CPU1; we have two processes, each running on one CPU core and each
handling one NIC. The system we run on is a 2-node NUMA with 16 cores
each, so I'm not handling cpus >= 32. As far as I can tell, we're not
assigning the same interrupt / queue to the same CPU or the other way
around.

Snipping from our script ($DEV and $NODE are received as arguments):

for i in `seq 0 7`; do
    ip_digit=`expr $i + 10`
    ethtool -U $DEV flow-type ip4 src-ip 10.10.10.$ip_digit action $i
done
[...]
startCpu=$(cat /sys/devices/system/node/node${NODE}/cpulist|cut -d- -f1)

IRQS=`grep $DEV-TxRx /proc/interrupts | cut -d: -f1 | tr -d " "`
if [ -z "$IRQS" ]; then
    echo "No interrupts assigned to $DEV, maybe device is down?"
    exit 1
fi

cpu=$startCpu
for irq in $IRQS; do
    mask=$((1<<$cpu))
    mask_hex=`printf "%X" $mask`
    echo "mask=$mask_hex irq=$irq"
    printf " %s" $mask_hex > /proc/irq/$irq/smp_affinity
    cpu=`expr $cpu + 1`
done

Thanks,
Stefan.

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to