[ 
https://issues.apache.org/jira/browse/IGNITE-29275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18142986#comment-18142986
 ] 

Ignite TC Bot commented on IGNITE-29275:
----------------------------------------

{panel:title=Branch: [pull/13815/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/13815/head] Base: [master] : No new tests 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=9488399&buildTypeId=IgniteTests24Java8_RunAll]
{color:#ffffff}tcbot-analysis-comment chainBuildId=9488399 
rerunBuildIds=9488867,9488869,9488871{color}

> Remove unused end time tracking from cache futures
> --------------------------------------------------
>
>                 Key: IGNITE-29275
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29275
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Nikita Amelchev
>            Assignee: Nikita Amelchev
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Every cache future (get, atomic update, lock, transaction prepare and finish) 
> records its completion time in a volatile field on {{{}onDone{}}}, but 
> {{{}GridCacheFuture.duration(){}}}, the only reader of that field, has no 
> callers. The field enlarges every future instance and adds a volatile write 
> to every completion on the hot path.
> h3. Benchmarks
> JMH, existing `JmhCacheBenchmark` (`get`, `put`) and `JmhCacheLocksBenchmark` 
> (`cacheLock`): client + 2 server nodes
> in one JVM, `backups=1`, `FULL_SYNC`, 4 threads. Allocation is 
> `gc.alloc.rate.norm` over all nodes, measured with C1
> (`-XX:TieredStopAtLevel=1`) where it is deterministic; 2 forks per variant in 
> alternating order.
> |Operation|Before, B/op|After, B/op|Diff, B/op|
> |—|—|—|—|
> |`get`, ATOMIC|3167|3159|−8|
> |`put`, ATOMIC|5752|5734|−18|
> |`lock()` + `unlock()`, TRANSACTIONAL|14732|14716|−16|
> |`put`, TRANSACTIONAL (implicit tx)|21344|21307|−37|
> Each cache future taking part in the operation loses 8 bytes (e.g. 
> `GridPartitionedSingleGetFuture` 96 → 88,
> `GridNearLockFuture` 160 → 152 by JOL). With C2 the same −8 / −15 B/op are 
> seen for `get` / atomic `put` in forks with
> the same JIT mode, while for transactional `put` and locks the fork-to-fork 
> variance hides the difference.
> Throughput didn't change measurably: patched forks stay within the spread of 
> the base ones.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to