Signed-off-by: Andy Zhou <az...@ovn.org> --- ovsdb/jsonrpc-server.c | 9 +++++++++ ovsdb/jsonrpc-server.h | 4 ++++ ovsdb/ovsdb-server.1.in | 5 +++++ ovsdb/ovsdb-server.c | 18 ++++++++++++++++++ 4 files changed, 36 insertions(+)
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index 09b89b2..e117b62 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -41,6 +41,7 @@ #include "timeval.h" #include "transaction.h" #include "trigger.h" +#include "util.h" #include "openvswitch/vlog.h" VLOG_DEFINE_THIS_MODULE(ovsdb_jsonrpc_server); @@ -370,6 +371,14 @@ ovsdb_jsonrpc_server_destroy(struct ovsdb_jsonrpc_server *svr) free(svr); } +void +ovsdb_jsonrpc_server_get_threads_info(struct ds *ds, + struct ovsdb_jsonrpc_server *svr) +{ + ds_put_format(ds, "Max number of threads: %"PRIuSIZE",", svr->n_max_threads); + ds_put_format(ds, "Threads in use: %"PRIuSIZE, svr->n_active_threads); +} + struct ovsdb_jsonrpc_options * ovsdb_jsonrpc_default_options(const char *target) { diff --git a/ovsdb/jsonrpc-server.h b/ovsdb/jsonrpc-server.h index 3be34e7..04d2813 100644 --- a/ovsdb/jsonrpc-server.h +++ b/ovsdb/jsonrpc-server.h @@ -22,6 +22,7 @@ struct ovsdb; struct shash; struct simap; +struct ds; struct ovsdb_jsonrpc_server *ovsdb_jsonrpc_server_create(size_t n_max_threads); bool ovsdb_jsonrpc_server_add_db(struct ovsdb_jsonrpc_server *, @@ -69,6 +70,9 @@ void ovsdb_jsonrpc_server_wait(struct ovsdb_jsonrpc_server *); void ovsdb_jsonrpc_server_get_memory_usage(const struct ovsdb_jsonrpc_server *, struct simap *usage); +void ovsdb_jsonrpc_server_get_threads_info(struct ds *ds, + struct ovsdb_jsonrpc_server *); + struct ovsdb_jsonrpc_monitor; void ovsdb_jsonrpc_monitor_destroy(struct ovsdb_jsonrpc_monitor *); void ovsdb_jsonrpc_disable_monitor2(void); diff --git a/ovsdb/ovsdb-server.1.in b/ovsdb/ovsdb-server.1.in index 0a06e52..a3d89ed 100644 --- a/ovsdb/ovsdb-server.1.in +++ b/ovsdb/ovsdb-server.1.in @@ -188,6 +188,11 @@ again (with \fBovsdb\-server/add\-db\fR). Outputs a list of the currently configured databases added either through the command line or through the \fBovsdb\-server/add\-db\fR command. . +.IP "\fBovsdb\-server/list\-threads" +Outputs the maximum allowed number of threads that is specified via +the command line \fI\-\-max-num-threads\fR argument, and the current +number of threads in use. +. .so lib/vlog-unixctl.man .so lib/memory-unixctl.man .so lib/coverage-unixctl.man diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index 414106a..123741b 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -97,6 +97,8 @@ static unixctl_cb_func ovsdb_server_add_database; static unixctl_cb_func ovsdb_server_remove_database; static unixctl_cb_func ovsdb_server_list_databases; +static unixctl_cb_func ovsdb_server_list_threads; + static char *open_db(struct server_config *config, const char *filename); static void close_db(struct db *db); @@ -319,6 +321,8 @@ main(int argc, char *argv[]) ovsdb_server_compact, &all_dbs); unixctl_command_register("ovsdb-server/reconnect", "", 0, 0, ovsdb_server_reconnect, jsonrpc); + unixctl_command_register("ovsdb-server/list-threads", "", 0, 0, + ovsdb_server_list_threads, jsonrpc); unixctl_command_register("ovsdb-server/add-remote", "REMOTE", 1, 1, ovsdb_server_add_remote, &server_config); @@ -1274,6 +1278,20 @@ ovsdb_server_list_databases(struct unixctl_conn *conn, int argc OVS_UNUSED, } static void +ovsdb_server_list_threads(struct unixctl_conn *conn, int argc OVS_UNUSED, + const char *argv[] OVS_UNUSED, void *jsonrpc_) +{ + struct ovsdb_jsonrpc_server *jsonrpc = jsonrpc_; + struct ds s; + + ds_init(&s); + + ovsdb_jsonrpc_server_get_threads_info(&s, jsonrpc); + unixctl_command_reply(conn, ds_cstr(&s)); + ds_destroy(&s); +} + +static void parse_options(int *argcp, char **argvp[], struct sset *remotes, char **unixctl_pathp, char **run_command, size_t *n_max_threads) -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev