Network throughput (localhost)

From: Aki Niimura
Date: Fri Mar 13 2009 - 03:25:59 EST


Hello Linux experts,

I developed a Python program, which tries to take advantage of
available Multi CPU resources.
Two programs (Server and Client) are running in separate processes
communicating each other using Socket IPC.
The performance I'm getting is somewhat in line with my expectation
under Solaris/x86 but significantly slower
under Linux (CentOS 5) even both use the identical hardware.

My investigation revealed that the performance is bottlenecked by the
communication (Socket to localhost).

So, I wrote much simpler program (socket server and socket client) to
measure the network throughput.
What I found was that the network throughput on both platforms
(Solaris/x86 and CentOS Linux) are almost
identical if packets are going out but the network throughput of
Solaris/x86 is almost twice (up to three times)
the throughput Linux can deliver if the packets are destined to localhost.

I know that Solaris treats packets destined to localhost differently.

Because of this, my program is slower (than one process) under Linux
(and is practically useless).
(I see meaningful performance gain under Solaris/x86, though)
I haven't tried any other Linux distributions.
Is there any Linux distribution known for better localhost network throughput?
Is there any way to improve the localhost throughput under Linux (CentOS)?

Of course, some people would point out that other types of IPC (such
as shared memory) are better choices
for the communication between closely coupled multi-processing
program. Unfortunately, there are
reasons that my program needs to use Socket.

Any suggestions will be greatly appreciated.

Best regards,
Aki Niimura
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/