Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to optimize my distributed application's queueing and buffering of network messages for performance?
    text
    copied!<p>In most cases application needs to use a few machines in order to perform on the required scale. The main application (master) connects to other machines and executes the worker processes. The machines are expected to be connected to a network, but the physical connection might be through pure ethernet and might be separate and go over the internet. During the execution many messages are sent between the master and each worker process. The problem is that many different parts of our code are allowed to send messages and also customized user code can. It is impossible to predict the messages timing size and frequency. The user is expected to connect a strong enough network for his needs, but we're trying to optimize performance as much as possible.</p> <p>All parts of the application would use the same communication module API to send the messages.</p> <p>My question: Are there network/internet performance issues with sending too many separate small messages frequently? In this case, does my communication module need to collect bunches of messages together and send them in single bigger ones? Does it need to break huge messages to smaller ones? What are the exact frequency and sizes that could cause performance problems (I mean network/internet performance)? Or does the OS/hardware do all this automatically for me? If the module has to do it, are there any c++ libraries that could help me with that? (preferably open source allowed for commercial use) Collecting messages as such will ofcourse cause most messages not to be sent immediately when the process asks but a bit later. I can require any code in my application that sends a message to specify how much the message can be delayed (without disruptng his requirements). Most messages wouldn't mind being delayed even a few seconds.</p> <p>Apparently I don't have much background in network implementations, but I know I should clarify that with the API I expect to use, I need every message to succeed. If it fails I just stop the application and notify the user. There is no recovery possible.</p>
 

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