On Sun, Mar 23, 2008 at 04:20:21PM -0700, David Miller wrote:
I cooked up a small perl "client-server application" (at the end) that
opens up several hundred TCP sockets in between its two halfs.
It doesn't do anything else, that is the machine is _IDLE_ after socket
creations:
$ time cat /proc/net/tcp|wc;time cat /proc/net/tcp|wc;time cat /proc/net/tcp|wc
2215 35650 332250
real 0m35.731s
user 0m0.005s
sys 0m35.721s
1815 29445 272250
real 0m25.328s
user 0m0.004s
sys 0m25.309s
1815 30850 272250
real 0m29.521s
user 0m0.004s
sys 0m29.508s
Kernel:
2.6.25-0.90.rc3.git5.fc9 #1 SMP Tue Mar 4 20:19:33 EST 2008 x86_64 x86_64 x86_64
Machine:
vendor_id : AuthenticAMD
cpu family : 15
model : 35
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
stepping : 2
cpu MHz : 2211.331
bogomips : 4425.68
Odd.. Another machine with slightly older kernel is definitely swifter
although it clocks less than half of the bogomips..
$ time cat /proc/net/tcp | wc
1822 30969 273300
real 0m6.674s
user 0m0.008s
sys 0m6.669s
2.6.25-0.40.rc1.git2.fc9 #1 SMP Wed Feb 13 17:17:48 EST 2008 x86_64 x86_64 x86_64 GNU/Linux
vendor_id : AuthenticAMD
cpu family : 15
model : 75
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
stepping : 2
cpu MHz : 1000.000
bogomips : 2006.08
#!/usr/bin/perl
# Simple test load generator for Linux kernel related
# "cat /proc/net/tcp" performance issue..
use IO::Socket::INET;
my @rd = ();
my @wr = ();
my $rc = fork();
if ($rc == 0) { ## Child
$srv = IO::Socket::INET->new( Type => SOCK_STREAM, Listen => 900, LocalPort => 9988,
ReuseAddr => 1, Blocking => 1 );
while (1) {
my $s = $srv->accept();
push @rd, $s;
}
exit;
}
sleep 1; # make sure the "server" starts before our client-side does connects..
foreach my $i (1..900) {
my $s = IO::Socket::INET->new( Proto => TCP, PeerPort => 9988, PeerAddr => 'localhost' );
push @wr, $s;
};
while (1) {
sleep 100;
}
exit 0;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html