[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-users] Interrupt handling in Xen



Hi!

This should probably be added to "best practices"[1] or "common
problems"[2].

Two servers with 10x1GBit ethernet each were able to achieve around
1150MB/s (byte not bit) in network benchmarks conducted with iperf
(2.6.26/stock Debian Lenny).
Booting Xen (3.4.3-rc3 from Debian/unstable) with kernel 2.6.32.11 (pv-ops)
as Dom0 it turned out that the servers could not do more than about
700-800MB/s. (A long way of debugging/testing/benchmarking followed -- I
tried lots of things including Xen-4.0.0 ;-)
Looking at /proc/interrupts lead to the solution:
            CPU0       CPU1       CPU2       CPU3
1500:    1859518          0          0          0  xen-pirq-msi       eth9
1501:    2295607          0          0          0  xen-pirq-msi       eth8
1502:    2720851          0          0          0  xen-pirq-msi       eth7
1503:    3064408          0          0          0  xen-pirq-msi       eth6
1504:    4573347          0          0          0  xen-pirq-msi       eth5
1505:    4672864          0          0          0  xen-pirq-msi       eth4

all interrups are pinned on CPU0; booting the system without Xen shows that
interrupts are equaly distributed over all the cores.
So the solution is quite easy: either manually balance interrupts by eg:
echo <BITMASK> > /proc/irq/<INTERRUPT>/smp_affinity
where <BITMASK> (in hex) is
1 -> CPU0
2 -> CPU1
4 -> CPU2
8 -> CPU3
and so on. This is actually a bit mask that allows to attach several
CPUs/cores to handle interrupts on native linux. In Xen this is disabled:
If you specify a mask like "3" (=1+2 which means CPU0 and CPU1) the first
matching CPU will be chosen -- CPU0 in this case.

The easier and for most cases better solution will be to install
irqbalance[3] which Debian Lenny did not do automatically.

After installation of irqbalance I measured values around 1100MB/s which is
about 50MB/s less than native. I am not sure if manual balancing will bring
better results or if I should do more thorrow testing. On the other hand,
having 1100MB/s seems to be fast enough for what I plan to do! ;-)
There was however an interesting difference between Xen-3.4.3-rc3 and
Xen-4.0.0: With the very same kernel (2.6.32.11 pv-ops/Debian) Xen-3.4.3
got stuck for fractions of seconds while under high load whereas with
Xen-4.0.0 I did not experience anything similar. In terms of numbers
Xen-4.0.0 was between 1 and 10MB/s faster -- which is less than 1%.

best regards,
  Adi Kriegisch

[1] http://wiki.xensource.com/xenwiki/XenBestPractices
[2] http://wiki.xensource.com/xenwiki/XenCommonProblems
[3] http://www.irqbalance.org


_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.