Hello

The path FGA<->PPC<->ethernet<->python hasn't been
optimised for speed. So if you can get hold of a
PCI(e) CX4 ethernet card for your capture machine
then you will save yourself a considerable amount
of effort and get way better max transfer rates

However: If this isn't an option, there are a
couple of things you can attempt. The warning
is that you will have to be(come) reasonably
handy with C. As Jason mentioned, you could
try larger read sizes and maybe have multiple
concurrent reads from different connections in an
effort to amortise the round trip time.

If that doesn't work: tcpborphserver(2,3)
has an extension mechanism... you can run
callbacks which do things - and one option
is to run something which sends out your
data in UDP packets - that saves on encoding
time (no katcp escaping) and also doesn't
halve throughput on packet loss. It turns
out that in tcpborphserver2 there is an
optional mode which can be built which
is specific for a pocket correlator - this does
provide an example on how to implement udp
data dumping. The downside is that the
interface is not documented and there are
some differences between v2 and v3

Another option is to look at the linux
kernel driver for the network interface,
there was some weirdness with the EMAC
and also the PHY - so there may be
the option of tweaking and fixing things
to get better throughput

regards

marc

Reply via email to