Hi,
I have measured the performance of Openais messaging with the primitive
client/server setup:
1. Server - receives the message from client and sends it back:
...
while(1){
result = saMsgMessageGet (srv_queue_handle, &msg_a,
&msg_time, &id, SA_TIME_ONE_MINUTE);
if (result != SA_AIS_OK) {
printf ("Could not receive message %d\n", result);
saMsgQueueClose (srv_queue_handle);
saMsgFinalize (handle);
exit (1);
}
result = saMsgMessageReply(handle, &msg_a, &id,
SA_TIME_ONE_SECOND);
if (result != SA_AIS_OK) {
printf ("Could not send message %d\n", result);
saMsgQueueClose (srv_queue_handle);
saMsgFinalize (handle);
exit (1);
}
}
...
2. Client - sends/receives message to/from server:
...
gettimeofday(&t0, NULL);
while(i++<1000){
result = saMsgMessageSendReceive(handle, &srv_queue_name,
&msg_a, &msg_a, 0, SA_TIME_ONE_SECOND);
if (result != SA_AIS_OK) {
printf ("TEST-1: Could not sent message to srv_queue
%d\n", result);
saMsgQueueClose (clt_queue_handle);
saMsgFinalize (handle);
exit (1);
}
}
gettimeofday(&t1, NULL);
temps = t1.tv_sec - t0.tv_sec;
if(temps && (t0.tv_usec > t1.tv_usec)){
tempm = 1000000 + t1.tv_usec - t0.tv_usec;
temps = temps - 1;
}
else{
tempm = t1.tv_usec - t0.tv_usec;
}
printf("TEST-1: Total %d send/recieve = %dsec %dµs\n", i, temps,
tempm);
...
Test between two host machines: is ~18sec for 1000 messages.
Two processes on same host: is ~33sec (!) for 1000 messages.
Each message has 32 bytes size.
Both results are looking too slow for messaging.
Inter-process testing even slowly that inter-host!
What wrong with my test?How to improve the performance?
Version:
corosync-1.2.1
openais-1.1.2
System:
Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz
Linux debian 2.6.26-2-686
Thanks in advance,
Sergey Tumaev.
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais