Re: [twsocket] best way for packet routing

2012-02-28 Thread Emanuele Bizzarri
Hi,
yes I know that packets are biggest than 4 bytes on wire, I'm telling
about payload only.
[40(eth)+20(ip)+20(tcp)+4(payload)]*1000(pktps)*8(bits)*500(clients)=336Mbps1Gbps

My intention is to stress the software and understand what happens in
critical situations. If I use bigger packets I can easily saturate the
gigabit switch, but what I want is to send a lot of packets to a lot of
clients using less bandwidth as possible.

Do you think that routing cicle is ok? There is a better way to do that?
Can you give any advice about that?

Thank you



Il 27/02/2012 20:50, François Piette ha scritto:
 For this I configured each client to send about 1000 packets per second of
 4 bytes (about 32Kbps).

 Your bps computation is wrong. You send 4 data bytes, the actual packets on
 the network are much larger (something like 10 times) ! Have a lokk there:
 http://sd.wareonearth.com/~phil/net/overhead/

 You should avoid transmitting such small packet. It is better to aggregate
 small packets into larger ones.

   fSS.Client [i]. Send (fRxData, lSize)
 Add a try/except block around that line.

 --
 francois.pie...@overbyte.be
 The author of the freeware multi-tier middleware MidWare
 The author of the freeware Internet Component Suite (ICS)
 http://www.overbyte.be


 --
 To unsubscribe or change your settings for TWSocket mailing list
 please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
 Visit our website at http://www.overbyte.be


-- 
Ing. Emanuele Bizzarri
Software Development Department
e-works s.r.l.
41011 - Campogalliano - Modena - Italy 
tel. +39 059 2929081 int. 23
fax +39 059 2925035

e-mail: e.bizza...@e-works.it - http://www.e-works.it
-
La presente comunicazione, che potrebbe contenere informazioni riservate e/o 
protette da segreto professionale, è indirizzata esclusivamente ai destinatari 
della medesima qui indicati. Le opinioni, le conclusioni e le altre 
informazioni qui contenute, che non siano relative alla nostra attività 
caratteristica, devono essere considerate come non inviate né avvalorate da 
noi. Tutti i pareri e le informazioni qui contenuti sono soggetti ai termini ed 
alle condizioni previsti dagli accordi che regolano il nostro rapporto con il 
cliente. Nel caso in cui abbiate ricevuto per errore la presente comunicazione, 
vogliate cortesemente darcene immediata notizia, rispondendo a questo stesso 
indirizzo di e-mail, e poi procedere alla cancellazione di questo messaggio dal 
Vostro sistema. E' strettamente proibito e potrebbe essere fonte di violazione 
di legge qualsiasi uso, comunicazione, copia o diffusione dei contenuti di 
questa comunicazione da parte di chi la abbia ricevuta per errore o in 
violazione degli scopi della presente. 
-
This communication, that may contain confidential and/or legally privileged 
information, is intended solely for the use of the intended addressees. 
Opinions, conclusions and other information contained in this message, that do 
not relate to the official business of this firm, shall be considered as not 
given or endorsed by it. Every opinion or advice contained in this 
communication is subject to the terms and conditions provided by the agreement 
governing the engagement with such a client. If you have received this 
communication in error, please notify us immediately by responding to this 
email and then delete it from your system. Any use, disclosure, copying or 
distribution of the contents of this communication by a not-intended recipient 
or in violation of the purposes of this communication is strictly prohibited 
and may be unlawful.


--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] best way for packet routing

2012-02-28 Thread François Piette
 Do you think that routing cicle is ok? There is a better way to do that?
 Can you give any advice about that?

How do you solve the issue which can happen if a client is not receiving
data fast enough ? The sending socket will buffer data (It is asynchronous
on send as well) and all memory could be consumed if you don't kill client
which do not receive data, or at least delete some data (the oldest or the
newest).

Also, with your system, data is duplicated as much as you have clients. This
is a waste of memory and will not scale up nicely.

--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be




--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


[twsocket] best way for packet routing

2012-02-27 Thread Emanuele Bizzarri
Hi,
I'm doing some tests to evaluate the performance of my application server.
I'm using a tcp socket server on a single thread (dedicated, I don't use
the main thread), connected  with 500 clients installed on different
machines (no clients on the server machine).

What I want to evaluate is the ability of the server to process packets.
For this I configured each client to send about 1000 packets per second
of 4 bytes (about 32Kbps).
I'm using a gigabit switch, so I don't have any bandwidth problem.

In a first test, each client transmits and the server only receives.
In this case, the CPU of the server exceeds 50% (on my dual core
machine), some clients will stop transmitting (WSAEWOULDBLOCK) and if I
analyze the traffic with wireshark, I noticed that the window size of
some of the tcp connections goes to zero.
Letting go of the transmission for several hours, the clients contended
the server. As some clients stopped, the others begin to transmit.
For make worse server performance I also introduced a loop inside the
receive routine like this:
for i: = 0 to 20 do
  Sleep (0);

I believe that the behavior of the server is correct.

In a second test, however, have meant that the server performs the
routing of packets it receives to other clients.
In this case, I make sure that only few clients transmit data (max 6),
while all receive.

The result I get in this scenario is that clients that stops to trasmit,
will not start more.

The behavior gets worse if data are routed also to the socket from which
the data are coming (in this case the CPU is much higher).
The code I use on OnDataAvailable is:
for i: = 0 to fSS.ClientCount-1 do
begin
  / / If fSS.Client [i]  TWSocketClient (Sender) then
  begin
if fSS.Client [i]. State = wsConnected then
  fSS.Client [i]. Send (fRxData, lSize)
  end;
end;
   

I would figure out what the best way to route packets.
What I like is that even in this case, clients contended the server
without stalling.

Thanks for the help

-- 
Ing. Emanuele Bizzarri
Software Development Department
e-works s.r.l.
41011 - Campogalliano - Modena - Italy 
tel. +39 059 2929081 int. 23
fax +39 059 2925035

e-mail: e.bizza...@e-works.it - http://www.e-works.it
-
La presente comunicazione, che potrebbe contenere informazioni riservate e/o 
protette da segreto professionale, è indirizzata esclusivamente ai destinatari 
della medesima qui indicati. Le opinioni, le conclusioni e le altre 
informazioni qui contenute, che non siano relative alla nostra attività 
caratteristica, devono essere considerate come non inviate né avvalorate da 
noi. Tutti i pareri e le informazioni qui contenuti sono soggetti ai termini ed 
alle condizioni previsti dagli accordi che regolano il nostro rapporto con il 
cliente. Nel caso in cui abbiate ricevuto per errore la presente comunicazione, 
vogliate cortesemente darcene immediata notizia, rispondendo a questo stesso 
indirizzo di e-mail, e poi procedere alla cancellazione di questo messaggio dal 
Vostro sistema. E' strettamente proibito e potrebbe essere fonte di violazione 
di legge qualsiasi uso, comunicazione, copia o diffusione dei contenuti di 
questa comunicazione da parte di chi la abbia ricevuta per errore o in 
violazione degli scopi della presente. 
-
This communication, that may contain confidential and/or legally privileged 
information, is intended solely for the use of the intended addressees. 
Opinions, conclusions and other information contained in this message, that do 
not relate to the official business of this firm, shall be considered as not 
given or endorsed by it. Every opinion or advice contained in this 
communication is subject to the terms and conditions provided by the agreement 
governing the engagement with such a client. If you have received this 
communication in error, please notify us immediately by responding to this 
email and then delete it from your system. Any use, disclosure, copying or 
distribution of the contents of this communication by a not-intended recipient 
or in violation of the purposes of this communication is strictly prohibited 
and may be unlawful.


--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] best way for packet routing

2012-02-27 Thread François Piette
 For this I configured each client to send about 1000 packets per second of
4 bytes (about 32Kbps).

Your bps computation is wrong. You send 4 data bytes, the actual packets on
the network are much larger (something like 10 times) ! Have a lokk there:
http://sd.wareonearth.com/~phil/net/overhead/

You should avoid transmitting such small packet. It is better to aggregate
small packets into larger ones.

   fSS.Client [i]. Send (fRxData, lSize)

Add a try/except block around that line.

--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be


--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be