Note that there are some explanatory texts on larger screens.

plurals
  1. POLow Latency Networking Technqiues and Silver-Bullets
    primarykey
    data
    text
    <p>After some basic googling of low-latency networking I've come up with the following list of things programmers and system designers should consider when embarking on low latency networking:</p> <ol> <li><p>The design of the hardware, systems and protocols have to be considered together</p></li> <li><p>Develop protocols using UDP instead of TCP and implement simple ack-nak, resend logic at the application level</p></li> <li><p>Reduce the number of context switches (preferably to zero) for the process or thread that consumes and packetizes data off the wire</p></li> <li><p>Use the best selector for the OS (select, kqueue, epoll etc)</p></li> <li><p>Use good quality NICs and Switches with large amounts of on-board buffer (fifo)</p></li> <li><p>Use multiple NICs, specifically for down-stream and up-stream data flows</p></li> <li><p>Reduce the number of IRQs being generated by other devices or software (in short remove them if they are not required) </p></li> <li><p>Reduce the usage of mutexes and conditions. Instead where possible use Lock-Free programming techniques. Make use of the architecture's CAS capabilities. (<em>Lock-Free containers</em>)</p></li> <li><p>Consider single threaded over multi-threaded designs - context switches are very expensive.</p></li> <li><p>Understand and properly utilize your architecture's cache system (L1/L2, RAM etc)</p></li> <li><p>Prefer complete control over memory management, rather than delegating to Garbage Collectors</p></li> <li><p>Use good quality cables, keep the cables as short as possible, reduce the number of twists and curls</p></li> </ol> <p><strong>My question:</strong> I was wondering what other things fellow SOers believe are important when embarking on low latency networking.</p> <p><em>Feel free to critique any of the above points</em></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload