[
https://issues.apache.org/jira/browse/IGNITE-12451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17206092#comment-17206092
]
Aleksey Plekhanov commented on IGNITE-12451:
--------------------------------------------
[~maliev], we've benchmarked by yardstick on the following configuration:
in-memory cluster, 6 servers, 3 clients (drivers), using IgnitePutAllBenchmark,
cache with 1 backup, batch size 2 and 10000:
{noformat}
CONFIGS="\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -cwd -cl -nn ${nodesNum}
-b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -wm ${wm} -bs 2 -dn
IgnitePutAllBenchmark -sn IgniteNode -ds ${ver}-atomic-putAll-bs2_iter1,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -cwd -cl -nn ${nodesNum}
-b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -wm ${wm} -bs 2 -dn
IgnitePutAllBenchmark -sn IgniteNode -ds ${ver}-atomic-putAll-bs2_iter2,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -cwd -cl -nn ${nodesNum}
-b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -wm ${wm} -bs 2 -dn
IgnitePutAllBenchmark -sn IgniteNode -ds ${ver}-atomic-putAll-bs2_iter3,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -cwd -cl -nn ${nodesNum}
-b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -wm ${wm} -bs 10000 -dn
IgnitePutAllBenchmark -sn IgniteNode -ds ${ver}-atomic-putAll-bs10000_iter1,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -cwd -cl -nn ${nodesNum}
-b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -wm ${wm} -bs 10000 -dn
IgnitePutAllBenchmark -sn IgniteNode -ds ${ver}-atomic-putAll-bs10000_iter2,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -cwd -cl -nn ${nodesNum}
-b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -wm ${wm} -bs 10000 -dn
IgnitePutAllBenchmark -sn IgniteNode -ds ${ver}-atomic-putAll-bs10000_iter3\
"
{noformat}
Results:
||Iteration||Before, -bs2||Before, -bs10000||After, -bs2||After, -bs10000||
|1| 307433 | 135,91 | 307558 | 135,95 |
|2|308135|135,64|305367|127,89|
|3|303215|134,07|309356|135,96|
|avg|306261|135,21|307427|133,27|
Average comparison:
|| ||Before||After||Compare||
|IgnitePutAllBenchmark -bs2|306261|307427|0,38%|
|IgnitePutAllBenchmark -bs10000|135,2|133,2|-1,50%|
> Introduce deadlock detection for cache entry reentrant locks
> ------------------------------------------------------------
>
> Key: IGNITE-12451
> URL: https://issues.apache.org/jira/browse/IGNITE-12451
> Project: Ignite
> Issue Type: Improvement
> Affects Versions: 2.7.6
> Reporter: Ivan Rakov
> Assignee: Mirza Aliev
> Priority: Major
> Fix For: 2.10
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Aside from IGNITE-12365, we still have possible threat of cache-entry-level
> deadlock in case of careless usage of JCache mass operations (putAll,
> removeAll):
> 1. If two different user threads will perform putAll on the same two keys in
> reverse order (primary node for which is the same), there's a chance that
> sys-stripe threads will be deadlocked.
> 2. Even without direct contract violation from user side, HashMap can be
> passed as argument for putAll. Even if user threads have called mass
> operations with two keys in the same order, HashMap iteration order is not
> strictly defined, which may cause the same deadlock.
> Local deadlock detection should mitigate this issue. We can create a wrapper
> for ReentrantLock with logic that performs cycle detection in wait-for graph
> in case we are waiting for lock acquisition for too long. Exception will be
> thrown from one of the threads in such case, failing user operation, but
> letting the system make progress.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)