Skip to Main Content

Infrastructure Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Performance problem using IPC message queues

807567Dec 15 2000 — edited Dec 15 2000
I don't know if this is the correct place to post my problem, if not, I apologize.

I have an application gateway and transaction distributor with the following logic:

Thread 1:
- Read a transaction request through TCP from an external client
- find out the IPC queue where the corresponding transaction server
is listening
- gettimeofday(t1) // trying to messure msgsnd performance
- msgsnd the transaction to that queue. In the message type field put
my queue key (responses queue)
- gettimeofday(t2)
Thread 2:
- msgrcv from my queue (responses queue)
- write to external client through TCP

And I have a transaction server that has the following logic:
- msgrcv from my queue (transaction server queue). Extract response
queue key from message type field
- rsp_id = msgget ( response queue key )
- process the transaction
- msgsnd ( rsp_id ... )

As stated earlier, I'M TRYING TO MESSURE MSGSND OPERATIONS ON GATEWAY
PROGRAM. I am testing the system with only one transaction server for
the moment, but there may be 10 or 15 different transaction servers,
each one listening in a different IPC message queues. Aditionaly, I
can have many instances of the same transaction server listening on
the same queue to improve the total througput of the system. The
surprissing thing is that, when there are 5 instances of my test
transaction server, msgsnd
is 10000 times slower. Is that real? Is the system behaviour correct?
What's happening?

I am testing on an SPARC ultra5 with solaris 2.6 with 256MB of RAM.
The measures I did are the following:

gateway count: 1
transaction server count: 1
transaction count: 300
sum of all msgsnd in gateway: 0.009163 seconds

gateway count: 1
transaction server count: 10
transaction count: 300
sum of all msgsnd in gateway: 14.543065 seconds

Another surprise: changing a bit in the transaction server the numbers
change a lot. The new transaction server logic:
- msgrcv from my queue (transaction server queue). Extract response
queue key from message type field
- SLEEP 0.01 seconds
- rsp_id = msgget ( response queue key )
- process the transaction
- msgsnd ( rsp_id ... )

New messure:
gateway count: 1
transaction server count: 10
transaction count: 300
sum of all msgsnd in gateway: 0.011090 seconds

Thanks, and sorry for such a long cry (post).

Juan Carlos Franzoy
Analista Programador
ATS Advanced Technology Solutions
Corrientes 880 Piso 11 Capital Federal
(C1043AAV) Argentina
Tel:+54-11-4393-4345 +54-11-6393-4345, Fax:+ 54-11-4934-7005 + 54-11-6934-7005
JCFranzoy@ats.com.ar
http://www.ats.com.ar
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 12 2001
Added on Dec 15 2000
1 comment
453 views