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

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

{panel:title=Branch: [pull/13641/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/13641/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=9380652&buildTypeId=IgniteTests24Java8_RunAll]
{color:#ffffff}tcbot-analysis-comment chainBuildId=9380652 
rerunBuildIds=none{color}

> Avoid boxing of cache ID and message direct type on the cache operation hot 
> path
> --------------------------------------------------------------------------------
>
>                 Key: IGNITE-29099
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29099
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Nikita Amelchev
>            Assignee: Nikita Amelchev
>            Priority: Minor
>             Fix For: 2.19
>
>         Attachments: JmhCacheFullSyncPutBenchmark.java, 
> JmhCacheTxFullSyncBenchmark.java
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Every cache update boxes primitive map keys on its hot path:
>  * {{GridCacheSharedContext#cacheContext(int)}} and 
> {{#cacheObjectContext(int)}} look up a {{{}ConcurrentHashMap<Integer, 
> GridCacheContext>{}}}. A cache ID is a hash of the cache name, so it misses 
> the {{Integer}} cache and a new object is allocated on each call. The methods 
> are called several times per operation on every node involved.
>  * {{TcpCommunicationMetricsListener#updateMessageTypeMap}} checks a 
> {{Map<Short, String>}} for every sent and received message.
> These allocations are pure garbage produced on NIO and striped pool threads 
> of all nodes. Both lookups should use primitive keys.
> {\{JmhCacheFullSyncPutBenchmark}} (3 server nodes, FULL_SYNC, 2 backups), 
> \{{gc.alloc.rate.norm}}: allocations per operation drop by 3-4% for an ATOMIC 
> put and by 2% for a transactional put. Throughput is unchanged.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to