-
Given that recently I was working with statistics code and this was rather small change I've decided to resolve this one as well and include it in origin/release (i.e. 7.1.0).
Processed packets thread
is now presented as an array and for threads IN/OUT we also calculate standard deviation (and list outliers as thread name:value), the result looks like this:message-router/Processed packets thread IN=[2, 5, 0, 0, 1, 0, 1, 0, 1, 0, 2570, 0, 5019, 0, 2508, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 4, 4, 1, 1] message-router/Processed packets thread OUT=[12] message-router/Processed packets thread (outliers) IN=mean: 316.0, deviation: 1044.1141131361073, outliers: [in_10-message-router:2570, in_12-message-router:5019, in_14-message-router:2508] message-router/Processed packets thread (outliers) OUT=mean: 12.0, deviation: 0.0 … c2s/Processed packets thread IN=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] c2s/Processed packets thread OUT=[3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] c2s/Processed packets thread (outliers) IN=mean: 79.0, deviation: 441.76743740343744, outliers: [in_10-c2s:2539] c2s/Processed packets thread (outliers) OUT=mean: 1.0, deviation: 5.75, outliers: [out_10-c2s:33] … pubsub/Processed packets thread IN=[246, 231, 210, 237, 223, 227, 224, 251, 267, 233, 240, 200, 219, 250, 243, 233, 243, 218, 209, 235, 249, 236, 233, 228, 236, 247, 209, 249, 259, 250, 251, 223] pubsub/Processed packets thread OUT=[239, 233, 230, 245, 220, 201, 217, 241, 260, 225, 234, 211, 244, 249, 225, 249, 251, 218, 216, 261, 235, 222, 227, 239, 237, 242, 202, 265, 243, 257, 234, 237] pubsub/Processed packets thread (outliers) IN=mean: 234.0, deviation: 15.496975511369952, outliers: [in_8-pubsub:267, in_11-pubsub:200] pubsub/Processed packets thread (outliers) OUT=mean: 234.0, deviation: 16.00488206766923, outliers: [out_5-pubsub:201] … sess-man/Processed packets thread IN=[1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 0, 2501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0] sess-man/Processed packets thread OUT=[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0] sess-man/Processed packets thread (outliers) IN=mean: 19.0, deviation: 220.17743200087514, outliers: [in_108-sess-man:2501] sess-man/Processed packets thread (outliers) OUT=mean: 20.0, deviation: 223.34862743030234, outliers: [out_106-sess-man:2537]
Btw. I've noticed that eventbus is single-threaded:
eventbus/Processed packets thread IN=[1] eventbus/Processed packets thread OUT=[1] eventbus/Processed packets thread (outliers) IN=mean: 1.0, deviation: 0.0 eventbus/Processed packets thread (outliers) OUT=mean: 1.0, deviation: 0.0
Type |
New Feature
|
Priority |
Normal
|
Assignee | |
RedmineID |
4504
|
Version |
tigase-server-7.1.0
|
Spent time |
0
|
Issue Votes (0)
Watchers (0)
While looking at the statistics (and sizes of them) I've noticed lot's of similar entries: @cl-comp/Processed packets thread…@. This is especially noticeable with higher number of CPU/cores. With only 4 of them we get roughly 2x16 entries for majority of components, but 2x32 entries for cl-comp, and 2x64 for sess-man (see below). With 16 cores this grows even more - uses more memory, size on disk and actually makes it more difficult to look at the statistics.
I think that turning it into array (like @cl-comp/Last day disconnects@) would be a good idea:
In addition, the biggest advantage of this information is to know whether the load is spread evenly across the threads, so we could add additional statistic with information about the distribution and/or if there are any outliers.
Thoughts?