Reputation: 183
I'm using ACE TAO as the CORBA implementation.
I have a client application that sends messages to the server application. The servant only insert the message on a queue and responds a boolean indication of success. idl: "boolean send(in sequence msg)"
I need to improve the number messages per second that the solution can handle, so I made a simple code to check how many messages per second I can get on the Corba platform.
I make a servant with the same interface my program has, but it just increments a std::atomic<uni64_t> global counter, and I have a thread on sever that every 10 second checks the counter and prints the calculated value of messages per seconds.
std::atomic<uint64_t> cnt{0};
::CORBA::Boolean Test_i::send ( const sequence<octet> & msg)
{
++cnt;
}
I ran a server process, with no parameters, 5 threads running orb.run(), and several client process on another machine with 20 threads each calling servant send method.
No matter how many threads I run on the server or on the clients, I get max of around 60k MPS (messages per second).
I tried setting setting 'static Server_Strategy_Factory "-ORBConcurrency thread-per-connection"', and this number increased to 300k MPS, and continue increase as I start more clients.
TAO documentation (https://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/performance.html#server_scalability) states that "reactive concurrency model provides much better scalability than the thread-per-connection model"
I'm not getting it.
In the "thread-per-connection" model, I get around 100 thread created on server side, but I also get an increased number of messages per second, but using default "reactive" model, I get a limit on messages per seconds even the server have free resources, no matter the number of threads I span.
It seams like "thread-per-connection" escalates and "reactive" cannot.
I suppose I'm doing something wrong, and I should have to set an option I missed, to make reactive model escalate.
Does anyone has experience on how to configure TAO Corba to improve and make scalable the number of messages per seconds in a case like mine?
Thanks!
Upvotes: 0
Views: 36