public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* UDP question.
@ 2006-09-14 16:00 xixi lii
  2006-09-14 23:32 ` Sven-Haegar Koch
  0 siblings, 1 reply; 11+ messages in thread
From: xixi lii @ 2006-09-14 16:00 UTC (permalink / raw)
  To: linux-kernel

Hi:
I have a very puzzled question. When I test the limits of my network
adapters, I send many small UDP packets and compute the average
packets sent per second. Use those codes, I get the result: 75000
packets per second.
(All my sockets has set to unblock)
//////
socket = socket(AF_INET, SOCK_DGRAM, .....)
bind....
time = time(NULL);
while (1)
{
sendto(socket, "", 1, 0, dstaddr, addrlen);
count++;
}
time = time(NULL) - time;
avg = count / time; // here, I get avg = 75000 //////

This result can't satisfy me, so I add another network adapter, and
try the code blow:

//////
socket1 = socket(AF_INET, SOCK_DGRAM, .....)
socket2 = socket(AF_INET, SOCK_DGRAM, .....)
bind socket1.network adapter1...
bind socket2 network adapter2
time = time(NULL);
while (1)
{
sendto(socket1, "", 1, 0, dstaddr1, addrlen);
sendto(socket2, "", 1, 0, dstaddr2, addrlen);
count += 2;
}
time = time(NULL) - time;
avg = count / time;
///////////////////

But I get the result is also 75000 packet per second, WHY?

Then I find a technique name bond, and then I configure my server's
two network adapters into a dev bond0. And then I test again with the
first paragraph of the code, then I get result 150000 packets per
second. So I want to know how bond can increate the speed of network
adapters (use my own code to send with the two network adapters at the
same time is not helpful), then I open the kernel code, and then find
such code:
bond_main.c  L3861:
if (IS_UP(slave->dev) &&
    (slave->link == BOND_LINK_UP) &&
    (slave->state == BOND_STATE_ACTIVE)) {
res = bond_dev_queue_xmit(bond, skb, slave->dev);

write_lock(&bond->curr_slave_lock);
bond->curr_active_slave = slave->next;
write_unlock(&bond->curr_slave_lock);

break;
}
It look like that when send a packet to bond dev, bond use current
slave and send packet, then change current slave to next. What is the
essence different between the bond and my code (use two network
adapters)?

Any suggestions?

xixi

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2006-09-16 12:19 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-14 16:00 UDP question xixi lii
2006-09-14 23:32 ` Sven-Haegar Koch
2006-09-15  6:36   ` Jan Engelhardt
2006-09-15  7:07     ` xixi lii
2006-09-15 19:14       ` Phillip Susi
2006-09-15 22:23       ` David Schwartz
2006-09-16  0:02         ` xixi lii
2006-09-16  0:33           ` David Schwartz
2006-09-16 12:13             ` xixi lii
2006-09-16  7:59           ` Holy Aavu
2006-09-16 12:19             ` xixi lii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox