Cross mail from http://forums.oracle.com/forums/thread.jspa?threadID=2195025&tstart=0
There is a communications application server (JAIN SLEE) and an application running on it.
The application receives a message from the network, processes it, and sends a response back to the network.
The requirement for request / response delay is 250 ms for 95% of calls and 3,000 ms for 99.999% of calls.
We use EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap, 1 instance. The following methods are processed for one call (one call - several messages):
"put", "get", "get", "get", then in 180 seconds "remove".
There are 4 threads that call these methods.
(A short note: working with ConcurrentHashMap is not the only action. There are also many other actions for one network message: parsing protocol messages, querying the database, writing SDR to a file, creating short live and long live objects.)
When we go from EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap to java.util.concurrent.ConcurrentHashMap, we see a performance drop from 1400 to 800 calls per second.
The first bottleneck for the last 800 calls per second is insufficient latency for the above requirement.
This performance degradation is reproduced on hosts with the following processor:
- 2 CPU x Quad-Core AMD Opteron 2356 2312 MHz, a total of 8 HW streams,
- 2 Processor x Intel Xeon E5410 2.33 GHz, 8 HW overall.
It does not play on the X5570 processor (Intel Xeon Nehalem X5570 2.93 GHz, 16 HW streams in total).
Has anyone encountered similar problems? How to solve them?
source share