[ovs-dev] [PATCH 2/2] ovsdb: integrate perf-counter infrastructure into ovsdb-server

Ethan Jackson ethan at nicira.com
Mon Apr 13 21:52:27 UTC 2015


Acked-by: Ethan Jackson <ethan at nicira.com>

Any reason not to just add some sampling points by default?  Wouldn't
it be a useful debugging mechanism in the field?

Also btw, why is this better than perf?

Ethan

On Sat, Mar 21, 2015 at 12:00 AM, Andy Zhou <azhou at nicira.com> wrote:
> This integration also adds two commands:
>
> ovsdb-server/perf-counters-show --  show all counters
> ovsdb-server/perf-counters-clear -- clear all counters
>
> There is no pre-configured sample points. A programmer needs to
> added sampling point by changing the source code. However he
> does not need to worry about infrastructures such as initialization
> or cleaning up memory when ovsdb-server exits.
>
> Signed-off-by: Andy Zhou <azhou at nicira.com>
> ---
>  ovsdb/ovsdb-server.c | 31 ++++++++++++++++++++++++++++++-
>  1 file changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
> index deb2b8b..cd13b0d 100644
> --- a/ovsdb/ovsdb-server.c
> +++ b/ovsdb/ovsdb-server.c
> @@ -53,6 +53,7 @@
>  #include "trigger.h"
>  #include "util.h"
>  #include "unixctl.h"
> +#include "perf-counter.h"
>  #include "openvswitch/vlog.h"
>
>  VLOG_DEFINE_THIS_MODULE(ovsdb_server);
> @@ -76,6 +77,8 @@ static bool bootstrap_ca_cert;
>  static unixctl_cb_func ovsdb_server_exit;
>  static unixctl_cb_func ovsdb_server_compact;
>  static unixctl_cb_func ovsdb_server_reconnect;
> +static unixctl_cb_func ovsdb_server_perf_counters_clear;
> +static unixctl_cb_func ovsdb_server_perf_counters_show;
>
>  struct server_config {
>      struct sset *remotes;
> @@ -292,6 +295,8 @@ main(int argc, char *argv[])
>
>      daemonize_complete();
>
> +    perf_counters_init();
> +
>      if (!run_command) {
>          /* ovsdb-server is usually a long-running process, in which case it
>           * makes plenty of sense to log the version, but --run makes
> @@ -318,6 +323,10 @@ main(int argc, char *argv[])
>                               ovsdb_server_remove_database, &server_config);
>      unixctl_command_register("ovsdb-server/list-dbs", "", 0, 0,
>                               ovsdb_server_list_databases, &all_dbs);
> +    unixctl_command_register("ovsdb-server/perf-counters-show", "", 0, 0,
> +                             ovsdb_server_perf_counters_show, NULL);
> +    unixctl_command_register("ovsdb-server/perf-counters-clear", "", 0, 0,
> +                             ovsdb_server_perf_counters_clear, NULL);
>
>      main_loop(jsonrpc, &all_dbs, unixctl, &remotes, run_process, &exiting);
>
> @@ -338,7 +347,7 @@ main(int argc, char *argv[])
>                        run_command, process_status_msg(status));
>          }
>      }
> -
> +    perf_counters_destroy();
>      service_stop();
>      return 0;
>  }
> @@ -1022,6 +1031,26 @@ ovsdb_server_exit(struct unixctl_conn *conn, int argc OVS_UNUSED,
>  }
>
>  static void
> +ovsdb_server_perf_counters_show(struct unixctl_conn *conn, int argc OVS_UNUSED,
> +                                const char *argv[] OVS_UNUSED,
> +                                void *arg_ OVS_UNUSED)
> +{
> +    char *s = perf_counters_to_string();
> +
> +    unixctl_command_reply(conn, s);
> +    free(s);
> +}
> +
> +static void
> +ovsdb_server_perf_counters_clear(struct unixctl_conn *conn, int argc OVS_UNUSED,
> +                                 const char *argv[] OVS_UNUSED,
> +                                 void *arg_ OVS_UNUSED)
> +{
> +    perf_counters_clear();
> +    unixctl_command_reply(conn, NULL);
> +}
> +
> +static void
>  ovsdb_server_compact(struct unixctl_conn *conn, int argc,
>                       const char *argv[], void *dbs_)
>  {
> --
> 1.9.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list