[
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)