From ae48c073f3d599de311f30070bf315085eeeaa33 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 13 Mar 2010 10:00:28 +0000 Subject: [PATCH] more stats --- src/datastore/Makefile.am | 1 + src/datastore/gnunet-service-datastore.c | 63 ++++++++++++++++++++++++ src/datastore/plugin_datastore.h | 3 +- src/datastore/plugin_datastore_sqlite.c | 4 +- 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/src/datastore/Makefile.am b/src/datastore/Makefile.am index b9d8ec38f..e572eafd0 100644 --- a/src/datastore/Makefile.am +++ b/src/datastore/Makefile.am @@ -33,6 +33,7 @@ gnunet_service_datastore_SOURCES = \ gnunet-service-datastore.c plugin_datastore.h gnunet_service_datastore_LDADD = \ $(top_builddir)/src/arm/libgnunetarm.la \ + $(top_builddir)/src/statistics/libgnunetstatistics.la \ $(top_builddir)/src/util/libgnunetutil.la \ $(GN_LIBINTL) diff --git a/src/datastore/gnunet-service-datastore.c b/src/datastore/gnunet-service-datastore.c index 06f07f474..c3370e0a5 100644 --- a/src/datastore/gnunet-service-datastore.c +++ b/src/datastore/gnunet-service-datastore.c @@ -28,6 +28,7 @@ #include "gnunet_util_lib.h" #include "gnunet_arm_service.h" #include "gnunet_protocols.h" +#include "gnunet_statistics_service.h" #include "plugin_datastore.h" #include "datastore.h" @@ -163,6 +164,12 @@ const struct GNUNET_CONFIGURATION_Handle *cfg; */ struct GNUNET_SCHEDULER_Handle *sched; +/** + * Handle for reporting statistics. + */ +static struct GNUNET_STATISTICS_Handle *stats; + + /** * Function called once the transmit operation has * either failed or succeeded. @@ -313,6 +320,10 @@ expired_processor (void *cls, "Deleting content that expired %llu ms ago\n", (unsigned long long) (now.value - expiration.value)); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# bytes expired"), + size, + GNUNET_NO); GNUNET_CONTAINER_bloomfilter_remove (filter, key); return GNUNET_NO; /* delete */ @@ -390,6 +401,10 @@ manage (void *cls, size + GNUNET_DATASTORE_ENTRY_OVERHEAD, *need); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# bytes purged (low-priority)"), + size, + GNUNET_NO); GNUNET_CONTAINER_bloomfilter_remove (filter, key); return GNUNET_NO; @@ -671,6 +686,10 @@ transmit_item (void *cls, "Transmitting `%s' message\n", "DATA"); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# results found"), + 1, + GNUNET_NO); transmit (client, &dm->header, &get_next, next_cls, GNUNET_NO); return GNUNET_OK; } @@ -897,6 +916,10 @@ handle_put (void *cls, &msg); if (GNUNET_OK == ret) { + GNUNET_STATISTICS_update (stats, + gettext_noop ("# bytes stored"), + size, + GNUNET_NO); GNUNET_CONTAINER_bloomfilter_add (filter, &dm->key); #if DEBUG_DATASTORE @@ -943,6 +966,10 @@ handle_get (void *cls, GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); return; } + GNUNET_STATISTICS_update (stats, + gettext_noop ("# GET requests received"), + 1, + GNUNET_NO); GNUNET_SERVER_client_keep (client); msg = (const struct GetMessage*) message; if ( (size == sizeof(struct GetMessage)) && @@ -956,6 +983,10 @@ handle_get (void *cls, "GET", GNUNET_h2s (&msg->key)); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# requests filtered by bloomfilter"), + 1, + GNUNET_NO); transmit_item (client, NULL, NULL, 0, NULL, 0, 0, 0, GNUNET_TIME_UNIT_ZERO_ABS, 0); @@ -991,6 +1022,10 @@ handle_update (void *cls, "Processing `%s' request\n", "UPDATE"); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# UPDATE requests received"), + 1, + GNUNET_NO); msg = (const struct UpdateMessage*) message; emsg = NULL; ret = plugin->api->update (plugin->api->cls, @@ -1020,6 +1055,10 @@ handle_get_random (void *cls, "Processing `%s' request\n", "GET_RANDOM"); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# GET RANDOM requests received"), + 1, + GNUNET_NO); GNUNET_SERVER_client_keep (client); plugin->api->iter_migration_order (plugin->api->cls, 0, @@ -1085,6 +1124,10 @@ remove_callback (void *cls, (unsigned long long) uid, "REMOVE"); #endif + GNUNET_STATISTICS_update (stats, + gettext_noop ("# bytes removed (explicit request)"), + size, + GNUNET_NO); GNUNET_CONTAINER_bloomfilter_remove (filter, key); plugin->api->next_request (next_cls, GNUNET_YES); @@ -1119,6 +1162,10 @@ handle_remove (void *cls, GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); return; } + GNUNET_STATISTICS_update (stats, + gettext_noop ("# REMOVE requests received"), + 1, + GNUNET_NO); rc = GNUNET_malloc (sizeof(struct RemoveContext)); GNUNET_SERVER_client_keep (client); rc->client = client; @@ -1256,6 +1303,11 @@ unload_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) filter = NULL; } GNUNET_ARM_stop_services (cfg, tc->sched, "statistics", NULL); + if (stats != NULL) + { + GNUNET_STATISTICS_destroy (stats, GNUNET_YES); + stats = NULL; + } } @@ -1368,6 +1420,7 @@ run (void *cls, "DATASTORE"); return; } + stats = GNUNET_STATISTICS_create (sched, "datastore", cfg); cache_size = quota / 8; /* Or should we make this an option? */ bf_size = quota / 32; /* 8 bit per entry, 1 bit per 32 kb in DB */ fn = NULL; @@ -1391,6 +1444,11 @@ run (void *cls, { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Failed to initialize bloomfilter.\n")); + if (stats != NULL) + { + GNUNET_STATISTICS_destroy (stats, GNUNET_YES); + stats = NULL; + } return; } GNUNET_ARM_start_services (cfg, sched, "statistics", NULL); @@ -1400,6 +1458,11 @@ run (void *cls, GNUNET_CONTAINER_bloomfilter_free (filter); filter = NULL; GNUNET_ARM_stop_services (cfg, sched, "statistics", NULL); + if (stats != NULL) + { + GNUNET_STATISTICS_destroy (stats, GNUNET_YES); + stats = NULL; + } return; } GNUNET_SERVER_disconnect_notify (server, &cleanup_reservations, NULL); diff --git a/src/datastore/plugin_datastore.h b/src/datastore/plugin_datastore.h index 2cebdbcd0..775a6641a 100644 --- a/src/datastore/plugin_datastore.h +++ b/src/datastore/plugin_datastore.h @@ -31,8 +31,9 @@ #define PLUGIN_DATASTORE_H #include "gnunet_configuration_lib.h" -#include "gnunet_scheduler_lib.h" #include "gnunet_datastore_service.h" +#include "gnunet_statistics_service.h" +#include "gnunet_scheduler_lib.h" /** diff --git a/src/datastore/plugin_datastore_sqlite.c b/src/datastore/plugin_datastore_sqlite.c index 60c419092..aa90859d6 100644 --- a/src/datastore/plugin_datastore_sqlite.c +++ b/src/datastore/plugin_datastore_sqlite.c @@ -1605,10 +1605,10 @@ libgnunet_plugin_datastore_sqlite_init (void *cls) memset (&plugin, 0, sizeof(struct Plugin)); plugin.env = env; plugin.statistics = GNUNET_STATISTICS_create (env->sched, - "sqlite", + "datastore-sqlite", env->cfg); plugin.stat_get = GNUNET_STATISTICS_get (plugin.statistics, - "sqlite", + "datastore-sqlite", QUOTA_STAT_NAME, GNUNET_TIME_UNIT_MINUTES, &process_stat_done, -- 2.25.1