1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stats.h"
#include <vespa/log/log.h>
LOG_SETUP(".fnet");
FNET_StatCounters::FNET_StatCounters()
: _eventLoopCnt(0),
_eventCnt(0),
_ioEventCnt(0),
_packetReadCnt(0),
_packetWriteCnt(0),
_dataReadCnt(0),
_dataWriteCnt(0)
{
}
FNET_StatCounters::~FNET_StatCounters()
{
}
void
FNET_StatCounters::Clear()
{
_eventLoopCnt = 0;
_eventCnt = 0;
_ioEventCnt = 0;
_packetReadCnt = 0;
_packetWriteCnt = 0;
_dataReadCnt = 0;
_dataWriteCnt = 0;
}
//-----------------------------------------------
FNET_Stats::FNET_Stats()
: _eventLoopRate(0),
_eventRate(0),
_ioEventRate(0),
_packetReadRate(0),
_packetWriteRate(0),
_dataReadRate(0),
_dataWriteRate(0)
{
}
FNET_Stats::~FNET_Stats()
{
}
void
FNET_Stats::Update(FNET_StatCounters *count, double secs)
{
_eventLoopRate = (float)(FNET_STATS_OLD_FACTOR * _eventLoopRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_eventLoopCnt / secs)));
_eventRate = (float)(FNET_STATS_OLD_FACTOR * _eventRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_eventCnt / secs)));
_ioEventRate = (float)(FNET_STATS_OLD_FACTOR * _ioEventRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_ioEventCnt / secs)));
_packetReadRate = (float)(FNET_STATS_OLD_FACTOR * _packetReadRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_packetReadCnt / secs)));
_packetWriteRate = (float)(FNET_STATS_OLD_FACTOR * _packetWriteRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_packetWriteCnt / secs)));
_dataReadRate = (float)(FNET_STATS_OLD_FACTOR * _dataReadRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_dataReadCnt / (1000.0 * secs))));
_dataWriteRate = (float)(FNET_STATS_OLD_FACTOR * _dataWriteRate
+ (FNET_STATS_NEW_FACTOR
* ((double)count->_dataWriteCnt / (1000.0 * secs))));
}
void
FNET_Stats::Log()
{
LOG(info, "events[/s][loop/int/io][%.1f/%.1f/%.1f] "
"packets[/s][r/w][%.1f/%.1f] "
"data[kB/s][r/w][%.2f/%.2f]",
_eventLoopRate,
_eventRate,
_ioEventRate,
_packetReadRate,
_packetWriteRate,
_dataReadRate,
_dataWriteRate);
}
|