[
https://jira.jboss.org/jira/browse/JGRP-1090?page=com.atlassian.jira.plug...
]
Bela Ban commented on JGRP-1090:
--------------------------------
I tried assigning execution of individual messages of a bundle to a thread (OOB or
regular) - performance dropped ca 20-30% !
I have to investigate further, but I believe this is due to increased context switching
(vmstat should show that).
I also tried MSG_LIST, and here I got a new (albeit small) perf improvement ! Small
probably because the receiver isn't doing anything with the messages, but just
increments a counter. So the above scenario of messages ahead of the queue being processed
by the same thread blocking doesn't happen.
If we added a sleep in the receiver, we should see bigger differences...
Bundle OOB messages
-------------------
Key: JGRP-1090
URL:
https://jira.jboss.org/jira/browse/JGRP-1090
Project: JGroups
Issue Type: Task
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.10
When message bundling is enabled, we queue *regular* messages until max_bundle_size has
been reached or max_bundle_timeout has exceeded.
The problem is that - when sending OOB (as opposed to regular) messages - they're
*not* queued. This means the OOB message is possibly received *before* the regular
messages and thus causes retransmission !
E.g. we send regular message 1-10, then OOB message 11.
Say 1-3 are sent immediately (because the bundle timeout kicked in or the size was
exceeded). Messages 4-10 are queued and sent later. Message 11 is sent immediately.
On the receiver side, message reception could be for example: 1-3, 11, 4-10
When OOB message 11 is received, the receiver asks for retransmission of messages 4-10 !
This is not incorrect, but causes a lot of unneeded retransmissions !
public static void main(String[] args) throws Exception {
JChannel c1=new JChannel("/home/bela/fast.xml");
c1.connect("bla3");
JChannel c2=new JChannel("/home/bela/fast.xml");
c2.connect("bla3");
for(int i=1; i <= 20; i++) {
c1.send(null, null, "hello-" + i);
}
Message oob_msg=new Message(null, null, "oob msg");
oob_msg.setFlag(Message.OOB);
c1.send(oob_msg);
Util.sleep(20000);
Util.close(c2, c1);
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira