Aside from the fact that I should watch out for blasting too many packets at 
once, and realizing that this one "server/controller" machine has to control 
100 or more client receiving machines, with smallish packets, is there any 
advantage at all relative to the linux kernel in having more than one UDP port 
open for sending out?  I.e. say the controller has a queue of 200 packets to 
spray out, is it sufficient to use just one java thread and one UDP outbound 
port, or would it give the kernel more throughput to send out the packets with 
5 threads and 5 sockets or even more? The packets are 10 bytes and/or 140 bytes.
   On Tuesday, December 19, 2017, 2:53:30 AM PST, Alan Bateman 
<alan.bate...@oracle.com> wrote:  
 
  On 18/12/2017 21:24, Paul Marks wrote:
 
   
 
  So if the kernel decides to block, the thread will be suspended (consuming no 
CPU) until it's done. 
  However, the UDP protocol has no concept of flow control, so blasting out 
packets without any rate limit or acknowledgement mechanism is not a good idea. 
 If you saturate a link in the network, sendto() is not obligated to block, or 
provide any feedback whatsoever.    
 That's right and you'll find that most kernels will just discard the packet so 
the send never blocks.
 
 -Alan
   

Reply via email to