SNJ
SNJ

Reputation: 183

TAO Corba throughput

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

Answers (0)

Related Questions