[ 
https://issues.apache.org/jira/browse/IGNITE-27808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vyacheslav Koptilin updated IGNITE-27808:
-----------------------------------------
    Labels: ignite-3  (was: )

> Implement metrics agregation for striped executors
> --------------------------------------------------
>
>                 Key: IGNITE-27808
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27808
>             Project: Ignite
>          Issue Type: Improvement
>          Components: metrics ai3
>    Affects Versions: 3.1
>            Reporter: Ilya Korol
>            Assignee: Vyacheslav Koptilin
>            Priority: Major
>              Labels: ignite-3
>
> Currently we register each stripe of StripedExecutor implementation in 
> metrics  subsytem. As a result each stripe expose following metrics:
> {code:java}
> stripe.0.PoolSize=0
> stripe.0.QueueSize=0
> stripe.0.TaskCount=0
> stripe.1.ActiveCount=0
> stripe.1.CompletedTaskCount=0
> stripe.1.CorePoolSize=1
> stripe.1.KeepAliveTime=0
> stripe.1.LargestPoolSize=0 
> stripe.1.MaximumPoolSize=1 {code}
> It seems like major part of them are meaningless since each stripe is 
> single-thread executor:
> {code:java}
> CorePoolSize            # Static setting. Can't be changed
> MaximumPoolSize         # No use in realtime and for stripe it always equal 
> to 1
> PoolSize                # In case of Stripped it's either 0 or 1, and we can 
> infer it from other metric like ActiveCount
> LargestPoolSize         # In case of given stripe it can be only 1 - no real 
> use
> KeepAliveTime           # Static setting. AFAICS it always 0 {code}
> It looks like we can safely remove them.
>  
> At the same time due to nature of StripedExecutors it worth to implement 
> aggregated metrics that will embrace all stripes for given executor. Consider 
> the metrics dump that AI2 prints to logs periodically:
> {code:java}
> ^-- Public thread pool [active=0, idle=0, qSize=0]
> ^-- System thread pool [active=0, idle=22, qSize=0]
> ^-- Striped thread pool [active=0, idle=22, qSize=0] {code}
> So aggregated form like this allows us to make conclusion about load 
> patterns. For instance there can be a situation when only particular stripe 
> in Stripped pools is overloaded, in this case we'll see that there still few 
> idle threads despite {{{}qSize > 0{}}}.



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

Reply via email to