Hi,
                We have a case where using boost asio is causing us a huge 
performance penalty. I pulled the client/server example code from the boost 
website (modified to pass more data) and found that when I wrapped the server 
using DMTCP, I saw at least a 100x slowdown. No matter what the timeout given 
by the original call to epoll_wait, we always call _real_epoll_wait with 1000.

I think the code should maybe do something like this:

1)      If timeout >= 1000, use it in sets of 1000

2)      If timeout < 1000 && timeout >= 0, use the given timeout

3)      If timeout < 0, then ...

a.       Use a low number like 5 or 10, but this might result in excessive 
calls to _real_epoll_wait

b.      Use an incrementing counter for timeout which caps out at 100

In my case, both a and b worked out well for me bringing performance back to 
pretty much normal (aka without dmtcp). Of course, real implementation of it is 
up to however you see it done best. I saw this problem on 1.2.6 and on the 
trunk as of several months ago. I saw the latest trunk is significantly 
reorganized, but I've not tried it with the latest trunk (though the code in 
eventwrappers.cpp is still the same).

Joshua Louie
------------------------------------------------------------------------------
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester  
Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the  
endpoint security space. For insight on selecting the right partner to 
tackle endpoint security challenges, access the full report. 
http://p.sf.net/sfu/symantec-dev2dev
_______________________________________________
Dmtcp-forum mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dmtcp-forum

Reply via email to