Looks good. Thanks. --Justin
On Jun 14, 2012, at 5:12 PM, Ben Pfaff wrote: > This is occasionally useful for debugging. > > Signed-off-by: Ben Pfaff <[email protected]> > --- > v1->v2: Use new dedicated options for configuring wrapper scripts, > instead of overloading the "priority" options. Suggested by Justin. > > utilities/ovs-ctl.8 | 25 +++++++++++++++++++++++++ > utilities/ovs-ctl.in | 16 +++++++++++++--- > utilities/ovs-lib.in | 27 ++++++++++++++++++++++++++- > 3 files changed, 64 insertions(+), 4 deletions(-) > > diff --git a/utilities/ovs-ctl.8 b/utilities/ovs-ctl.8 > index 6a1315f..1a9ee2a 100644 > --- a/utilities/ovs-ctl.8 > +++ b/utilities/ovs-ctl.8 > @@ -183,6 +183,31 @@ suppresses that behavior. > Sets the \fBnice\fR(1) level used for each daemon. All of them > default to \fB\-10\fR. > . > +.IP "\fB\-\-ovsdb\-server\-wrapper=\fIwrapper\fR" > +.IQ "\fB\-\-ovs\-vswitchd\-wrapper=\fIwrapper\fR" > +.IQ "\fB\-\-ovs\-brcompatd\-wrapper=\fIwrapper\fR" > +. > +Configures the specified daemon to run under \fIwrapper\fR, which is > +one of the following: > +. > +.RS > +.IP "\fBvalgrind\fR" > +Run the daemon under \fBvalgrind\fR(1), if it is installed, logging to > +\fIdaemon\fB.valgrind.log.\fIpid\fR in the log directory. > +. > +.IP "\fBstrace\fR" > +Run the daemon under \fBstrace\fR(1), if it is installed, logging to > +\fIdaemon\fB.strace.log.\fIpid\fR in the log directory. > +.RE > +. > +.IP > +By default, no wrapper is used. > +. > +.IP > +Wrappers greatly slow daemon operations so they should not be used in > +production. They also produce voluminous logs that can quickly fill > +small disk partitions. > +. > .PP > The following options control file locations. They should only be > used if the default locations cannot be used. See \fBFILES\fR, below, > diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in > index dfd6fa8..552cef3 100755 > --- a/utilities/ovs-ctl.in > +++ b/utilities/ovs-ctl.in > @@ -188,7 +188,8 @@ start () { > set "$@" --private-key=db:SSL,private_key > set "$@" --certificate=db:SSL,certificate > set "$@" --bootstrap-ca-cert=db:SSL,ca_cert > - start_daemon "$OVSDB_SERVER_PRIORITY" "$@" || return 1 > + start_daemon "$OVSDB_SERVER_PRIORITY" "$OVSDB_SERVER_WRAPPER" "$@" \ > + || return 1 > > # Initialize database settings. > ovs_vsctl -- init -- set Open_vSwitch . db-version="$schemaver" \ > @@ -215,7 +216,7 @@ start () { > if test X"$MLOCKALL" != Xno; then > set "$@" --mlockall > fi > - start_daemon "$OVS_VSWITCHD_PRIORITY" "$@" > + start_daemon "$OVS_VSWITCHD_PRIORITY" "$OVS_VSWITCHD_WRAPPER" "$@" > fi > > if daemon_is_running ovs-brcompatd; then > @@ -223,7 +224,7 @@ start () { > elif test X"$BRCOMPAT" = Xyes; then > set ovs-brcompatd > set "$@" -vconsole:emer -vsyslog:err -vfile:info > - start_daemon "$OVS_BRCOMPATD_PRIORITY" "$@" > + start_daemon "$OVS_BRCOMPATD_PRIORITY" "$OVS_BRCOMPATD_WRAPPER" "$@" > fi > } > > @@ -377,6 +378,9 @@ set_defaults () { > OVSDB_SERVER_PRIORITY=-10 > OVS_VSWITCHD_PRIORITY=-10 > OVS_BRCOMPATD_PRIORITY=-10 > + OVSDB_SERVER_WRAPPER= > + OVS_VSWITCHD_WRAPPER= > + OVS_BRCOMPATD_WRAPPER= > > DB_FILE=$etcdir/conf.db > DB_SOCK=$rundir/db.sock > @@ -442,6 +446,12 @@ Less important options for "start" and > "force-reload-kmod": > --ovs-vswitchd-priority=NICE set ovs-vswitchd's niceness (default: > $OVS_VSWITCHD_PRIORITY) > --ovs-brcompatd-priority=NICE set ovs-brcompatd's niceness (default: > $OVS_BRCOMPATD_PRIORITY) > > +Debugging options for "start" and "force-reload-kmod": > + --ovsdb-server-wrapper=WRAPPER > + --ovs-vswitchd-wrapper=WRAPPER > + --ovs-vswitchd-wrapper=WRAPPER > + run specified daemon under WRAPPER (either 'valgrind' or 'strace') > + > Options for "start", "force-reload-kmod", "load-kmod", "status", and > "version": > --brcompat enable Linux bridge compatibility module and daemon > > diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in > index b8dc060..ed2fed6 100644 > --- a/utilities/ovs-lib.in > +++ b/utilities/ovs-lib.in > @@ -88,7 +88,8 @@ pid_exists () { > > start_daemon () { > priority=$1 > - shift > + wrapper=$2 > + shift; shift > daemon=$1 > > # drop core files in a sensible place > @@ -105,6 +106,30 @@ start_daemon () { > set "$@" --pidfile="$rundir/$daemon.pid" > set "$@" --detach --monitor > > + # wrapper > + case $wrapper in > + valgrind) > + if (valgrind --version) > /dev/null 2>&1; then > + set valgrind -q --leak-check=full \ > + --log-file="$logdir/$daemon.valgrind.log.%p" "$@" > + else > + log_failure_msg "valgrind not installed, running $daemon > without it" > + fi > + ;; > + strace) > + if (strace -V) > /dev/null 2>&1; then > + set strace -ff -o "$logdir/$daemon.strace.log" "$@" > + else > + log_failure_msg "strace not installed, running $daemon > without it" > + fi > + ;; > + '') > + ;; > + *) > + log_failure_msg "unknown wrapper $wrapper, running $daemon > without it" > + ;; > + esac > + > # priority > if test X"$priority" != X; then > set nice -n "$priority" "$@" > -- > 1.7.2.5 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
