Browse Source

Average function enhancement

Yann Weber 4 years ago
parent
commit
98162eb2bc
1 changed files with 16 additions and 5 deletions
  1. 16
    5
      src/stats.c

+ 16
- 5
src/stats.c View File

128
 	double r15, r10, r5, r1, rtmp;
128
 	double r15, r10, r5, r1, rtmp;
129
 	unsigned long stmp; // stores a 60s req sum
129
 	unsigned long stmp; // stores a 60s req sum
130
 	int i, cur, idx, first;
130
 	int i, cur, idx, first;
131
+	int uptime, max;
132
+
133
+	uptime = time(NULL) - PyFCGI_conf.context.uptime;
134
+	max = (uptime > len) ? len:uptime;
135
+
131
 	r15 = r10 = r5 = r1 = stmp = 0;
136
 	r15 = r10 = r5 = r1 = stmp = 0;
132
 	first = *idx_first;
137
 	first = *idx_first;
138
+
133
 	//Block interrupt/ALARM ??
139
 	//Block interrupt/ALARM ??
134
-	for(i=0; i<len; i++)
140
+	i = 0;
141
+	do
135
 	{
142
 	{
136
 		if(first != *idx_first)
143
 		if(first != *idx_first)
137
 		{
144
 		{
142
 		idx = (idx<0)?len + idx:idx;
149
 		idx = (idx<0)?len + idx:idx;
143
 		idx %= len;
150
 		idx %= len;
144
 		cur = data[idx];
151
 		cur = data[idx];
145
-		if(!i || i%60)
152
+		if((!i || i%60) && i < max-1)
146
 		{
153
 		{
147
 			stmp += cur;
154
 			stmp += cur;
155
+			i++;
148
 			continue;
156
 			continue;
149
 		}
157
 		}
150
-		rtmp = (long double)stmp / 60;
158
+		rtmp = (long double)stmp / ((max < 60)?max:60);
151
 		if(i==60) { r1 = rtmp; }
159
 		if(i==60) { r1 = rtmp; }
152
 		if(i<5*60) { r5 += rtmp; }
160
 		if(i<5*60) { r5 += rtmp; }
153
 		if(i<10*60) { r10 += rtmp; }
161
 		if(i<10*60) { r10 += rtmp; }
154
 		if(i<15*60) { r15 += rtmp; }
162
 		if(i<15*60) { r15 += rtmp; }
155
 		stmp = cur;
163
 		stmp = cur;
156
-	}
164
+		i++;
165
+	}while(i<max);
157
 	//Restore interrupt/ALARM ??
166
 	//Restore interrupt/ALARM ??
167
+	*last = data[*idx_first-1];
168
+	rtmp = max?rtmp:((double)*last);
169
+	r1 = (uptime <= 60)?rtmp:r1;
158
 	r5 /= 5;
170
 	r5 /= 5;
159
 	r10 /= 10;
171
 	r10 /= 10;
160
 	r15 /= 15;
172
 	r15 /= 15;
161
-	*last = data[*idx_first];
162
 	avgs[0] = r1;
173
 	avgs[0] = r1;
163
 	avgs[1] = r5;
174
 	avgs[1] = r5;
164
 	avgs[2] = r10;
175
 	avgs[2] = r10;

Loading…
Cancel
Save