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