In the Ice manual AMI is well explained. You make a call with AMI and whether it has been sent or queued to be sent to the server your call returns. The true or false being sent, or queued to be sent.
a) Now the server gets the request, consumes a communicator thread/adapter thread. (The number of these available set by ThreadPool.Server.Size). Processes on that thread and then returns the value.
Back on your client the ThreadPool.Client.Size kicks in and this determine the number of async responses that can be handled.
However I don't quite get AMD.
b) The request arrives from a client using an Ice internal thread, is placed on a queue, when Server side thread is free the request is processed. Is the number of threads available for AMD still set by ThreadPool.Server.Size.
So the only difference between a and b server without AMD and one with AMD is that the thread that is reading off the underlying transport is not the one that ends up processing the request. So the server scales better since it can build up this queue of pending work.
Would really appreciate a comparison of what happens in a server without AMD and what happens in one with. Does ThreadPool.Server.Size only have an affect when AMD is selected.

Reply With Quote
