mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 13:53:31 +01:00
Fix a couple of smaller issues with gathering statistics.
- Avoid memmoving 0 bytes which might lead to compiler warnings. - Don't require relays to be entry node AND bridge at the same to time to record clients. - Fix a memory leak when writing dirreq-stats. - Don't say in the stats files that measurement intervals are twice as long as they really are. - Reduce minimum observation time for requests to 12 hours, or we might never record usage. - Clear exit stats correctly after writing them, or we accumulate old stats over time. - Reset interval start for buffer stats, too.
This commit is contained in:
parent
52fa4f6428
commit
457bebe01a
@ -5,6 +5,9 @@ Changes in version 0.2.2.4-alpha - 2009-??-??
|
|||||||
code, and so on. The unit test code has moved to its own
|
code, and so on. The unit test code has moved to its own
|
||||||
subdirectory, and has been split into multiple modules.
|
subdirectory, and has been split into multiple modules.
|
||||||
|
|
||||||
|
o Minor bugfixes:
|
||||||
|
- Fix a couple of smaller issues with gathering statistics. Bugfixes
|
||||||
|
on 0.2.2.1-alpha.
|
||||||
|
|
||||||
Changes in version 0.2.2.3-alpha - 2009-09-23
|
Changes in version 0.2.2.3-alpha - 2009-09-23
|
||||||
o Major bugfixes:
|
o Major bugfixes:
|
||||||
|
@ -370,10 +370,12 @@ static void
|
|||||||
rotate_request_period(void)
|
rotate_request_period(void)
|
||||||
{
|
{
|
||||||
SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
|
SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
|
||||||
|
#if REQUEST_HIST_LEN > 1
|
||||||
memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
|
memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
|
||||||
sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
|
sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
|
||||||
memmove(&c->n_v3_ns_requests[0], &c->n_v3_ns_requests[1],
|
memmove(&c->n_v3_ns_requests[0], &c->n_v3_ns_requests[1],
|
||||||
sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
|
sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
|
||||||
|
#endif
|
||||||
c->n_v2_ns_requests[REQUEST_HIST_LEN-1] = 0;
|
c->n_v2_ns_requests[REQUEST_HIST_LEN-1] = 0;
|
||||||
c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
|
c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
|
||||||
});
|
});
|
||||||
@ -393,7 +395,7 @@ geoip_note_client_seen(geoip_client_action_t action,
|
|||||||
clientmap_entry_t lookup, *ent;
|
clientmap_entry_t lookup, *ent;
|
||||||
if (action == GEOIP_CLIENT_CONNECT) {
|
if (action == GEOIP_CLIENT_CONNECT) {
|
||||||
/* Only remember statistics as entry guard or as bridge. */
|
/* Only remember statistics as entry guard or as bridge. */
|
||||||
if (!options->EntryStatistics ||
|
if (!options->EntryStatistics &&
|
||||||
(!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
|
(!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
|
||||||
return;
|
return;
|
||||||
/* Did we recently switch from bridge to relay or back? */
|
/* Did we recently switch from bridge to relay or back? */
|
||||||
@ -1009,6 +1011,8 @@ geoip_dirreq_stats_write(time_t now)
|
|||||||
if (fprintf(out, "dirreq-v3-reqs %s\ndirreq-v2-reqs %s\n",
|
if (fprintf(out, "dirreq-v3-reqs %s\ndirreq-v2-reqs %s\n",
|
||||||
data_v3 ? data_v3 : "", data_v2 ? data_v2 : "") < 0)
|
data_v3 ? data_v3 : "", data_v2 ? data_v2 : "") < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
tor_free(data_v2);
|
||||||
|
tor_free(data_v3);
|
||||||
#define RESPONSE_GRANULARITY 8
|
#define RESPONSE_GRANULARITY 8
|
||||||
for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
|
for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
|
||||||
ns_v2_responses[i] = round_uint32_to_next_multiple_of(
|
ns_v2_responses[i] = round_uint32_to_next_multiple_of(
|
||||||
|
@ -981,7 +981,6 @@ run_scheduled_events(time_t now)
|
|||||||
time_to_write_stats_files = now + WRITE_STATS_INTERVAL;
|
time_to_write_stats_files = now + WRITE_STATS_INTERVAL;
|
||||||
} else {
|
} else {
|
||||||
/* Write stats to disk. */
|
/* Write stats to disk. */
|
||||||
time_to_write_stats_files += WRITE_STATS_INTERVAL;
|
|
||||||
if (options->CellStatistics)
|
if (options->CellStatistics)
|
||||||
rep_hist_buffer_stats_write(time_to_write_stats_files);
|
rep_hist_buffer_stats_write(time_to_write_stats_files);
|
||||||
if (options->DirReqStatistics)
|
if (options->DirReqStatistics)
|
||||||
@ -990,6 +989,7 @@ run_scheduled_events(time_t now)
|
|||||||
geoip_entry_stats_write(time_to_write_stats_files);
|
geoip_entry_stats_write(time_to_write_stats_files);
|
||||||
if (options->ExitPortStatistics)
|
if (options->ExitPortStatistics)
|
||||||
rep_hist_exit_stats_write(time_to_write_stats_files);
|
rep_hist_exit_stats_write(time_to_write_stats_files);
|
||||||
|
time_to_write_stats_files += WRITE_STATS_INTERVAL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Never write stats to disk */
|
/* Never write stats to disk */
|
||||||
|
@ -3867,7 +3867,7 @@ int dnsserv_launch_request(const char *name, int is_reverse);
|
|||||||
#define DIR_ENTRY_RECORD_USAGE_RETAIN_IPS (24*60*60)
|
#define DIR_ENTRY_RECORD_USAGE_RETAIN_IPS (24*60*60)
|
||||||
/** How long do we have to have observed per-country request history before
|
/** How long do we have to have observed per-country request history before
|
||||||
* we are willing to talk about it? */
|
* we are willing to talk about it? */
|
||||||
#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (24*60*60)
|
#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (12*60*60)
|
||||||
|
|
||||||
#ifdef GEOIP_PRIVATE
|
#ifdef GEOIP_PRIVATE
|
||||||
int geoip_parse_entry(const char *line);
|
int geoip_parse_entry(const char *line);
|
||||||
|
@ -1461,9 +1461,9 @@ rep_hist_exit_stats_write(time_t now)
|
|||||||
comma ? "," : "", other_streams)<0)
|
comma ? "," : "", other_streams)<0)
|
||||||
goto done;
|
goto done;
|
||||||
/* Reset counters */
|
/* Reset counters */
|
||||||
memset(exit_bytes_read, 0, sizeof(exit_bytes_read));
|
memset(exit_bytes_read, 0, EXIT_STATS_NUM_PORTS * sizeof(uint64_t));
|
||||||
memset(exit_bytes_written, 0, sizeof(exit_bytes_written));
|
memset(exit_bytes_written, 0, EXIT_STATS_NUM_PORTS * sizeof(uint64_t));
|
||||||
memset(exit_streams, 0, sizeof(exit_streams));
|
memset(exit_streams, 0, EXIT_STATS_NUM_PORTS * sizeof(uint32_t));
|
||||||
start_of_exit_stats_interval = now;
|
start_of_exit_stats_interval = now;
|
||||||
|
|
||||||
if (open_file)
|
if (open_file)
|
||||||
@ -2771,6 +2771,7 @@ rep_hist_buffer_stats_write(time_t now)
|
|||||||
goto done;
|
goto done;
|
||||||
finish_writing_to_file(open_file);
|
finish_writing_to_file(open_file);
|
||||||
open_file = NULL;
|
open_file = NULL;
|
||||||
|
start_of_buffer_stats_interval = now;
|
||||||
done:
|
done:
|
||||||
if (open_file)
|
if (open_file)
|
||||||
abort_writing_to_file(open_file);
|
abort_writing_to_file(open_file);
|
||||||
|
Loading…
Reference in New Issue
Block a user